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]。