Model Builder を使用して Azure で画像分類モデルをトレーニングする
Model Builder を使用して Azure で画像分類モデルをトレーニングして、衛星画像から土地利用を分類する方法について説明します。
このチュートリアルでは、C# クラス ライブラリを作成して、Model Builder を使って衛星画像に基づいて土地利用を分類する方法を示します。
このチュートリアルでは、次の作業を行いました。
- データを準備して理解する
- Model Builder 構成ファイルを作成する
- シナリオを選択する
- データを読み込む
- Azure で実験を作成する
- モデルをトレーニングする
- モデルを評価する
- モデルを使用する
前提条件
- 前提条件の一覧とインストール手順は、モデル ビルダーのインストール ガイドを参照してください。
- Azure アカウント。 お持ちでない場合は、無料の Azure アカウントを作成してください。
- ASP.NET および Web の開発ワークロード。
Model Builder の画像分類の概要
このサンプルでは、Model Builder を使って Azure でトレーニングされるディープ ラーニング モデルを使用して、マップの衛星画像から土地利用を分類する C# クラス ライブラリを作成します。 このチュートリアルのソース コードは、dotnet/machinelearning-samples GitHub リポジトリにあります
C# クラス ライブラリを作成する
"LandUse" という名前の C# クラス ライブラリ プロジェクトを作成します。
データを準備して理解する
注意
このチュートリアルでは、次のデータを使用します。
- EuroSAT: 土地利用および土地被覆の分類のためのまったく新しいデータセットとディープ ラーニング ベンチマーク。 Patrick Helber、Benjamin Bischke、Andreas Dengel、Damian Borth。 『IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing』、2019 年。
- EuroSAT の紹介: 土地利用および土地被覆の分類のためのまったく新しいデータセットとディープ ラーニング ベンチマーク。 Patrick Helber、Benjamin Bischke、Andreas Dengel。 『2018 IEEE International Geoscience and Remote Sensing Symposium』、2018 年。
EuroSAT データセットには、10 個のカテゴリ (農山村部、工業地域、川など) に分けられた衛星画像のコレクションが含まれています。 元のデータセットには 27,000 枚の画像が含まれています。 便宜上、このチュートリアルでは、これらの画像のうち、2,000 枚のみを使用します。
- EuroSAT データセットのサブセットをダウンロードし、コンピューター上の任意の場所に保存します。
- 解凍します。
Model Builder 構成ファイルを作成する
ソリューションに Model Builder を初めて追加するときに、mbconfig
ファイルを作成するように求められます。 mbconfig
ファイルでは、セッションを再度開けるように Model Builder で行ったすべての操作が記録されます。
- ソリューション エクスプローラーで、LandUse プロジェクトを右クリックし、[追加]、[機械学習モデル] の順に選択します。
- ダイアログで、Model Builder プロジェクトに LandUse という名前を付け、 [追加] をクリックします。
シナリオを選択する
モデルをトレーニングするには、モデル ビルダーによって提供される機械学習シナリオの一覧から選択する必要があります。
このサンプルの場合、タスクは画像分類です。 Model Builder ツールのシナリオ ステップで、 [画像分類] シナリオを選択します。
環境を選択する
Model Builder では、選択したシナリオに応じて異なる環境でトレーニングを実行することができます。
環境として Azure を選択し、 [Set up workspace](ワークスペースの設定) ボタンをクリックします。
Azure で実験を作成する
Azure Machine Learning の実験とは、Azure でモデル ビルダーのトレーニングを実行する前に作成する必要があるリソースです。
実験には、1 回以上の機械学習のトレーニングの実行の構成と結果がカプセル化されます。 実験は特定のワークスペースに属します。 ワークスペースの名前は、実験の初回作成時に登録されます。 それ以降同じ実験名を使用した場合、実行は同じ実験の一部としてログに記録されます。 そうでない場合は、新しい実験が作成されます。
[Create New Experiment](新しい実験の作成) ダイアログで、 [サブスクリプション] ドロップダウンからご自分のサブスクリプションを選択します。
ワークスペースの作成
ワークスペースとは、トレーニングの実行の一環で作成された Azure Machine Learning のすべてのリソースと成果物の一元的な場所を提供する Azure Machine Learning リソースです。
[Create New Experiment](新しい実験の作成) ダイアログで、 [Machine Learning Workspace name](Machine Learning ワークスペース名) ドロップダウンの横にある [新規] リンクを選択します。
[新しいワークスペースの作成] ダイアログで、 [Machine Learning Workspace name](Machine Learning ワークスペース名) テキスト ボックスに「landuse-wkspc」と入力します。
[リージョン] ドロップダウンから、米国東部を選択します。 リージョンは、お使いのワークスペースとリソースがデプロイされているデータ センターの地理的な場所です。 ご自分またはお客様に近い場所を選択することをお勧めします。
[リソース グループ] ドロップダウンの横にある [新規] リンクを選択します。
- [新しいリソース グループの作成] ダイアログで、 [リソース グループ名] テキスト ボックスに「landuse-rg」と入力します。
- [OK] を選択します。
[リソース グループ] ドロップダウンから、新しく作成したリソース グループを選択します。
[作成] を選択します
プロビジョニング プロセスは数分かかります。 次のクラウド リソースをプロビジョニングするように Azure に要求されます。
- Azure Machine Learning ワークスペース
- Azure Storage アカウント
- Azure Application Insights
- Azure Container Registry
- Azure Key Vault
プロビジョニング プロセスが完了したら、[Create New Experiment](新しい実験の作成) ダイアログの [Machine Learning Workspace name](Machine Learning ワークスペース名) ドロップダウンから、新しく作成したワークスペースを選択します。
コンピューティングを作成する
Azure Machine Learning コンピューティングとは、トレーニングに使用するクラウドベースの Linux VM です。
- [Create New Experiment](新しい実験の作成) ダイアログで、 [コンピューティング名] ドロップダウンの横にある [新規] リンクを選択します。
- [Create New Compute](新しいコンピューティングの作成) ダイアログで、 [コンピューティング名] テキスト ボックスに「landuse-cpt」と入力します。
- [コンピューティング サイズ] ドロップダウンから Standard_NC24 を選択します。 Model Builder によって、GPU に最適化されたコンピューティングの種類が使用されます。 GPU に最適化されたコンピューティングの種類の詳細については、NC シリーズの Linux VM のドキュメントに関するページを参照してください。
- [作成] を選択します コンピューティング リソースのプロビジョニングには数分かかる場合があります。
- プロビジョニング プロセスが完了したら、[Create New Experiment](新しい実験の作成) ダイアログの [コンピューティング名] ドロップダウンから、新しく作成したワークスペースを選択します。
- [次のステップ] ボタンを選択して、データを読み込みます。
データを読み込む
- Model Builder ツールのデータ ステップで、 [フォルダーの選択] テキスト ボックスの横にあるボタンを選択します。
- エクスプローラーを使用して、画像が格納されている解凍済みディレクトリを参照して選択します。
- Model Builder ツールで [次のステップ] ボタンを選択して、次のステップに進みます。
モデルをトレーニングする
Azure でのトレーニングは、モデル ビルダーの画像分類のシナリオのみを用意しています。 これらのモデルのトレーニングに使用されるアルゴリズムは、ResNet50 アーキテクチャに基づくディープ ニューラル ネットワークです。 モデルのトレーニング プロセス中に、Model Builder によって、ResNet50 アルゴリズムと設定を使用して個別のモデルがトレーニングされ、ご自分のデータセットでパフォーマンスが最も良いモデルが見つかります。
トレーニングを開始する
ワークスペースとコンピューティングの種類を構成したら、今度は実験の作成を終了し、トレーニングを開始します。
[トレーニングを開始] ボタンをクリックします。
トレーニングには時間がかかり、この時間は選択したコンピューティングのサイズやデータ量によって変わります。 モデルの初回トレーニング時は、リソースのプロビジョニングのためにトレーニング時間が若干長くなります。 Visual Studio で [Monitor current run in Azure portal](Azure portal で現在の実行を監視する) リンクを選択すると、ご自分の実行の進行状況を追跡できます。
トレーニング プロセスを通して、進行状況データがトレーニング ステップの [進行状況] セクションに表示されます。
- 状態には、トレーニング プロセスの完了ステータスが表示されます。
- [Best accuracy](最良の精度) には、これまでにモデル ビルダーで見つかった最良のパフォーマンスのモデルの精度が表示されます。 精度が高くなるほど、テスト データでモデルが正確に予測されたことになります。
- [アルゴリズム] には、これまでに Model Builder によって検索された中で、パフォーマンスが最も良いアルゴリズムの名前が表示されます。
トレーニングが完了したら、 [次のステップ] ボタンを選択して、モデルの評価に進みます。
モデルを評価する
トレーニング ステップの結果が、最良のパフォーマンスを示した 1 つのモデルです。 Model Builder ツールの評価ステップでは、出力セクションの [詳細] タブで、 [アルゴリズム] エントリにパフォーマンスが最良のモデルで使用されるアルゴリズムが、 [Best Model](最良のモデル) の詳細の [精度] エントリにメトリックが含まれます。
精度のメトリックに不満がある場合、モデルの精度を向上させる簡単な方法としては、より多くのデータを使用する、既存のデータを補う方法があります。 そうでない場合は、 [次のステップ] ボタンを選択して、Model Builder ツールの最後のステップに進みます。
(省略可能) モデルを使用する
この手順では、モデルを使用するために使用できるプロジェクト テンプレートが用意されています。 この手順は省略可能であり、モデルの指定方法については、ニーズに合った方法を選択することができます。
- コンソール アプリ
- Web API
コンソール アプリ
コンソール アプリをソリューションに追加する場合、プロジェクトの名前を入力するように求めるプロンプトが表示されます。
コンソール プロジェクトに LandUse_Console という名前を付けます。
[ソリューションに追加] をクリックして、現在のソリューションにプロジェクトを追加します。
アプリケーションを実行します。
プログラムによって生成される出力は次のスニペットのようになります。
Predicted Label value: AnnualCrop Predicted Label scores: [0.9941197,3.3146807E-06,4.4344174E-06,0.000101028825,7.763133E-06,0.0015898133,0.0040994748,1.6308518E-06,6.265567E-05,1.0236401E-05]
Web API
Web API をソリューションに追加する場合、プロジェクトの名前を入力するように求めるプロンプトが表示されます。
Web API プロジェクトに LandUse_API という名前を付けます。
[ソリューションに追加] をクリックして、現在のソリューションにプロジェクトを追加します。
アプリケーションを実行します。
PowerShell を開き、次のコードを入力します。PORT には、アプリケーションがリッスンしているポートを入力します。
$body = @{ ImageSource = <Image location on your local machine> } Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
成功した場合、出力は次のテキストのようになります。
output1 prediction score ------- ---------- ----- {9.508701, -3.1025503, -2.8115153, 0.31449434...} AnnualCrop {0.9941197, 3.3146807E-06, 4.4344174E-06, 0.00010102882...
リソースをクリーンアップする
作成した Azure リソースは、今後使用する予定がなければ削除します。 これにより、稼働したまま使用されていないリソースに課金されることを防止できます。
- Azure portal に移動し、ポータル メニューの [リソース グループ] を選択します。
- リソースグループの一覧から、作成したリソース グループを選択します。 このケースでは、"landuse-rg" です。
- [リソース グループの削除] を選択します。
- テキスト ボックスにリソース グループ名を「landuse-rg」と入力し、Enter キーを押します。
次のステップ
このチュートリアルで学習した内容は次のとおりです。
- データを準備して理解する
- Model Builder 構成ファイルを作成する
- シナリオを選択する
- データを読み込む
- Azure で実験を作成する
- モデルをトレーニングする
- モデルを評価する
- モデルを使用する
Model Builder の他のシナリオのいずれかを試してみてください。
.NET