Windows机器学习是一种由ONNX运行时和DirectML供电的高性能机器学习推理API。
Windows ML API是Windows Runtime组件,适用于高性能,低延迟应用程序,例如框架,游戏和其他实时应用程序以及使用高级语言构建的应用程序。
此存储库包含Windows机器学习样本和工具,这些工具演示了如何在Windows应用程序中构建机器学习动力的方案。
有关Windows ML的更多信息,包括分步教程和操作指南,请访问Windows ML文档。
| 样品/工具 | 地位 |
|---|---|
| 所有样本 | |
| Winmlrunner | |
| Winml仪表板 |
先决条件
Windows ML提供机器学习通过收件箱Windows SDK以及可重新分布的Nuget软件包推断。下表突出显示了Windows ML的内部和Nuget软件包的可用性,分发,语言支持,维修和转发兼容性方面。
| 内置 | nuget | |
|---|---|---|
| 可用性 | Windows 10-构建17763(RS5)或更新 有关版本支持的更多详细信息,请查看我们的文档。 | Windows 8.1或更新 注意:某些API(即:Videoframe)在较旧的OS上不可用。 |
| Windows SDK | Windows SDK-构建17763(RS5)或更新 | Windows SDK-构建17763(RS5)或更新 |
| 分配 | 内置在窗户中 | 包装并分发作为您申请的一部分 |
| 服务 | 微软驱动(客户自动受益) | 开发人员驱动 |
| 向前 | 兼容性会自动使用新功能向前滚动 | 开发人员需要手动更新软件包 |
在这里了解更多。
在本节中,您将在不同的Windows ML API产品中找到各种场景的各种模型样本。
图像分类
计算机视觉的子域,其中算法查看图像,并将其分配为已训练的预定义标签或类别的集合。
| Windows应用程序类型 分配 | UWP 内置 | UWP nuget | 桌面 内置 | 桌面 nuget |
|---|---|---|---|---|
| Alexnet | ✔️C#.NET5-样品画廊 | |||
| 咖啡奈特 | ✔️C#.NET5-样品画廊 | |||
| Densenet | ✔️C#.NET5-样品画廊 | |||
| 有效网络 | ✔️C#.NET5-样品画廊 | |||
| Googlenet | ✔️C#.NET5-样品画廊 | |||
| Inceptionv1 | ✔️C#.NET5-样品画廊 | |||
| Inceptionv2 | ✔️C#.NET5-样品画廊 | |||
| mnist | ✔️C++/CX ✔️C# | |||
| Mobilenetv2 | ✔️C#.NET5-样品画廊 | |||
| rcnn | ✔️C#.NET5-样品画廊 | |||
| RESNET50 | ✔️C#.NET5-样品画廊 | |||
| Shufflenetv1 | ✔️C#.NET5-样品画廊 | |||
| ShuffLenetV2 | ✔️C#.NET5-样品画廊 | |||
| 挤压 | ✔️C# ✔️Javascript | ✔️C++/Winrt ✔️C#.net5 ✔️C#.NET核心2 | ✔️C++/Winrt ✔️C#.NET5-样品画廊 ✔️Rust | |
| VGG19 | ✔️C#.NET5-样品画廊 | |||
| VGG190亿 | ✔️C#.NET5-样品画廊 | |||
| ZFNET512 | ✔️C#.NET5-样品画廊 |
样式转移
一种计算机视觉技术,使我们能够以另一种样式重新组建图像的内容。
| Windows应用程序类型 分配 | UWP 内置 | UWP nuget | 桌面 内置 | 桌面 nuget |
|---|---|---|---|---|
| fnscandy | ✔️C#-FNS样式转移 ✔️C# - 实时样式转移 |
这些高级样本显示了如何在Windows ML中使用各种绑定和评估功能:
自定义张贴:Windows控制台应用程序(C ++/WinRT),该应用程序显示了如何进行自定义张力。
自定义操作员(CPU) :定义多个自定义CPU操作员的桌面应用程序。其中之一是调试操作员,我们邀请您集成到自己的工作流程中。
适配器选择:一个桌面应用程序,演示了如何选择用于运行模型的特定设备适配器。
平面标识符:UWP应用程序和带有桌面桥式包装的WPF应用程序,共享使用Azure自定义视觉服务训练的相同型号。有关此样本的分步说明,请参阅博客文章将Winml应用程序升级到最新位。
自定义视觉和Windows ML :教程展示了如何使用Azure自定义视觉服务训练神经网络模型以对食物的图像进行分类,将模型导出到ONNX格式,并将模型部署到Windows机器学习应用程序中,在Windows设备上在本地运行。
ML.NET和Windows ML :本教程向您展示了如何使用ML.NET模型构建器训练神经网络模型以对食物进行分类,将模型导出到ONNX格式,并在Windows Machine学习应用程序中部署模型Windows设备。
Pytorch数据分析:教程显示了如何使用Pytorch库通过神经网络求解分类任务,将模型导出到ONNX格式,并使用Windows Machine Learning应用程序部署模型,该应用程序可以在任何Windows设备上运行。
PYTORCH图像分类:教程显示了如何使用Pytorch训练图像分类神经网络模型,将模型导出到ONNX格式,并将其部署在Windows机器学习应用程序中,在Windows设备上在本地运行。
YOLOV4对象检测:本教程显示了如何构建使用Yolov4模型检测视频流中对象的UWP C#应用程序。
模型转换
Windows ML提供由ONX运行时引擎提供动力的推断功能。因此,所有在Windows ML中运行的模型都必须转换为ONNX模型格式。必须将在Tensorflow或Pytorch等源框架中构建和训练的模型必须转换为ONNX。查看如何转换为ONNX模型的文档:
模型优化
模型可能需要进一步的优化后进行后转换,以支持批处理和量化等高级功能。查看以下以优化模型的工具:
Winml仪表板(预览) :一种基于GUI的工具,用于查看Windows ML推理引擎的机器学习模型。该工具可用于启用具有固定尺寸的型号的自由尺寸。下载预览版
图形优化:图形优化本质上是图形级别的变换,从小图简化和节点消除到更复杂的节点融合和布局优化。
图形量化:ONNX运行时的量化是指ONNX模型的8位线性量化。
模型验证
Winmlrunner :可以运行.ONNX或.PB模型的命令行工具,其中输入和输出变量是张量或图像。这是一个非常方便的工具,可以快速验证ONNX模型。它将尝试加载,绑定和评估模型并打印出有用的消息。它还捕获了性能测量。
下载x64 exe
模型集成
Winml代码生成器(MLGEN) :Visual Studio扩展程序,可通过在UWP应用程序上生成模板代码来帮助您在UWP项目中生成模板代码,从而帮助您开始使用Winml API。从模板代码中,您可以加载模型,创建会话,绑定输入并使用包装代码进行评估。有关更多信息,请参见文档。
下载vs 2017,vs 2019
Winml样品画廊:探索各种ML集成场景和模型。
查看型号样本和高级方案示例,以了解如何在应用程序中使用Windows ML。
我们一直在寻找您的帮助来修复错误并改进样本。创建拉动请求,我们很乐意看看。
该项目采用了Microsoft开源的行为代码。有关更多信息,请参见《行为守则常见问题守则》或与其他问题或评论联系[email protected]。