We have started to look on the Windows Learning APIs to implement some functions for our plugins. Since 2017 we have CoreML classes for macOS, see MLModelMBS & co. As we are now using newer Visual Studio 2019, we can finally also check the Windows Learning functions:
We started by porting the desktop SqueezeNetObjectDetection example from the Windows-Machine-Learning repository. You may want to download the SqueezeNet.onnx file from models folder and the kitten_224.png file from the media folder.
In Xojo you can use WinLearningModelMBS class to load a model with the Load function. Then query details and the input/output features to learn what the model does. Once you want to use the model, create WinLearningModelSessionMBS and WinLearningModelBindingMBS objects. The last one is used to assign values to the input and output elements. Then you Evaluate the model and get a WinLearningModelEvaluationResultMBS object and there you query the result values.
A difference between the macOS/iOS implementation by Apple and the one by Microsoft is the missing of labels for the latter. For Windows you get a Labels.txt file with the list of what index in the result points to what label they mean. Our example code will show how to handle this.
Those functions and new classes are coming for next pre-release versions in October 2020. We may get a good start set and may add more as needed later. Especially as we learn what other models may need as input and output features.