ML.NET でモデルをトレーニングする
このチュートリアルの前の段階では、独自の Windows Machine Learning モデルとアプリを作成するための前提条件について説明し、使用する画像セットをダウンロードしました。 この段階では、ML.NET Model Builder を使用して画像セットを画像分類モデルに変換する方法について説明します。
プロジェクトを作成する
- Visual Studio を開き、[新しいプロジェクトの作成] を選択します。
- 検索バーに「.NET」と入力し、言語として [C#] を、プラットフォームとしてコンソールを選択した後、[C# コンソール アプリ (.NET Core)] プロジェクト テンプレートを選択します。
- 構成ウィンドウで:
- プロジェクトに名前を付けます。 ここでは、MLNETTraining と名付けています。
- プロジェクトの場所を選択します。
Place solution and project in the same directory
がオフになっていることを確認します。- [
create
] を選択してプロジェクトを作成します。
Model Builder を設定する
次に、Model Builder をプロジェクトに追加します。
- ソリューション エクスプローラーで [MLNETTraining] プロジェクトを右クリックし、[
Add > Machine Learning
] を選択します。
これにより、ML.NET Model Builder が Visual Studio の新しいドッキング ツール ウィンドウに開きます。 Model Builder によって、機械学習モデルを構築するプロセスが案内されます。
最初の手順は、関連するシナリオの選択です。 すべてのシナリオで ONNX 形式がサポートされているわけではありません。
トレーニング環境が Azure クラウドの場合、生成されるモデルは ONNX 形式であり、変換なしで Windows ML アプリで簡単に使用できます。 ただし、お使いのコンピューターで機械学習モデルをローカルにトレーニングする場合、生成されるモデルは ML.NET 形式になります。
- オブジェクト検出を除くあらゆるシナリオでローカル CPU トレーニングがサポートされています。
- ローカル GPU トレーニングは、イメージ分類でサポートされています。
- Azure トレーニングは、イメージ分類とオブジェクト検出でサポートされています。
このチュートリアルでは、Azure トレーニング環境で画像分類モデルをトレーニングします。 出力モデルは ONNX 形式になります。 トレーニングを完了するには、Azure アカウントが必要です。
画像分類シナリオを選択します。
[ワークスペースの設定] を選択して、Azure トレーニング環境を設定します。
右上隅で、Azure サブスクリプションに関連付けられているアカウントにサインインします。 次のメニューで:
- 関連するサブスクリプションを選択します。
- 新しい Machine Learning ワークスペースを選択して作成します。
- 新しいコンピューティング リソースを選択するか作成します。
- ワークスペースに名前を付けます (ImageClassificationMLNET)。
重要
Model Builder から Machine Learning ワークスペースを作成できない場合は、次の手順に従って、Azure Portal からワークスペースを手動で作成します。 それ以外の場合は、手順 4 に進むことができます。
Azure アカウントで、[リソースの作成] を選択します。
検索バーで、「Machine Learning」を探します。
[作成] をクリックして、新しい Machine Learning ワークスペースを作成します。
新しいワークスペースを作成するには、サブスクリプション名を指定し、新しいリソース グループを選択するか作成し、ワークスペースに名前を付け、リージョン、ストレージ アカウントなどのすべての必須パラメーターを定義する必要があります。
ワークスペースを確立し、ML.NET で新しいトレーニング環境を作成したら、次の手順に進むことができます。
Machine Learning Services のデプロイが完了するまで待ちます。
次の手順は、Model Builder へのデータの追加です。
- 画像データセットの場所に移動し、関連する食品カテゴリのトレーニング フォルダーを選択します。 このチュートリアルでは、デザート、スープ、および果物を認識するようにモデルをトレーニングします。そのため、データセット フォルダーにはこれらのカテゴリのみが必要です。
これで、トレーニング部分に移動する準備ができました。
モデルをトレーニングする
Model Builder により、さまざまなアルゴリズムと設定を使用して多数のモデルが評価され、最適なパフォーマンスのモデルが提供されます。
- [次へ] を選択し、[トレーニングの開始] を選択してトレーニング プロセスを開始します。 データを Azure にアップロードし、ワークスペースを準備した後、トレーニング プロセスを開始することで、ML.Net モデル ビルダーが開始されます。
トレーニングが完了すると、トレーニング結果の概要が表示されます。
[最良の精度] - Model Builder によって検出された最良モデルの精度を示します。 精度が高くなるほど、テスト データでモデルが正確に予測されたことになります。 ここでは、モデルは、95.42% の信頼度で正しい結果を予測できます。
結果を評価する
次の手順に進んで、トレーニング結果を評価します。
データセットの評価フォルダーから画像を選択し、予測を調べます。
モデルをソリューションに追加する
ML.NET Model Builder では、ソリューションに対するモデルのトレーニングと使用のために、機械学習モデルとプロジェクトの両方を自動的に追加できます。
- トレーニング プロセスの使用部分に移動し、[ソリューションに追加] を選択します。 これにより、生成されたモデルがソリューション フォルダーに追加されます。
ソリューション エクスプローラーには、Model Builder によって生成された、モデル (ONNX 形式の bestModel.onnx) を含むコード ファイルが表示されます。
Azure クラウド環境でトレーニングされたモデルであるため、生成されるモデルは ONNX 形式です。
モデルを探索する
bestModel.onnx を右クリックし、[含んでいるフォルダーを開く] を選択します。
Netron プログラムを使用して、モデル ファイルを開きます。
[input1] ノードをクリックして、モデルのプロパティを開きます。
ご覧のように、このモデルでは、入力として 32 ビットの浮動小数点数テンソル (多次元配列) オブジェクトが必要であり、出力として Tensor float が返されます。 このモデルの構築方法では、予測ラベルの文字列値は返されませんが、それぞれが食品の種類の関連ラベルを表す 3 つの数値の配列が返されます。 Windows ML アプリで正しい予測を表示するには、これらの値を抽出する必要があります。
ラベル 1 | ラベル 2 | ラベル 3 |
---|---|---|
0 | 1 | 2 |
デザート | soup | Vegetable-Fruit |
次のステップ
機械学習モデルのトレーニングが完了したので、Windows Machine Learning を使用して UWP アプリにデプロイする準備ができました