Home

Awesome

Windows Machine Learning

Windows Machine Learning is a high-performance machine learning inference API that is powered by ONNX Runtime and DirectML.

Alt text

The Windows ML API is a Windows Runtime Component and is suitable for high-performance, low-latency applications such as frameworks, games, and other real-time applications as well as applications built with high-level languages.

This repo contains Windows Machine Learning samples and tools that demonstrate how to build machine learning powered scenarios into Windows applications.

For additional information on Windows ML, including step-by-step tutorials and how-to guides, please visit the Windows ML documentation.

Sample/ToolStatus
All SamplesBuild Status
WinmlRunnerBuild Status
WinML DashboardBuild Status

Getting Started with Windows ML

Prerequisites

Windows ML offers machine learning inferencing via the inbox Windows SDK as well as a redistributable NuGet package. The table below highlights the availability, distribution, language support, servicing, and forward compatibility aspects of the In-Box and NuGet package for Windows ML.

In-BoxNuGet
AvailabilityWindows 10 - Build 17763 (RS5) or Newer<br/>For more detailed information about version support, checkout our docs.Windows 8.1 or Newer<br/>NOTE: Some APIs (ie: VideoFrame) are not available on older OSes.
Windows SDKWindows SDK - Build 17763 (RS5) or NewerWindows SDK - Build 17763 (RS5) or Newer
DistributionBuilt into WindowsPackage and distribute as part of your application
ServicingMicrosoft-driven (customers benefit automatically)Developer-driven
Forwardcompatibility Automatically rolls forward with new featuresDeveloper needs to update package manually

Learn more here.

Model Samples

In this section you will find various model samples for a variety of scenarios across the different Windows ML API offerings.

Image Classification

A subdomain of computer vision in which an algorithm looks at an image and assigns it a tag from a collection of predefined tags or categories that it has been trained on.

Windows App Type <br/>DistributionUWP<br/>In-BoxUWP<br/>NuGetDesktop<br/>In-BoxDesktop<br/>NuGet
AlexNet✔️C# .NET5 - Samples Gallery<br/>
CaffeNet✔️C# .NET5 - Samples Gallery<br/>
DenseNet✔️C# .NET5 - Samples Gallery<br/>
EfficientNet✔️C# .NET5 - Samples Gallery<br/>
GoogleNet✔️C# .NET5 - Samples Gallery<br/>
InceptionV1✔️C# .NET5 - Samples Gallery<br/>
InceptionV2✔️C# .NET5 - Samples Gallery<br/>
MNIST✔️C++/CX<br/>✔️C#<br/>
MobileNetV2✔️C# .NET5 - Samples Gallery<br/>
RCNN✔️C# .NET5 - Samples Gallery<br/>
ResNet50✔️C# .NET5 - Samples Gallery<br/>
ShuffleNetV1✔️C# .NET5 - Samples Gallery<br/>
ShuffleNetV2✔️C# .NET5 - Samples Gallery<br/>
SqueezeNet✔️C#<br/>✔️JavaScript<br/>✔️C++/WinRT<br/> ✔️C# .NET5<br/>✔️C# .NET Core 2<br/>✔️C++/WinRT<br/>✔️C# .NET5 - Samples Gallery<br/>✔️Rust<br/>
VGG19✔️C# .NET5 - Samples Gallery<br/>
VGG19bn✔️C# .NET5 - Samples Gallery<br/>
ZFNet512✔️C# .NET5 - Samples Gallery<br/>

Style Transfer

A computer vision technique that allows us to recompose the content of an image in the style of another.

Windows App Type <br/>DistributionUWP<br/>In-BoxUWP<br/>NuGetDesktop<br/>In-BoxDesktop<br/>NuGet
FNSCandy✔️C# - FNS Style Transfer<br/>✔️C# - Real-Time Style Transfer<br/>
<!-- **Object Detection** | | Store App<br/>Inbox API | Store App<br/>NuGet API | Desktop App<br/>Inbox API | Desktop App<br/>NuGet API | |------------|------------------------------------|--------------------------------------|------------------------------------|--------------------------------------| | [YoloV4](https://github.com/onnx/models/raw/master/vision/object_detection_segmentation/yolov4/model/yolov4.onnx) | | ||[✔️C# .NET5 - Samples Gallery](Samples/WinMLSamplesGallery)<br/>| -->

Advanced Scenario Samples

These advanced samples show how to use various binding and evaluation features in Windows ML:

Developer Tools

Feedback

External Links

Contributing

We're always looking for your help to fix bugs and improve the samples. Create a pull request, and we'll be happy to take a look.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.