Tools and samples

The Windows-Machine-Learning repository on GitHub contains sample applications that demonstrate how to use Windows Machine Learning, as well as tools that help verify models and troubleshoot issues during development.

Tools

The following tools are available on GitHub.

Name Description
WinML Code Generator (mlgen) A Visual Studio extension to help you get started using WinML APIs on UWP apps by generating template code when you add a trained ONNX file into the UWP project. Available for Visual Studio 2017 and 2019. See the documentation for more information.
WinML Dashboard (Preview) A GUI-based tool for viewing, editing, converting, and validating machine learning models for Windows ML's inference engine.
WinMLRunner A command-line tool that can run .onnx or .pb models where the input and output variables are tensors or images. Useful because it lets you run the WinML APIs against a model and see if it hits any issues before trying to integrate it into an application.
WinMLTools A Python package that provides model conversion from different ML toolkits into ONNX, as well as a quantization tool to reduce the memory footprint of a model.

Samples

The following sample applications are available on GitHub.

Name Description
AdapterSelection (Win32 C++) A desktop application that demonstrates how to choose a specific device adapter for running your model.
Custom Operator Sample (Win32 C++) A desktop application that defines multiple custom CPU operators. One of these is a debug operator that you can integrate into your own workflow.
Custom Tensorization (Win32 C++) Shows how to tensorize an input image by using the WinML APIs on both the CPU and GPU.
Custom Vision (UWP C#) Shows how to train an ONNX model in the cloud using Custom Vision, and integrate it into an application with WinML.
Emoji8 (UWP C#) Shows how you can use WinML to power a fun emotion-detecting application.
FNS Style Transfer (UWP C#) Uses the FNS-Candy style transfer model to re-style images or video streams.
MNIST (UWP C#/C++) Corresponds to Tutorial: Create a Windows Machine Learning UWP application (C#). Start from a basis and work through the tutorial, or run the completed project.
PlaneIdentifier (UWP C#, WPF C#) Uses a pre-trained machine learning model, generated using the Custom Vision service on Azure, to detect if the given image contains a specific object: a plane.
SqueezeNet Object Detection (Win32 C++, UWP C#/JavaScript) Uses SqueezeNet, a pre-trained machine learning model, to detect the predominant object in an image selected by the user from a file.
SqueezeNet Object Detection (Azure IoT Edge on Windows, C#) This is a sample module showing how to run Windows ML inferencing in an Azure IoT Edge module running on Windows. Images are supplied by a connected camera, inferenced against the SqueezeNet model, and sent to IoT Hub.
winml_tracker (ROS C++) A ROS (Robot Operating System) node which uses WinML to track people (or other objects) in camera frames.

Note

Use the following resources for help with Windows ML:

  • To ask or answer technical questions about Windows ML, please use the windows-machine-learning tag on Stack Overflow.
  • To report a bug, please file an issue on our GitHub.
  • To request a feature, please head over to Windows Developer Feedback.