Windows Machine Learningは、ONNXランタイムとDirectMLを搭載した高性能機械学習推論APIです。
Windows ML APIは、Windowsランタイムコンポーネントであり、フレームワーク、ゲーム、その他のリアルタイムアプリケーションなどの高性能で低遅延のアプリケーションや、高レベルの言語で構築されたアプリケーションに適しています。
このリポジトリには、機械学習駆動シナリオをWindowsアプリケーションに構築する方法を示すWindows機械学習サンプルとツールが含まれています。
ステップバイステップのチュートリアルやハウツーガイドなど、Windows MLの詳細については、Windows MLのドキュメントをご覧ください。
| サンプル/ツール | 状態 |
|---|---|
| すべてのサンプル | |
| winmlrunner | |
| WINMLダッシュボード |
前提条件
Windows MLは、Inbox Windows SDKを介した機械学習推論と再配分可能なNugetパッケージを提供します。以下の表は、Windows ML用のインボックスおよびNugetパッケージの可用性、配布、言語サポート、サービス、およびフォワード互換性の側面を強調しています。
| インボックス | ヌゲット | |
|---|---|---|
| 可用性 | Windows 10 -Build 17763(RS5)以下 バージョンサポートの詳細については、ドキュメントをチェックアウトしてください。 | Windows 8.1以降 注:一部のAPI(IE:VideoFrame)は、古いOSで使用できません。 |
| Windows SDK | Windows SDK -17763(RS5)または新しいビルド | Windows SDK -17763(RS5)または新しいビルド |
| 分布 | Windowsに組み込まれています | アプリケーションの一部としてパッケージと配布 |
| サービス | マイクロソフト駆動型(顧客は自動的に利益を得る) | 開発者主導 |
| フォワード | 互換性は、新機能と自動的に前進します | 開発者はパッケージを手動で更新する必要があります |
詳細はこちらをご覧ください。
このセクションでは、さまざまなWindows ML API製品全体のさまざまなシナリオのさまざまなモデルサンプルがあります。
画像分類
アルゴリズムが画像を調べ、トレーニングされている事前定義されたタグまたはカテゴリのコレクションからタグを割り当てるコンピュータービジョンのサブドメイン。
| Windowsアプリタイプ 分布 | UWP インボックス | UWP ヌゲット | デスクトップ インボックス | デスクトップ ヌゲット |
|---|---|---|---|---|
| alexnet | ✔✔️C#.NET5-サンプルギャラリー | |||
| カフェネット | ✔✔️C#.NET5-サンプルギャラリー | |||
| デンセン | ✔✔️C#.NET5-サンプルギャラリー | |||
| EfficientNet | ✔✔️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 Core 2 | ✔✔️C++/winrt ✔✔️C#.NET5-サンプルギャラリー ✔§Rust | |
| VGG19 | ✔✔️C#.NET5-サンプルギャラリー | |||
| vgg19bn | ✔✔️C#.NET5-サンプルギャラリー | |||
| ZFNET512 | ✔✔️C#.NET5-サンプルギャラリー |
スタイル転送
画像の内容を別のスタイルで再構成できるようにするコンピュータービジョン技術。
| Windowsアプリタイプ 分布 | UWP インボックス | UWP ヌゲット | デスクトップ インボックス | デスクトップ ヌゲット |
|---|---|---|---|---|
| fnscandy | ✔✔️C#-FNSスタイルの転送 ✔✔️C# - リアルタイムスタイルの転送 |
これらの高度なサンプルは、Windows MLでさまざまなバインディングおよび評価機能を使用する方法を示しています。
カスタムテンソーゼーション:カスタムテンソーゼーションを行う方法を示すWindowsコンソールアプリケーション(C ++/WINRT)。
カスタムオペレーター(CPU) :複数のカスタムCPUオペレーターを定義するデスクトップアプリ。これらの1つは、独自のワークフローに統合することをお勧めします。
アダプターの選択:モデルを実行するための特定のデバイスアダプターを選択する方法を示すデスクトップアプリ。
平面識別子:UWPアプリとデスクトップブリッジでパッケージ化されたWPFアプリは、Azure Custom Vision Serviceを使用してトレーニングされた同じモデルを共有します。このサンプルのステップバイステップの手順については、WINMLアプリケーションを最新のビットにアップグレードするブログの投稿をご覧ください。
カスタムビジョンとWindows ML :チュートリアルでは、Azure Custom Vision Serviceを使用して食品の画像を分類し、モデルをONNX形式にエクスポートし、Windowsデバイスでローカルに実行されているWindows Machine Learningアプリケーションにモデルを展開する方法を示しています。
ML.NETおよびWindows ML :このチュートリアルは、ML.NETモデルビルダーを使用して食品の画像を分類し、モデルをONNX形式にエクスポートし、ローカルで実行されているWindows Machine Applicationでモデルを展開する方法を示しています。 Windowsデバイス。
Pytorchデータ分析:チュートリアルでは、Pytorchライブラリを使用してニューラルネットワークを使用して分類タスクを解決し、モデルをONNX形式にエクスポートし、Windowsデバイスで実行できるWindows Machine Learningアプリケーションでモデルを展開する方法を示しています。
Pytorch画像分類:チュートリアルでは、Pytorchを使用して画像分類ニューラルネットワークモデルをトレーニングし、モデルをONNX形式にエクスポートし、Windowsデバイスでローカルに実行しているWindowsマシン学習アプリケーションに展開する方法を示しています。
Yolov4オブジェクトの検出:このチュートリアルは、Yolov4モデルを使用してビデオストリームのオブジェクトを検出するUWP C#アプリを構築する方法を示しています。
モデル変換
Windows MLは、ONNXランタイムエンジンを搭載した推論機能を提供します。そのため、Windows MLで実行されるすべてのモデルは、ONNXモデル形式に変換する必要があります。 TensorflowやPytorchなどのソースフレームワークで構築およびトレーニングされたモデルは、ONNXに変換する必要があります。 ONNXモデルに変換する方法については、ドキュメントをご覧ください。
モデルの最適化
モデルは、バッチングや量子化などの高度な機能をサポートするために、さらに最適化されたポスト変換を適用する必要がある場合があります。モデルを最適化するための次のツールをご覧ください。
WINMLダッシュボード(プレビュー) :Windows ML推論エンジンの機械学習モデルを表示、編集、変換、および検証するためのGUIベースのツール。このツールを使用して、固定寸法で構築されたモデルの自由な寸法を有効にすることができます。プレビューバージョンをダウンロードします
グラフの最適化:グラフの最適化は、基本的にグラフレベルの変換であり、小さなグラフの単純化やノードの排除から、より複雑なノード融合やレイアウトの最適化に至るまでです。
グラフ量子化:ONNXランタイムの量子化とは、ONNXモデルの8ビット線形量子化を指します。
モデル検証
winmlrunner :入力変数と出力変数がテンソルまたは画像である.onnxまたは.pbモデルを実行できるコマンドラインツール。これは、ONNXモデルをすばやく検証するための非常に便利なツールです。モデルをロード、バインド、評価し、役立つメッセージを印刷しようとします。また、パフォーマンス測定もキャプチャします。
x64 exeをダウンロードします
モデル統合
WINMLコードジェネレーター(MLGEN) :訓練されたONNXファイルをUWPプロジェクトに追加したときにテンプレートコードを生成して、UWPアプリでWINML APIの使用を開始するのに役立つビジュアルスタジオ拡張機能。テンプレートコードから、モデルをロードし、セッションを作成し、入力をバインドし、ラッパーコードで評価できます。詳細については、ドキュメントを参照してください。
VS 2017、VS 2019のダウンロード
WINMLサンプルギャラリー:さまざまなML統合シナリオとモデルを探索します。
モデルサンプルと高度なシナリオサンプルをチェックして、アプリケーションでWindows MLを使用する方法を学びます。
バグを修正し、サンプルを改善するためのご協力を求めています。プルリクエストを作成すると、喜んで見てみましょう。
このプロジェクトは、Microsoftのオープンソース行動規範を採用しています。詳細については、FAQのコードを参照するか、追加の質問やコメントについては[email protected]にお問い合わせください。