Windows ML モデルを使用してアプリに統合する
このガイドでは、Windows ML API を使用してモデルを Windows アプリに統合する方法について説明します。 別の方法として、Windows ML の自動コード ジェネレーターを使用する場合は、mlgen を確認してください。
重要な API: Windows.AI.MachineLearning
次に挙げる Windows ML の基本的な構成要素について説明します。
- モデル
- セッション
- デバイス
- バインド
これらを使用して、Windows ML でモデルの読み込み、バインド、評価を行います。
また、GitHub のサンプル アプリを参照して、エンド ツー エンドの Windows ML コード例を確認することもお勧めします。
次の動画では、これらの API の動作を短いデモで紹介します。
C++ での WinML API の使用
WinML API は C++/Cx と C++/WinRT の両方で使用できますが、C++/WinRT バージョンを使用することをお勧めします。C++ のコーディングがより自然にでき、開発作業のほとんどを、開発を先に進めるために注力できるためです。 C++/WinRT API を使用する個々の状況に応じて、以下の手順に従ってください。
- Windows 1803 以前を対象とする場合は、「チュートリアル:既存の WinML アプリを NuGet パッケージに移植する」を参照してください。
- 新しい C++ アプリケーションを作成する場合は、「チュートリアル: Windows Machine Learning のデスクトップ アプリケーションの作成 (C++)」を参照し、「モデルを読み込む」までのステップを実行します。
- (C++/WinRT 用にまだ設定されていない) 既存の C++ アプリケーションがある場合は、次の手順に従って、C++/WinRT 用にアプリケーションを設定します。
- 最新バージョンの Visual Studio 2019 (任意のエディション) がインストールされていることを確認します。
- Windows 10 向け SDK バージョン 1803 以降が用意されていることを確認します。
- Visual Studio Marketplace から C++/WinRT Visual Studio 拡張機能 (VSIX) をダウンロードしてインストールします。
- プロジェクトの .vcxproj ファイルに
<CppWinRTEnabled>true</CppWinRTEnabled>
プロパティを追加します。<Project ...> <PropertyGroup Label="Globals"> <CppWinRTEnabled>true</CppWinRTEnabled> ...
- C++/WinRT には C++17 標準の機能が必要なため、プロジェクト プロパティの [C/C++] > [言語] > [C++ 言語標準] > [ISO C++17 標準 (/std:c++17)] を設定します。
- [準拠モード: はい (/permissive-)] をプロジェクト プロパティで設定します。
- 注意すべきもう 1 つのプロジェクト プロパティは、[C/C++] > [全般] > [警告をエラーとして扱う] です。 これを好みに合わせて [はい (/WX)] または [いいえ (/WX-)] に設定します。 場合によっては、cppwinrt.exe ツールによって生成されたソース ファイルは、それらに実装を追加するまで警告を生成します。
- また、VSIX は、C++/WinRT の投影された型の Visual Studio ネイティブのデバッグの視覚化 (NatVis) を提供し、C# デバッグと同様のエクスペリエンスを実現します。 Natvis はデバッグ ビルドで自動で行われます。 シンボル WINRT_NATVIS を定義することで、リリース ビルドを選択できます。
- これで、プロジェクトが C++/WinRT 用に設定されました。 詳細については、「C++/WinRT」を参照してください。
関連トピック
Note
Windows ML に関するヘルプについては、次のリソースを参照してください。
- Windows ML に関する技術的な質問をしたり、質問に回答したりするには、Stack Overflow の windows-machine-learning タグを使用してください。
- バグを報告するには、GitHub で問題を提出してください。