通知とバックアップのために Azure Storage を統合する
Custom Vision プロジェクトを Azure Blob Storage キューと統合し、プロジェクトのトレーニングのプッシュ通知を取得したり、アクティビティをエクスポートしたりできます。 この機能は、長い操作が実行されているときに、サービスで結果をポーリングし続けなくて済むようにするのに役立ちます。 代わりに、ストレージ キュー通知をワークフローに統合できます。
Azure ストレージを使用し、公開したモデルのバックアップ コピーを保管することもできます。
このガイドでは、cURL でこれらの REST API を使用する方法について説明します。 Visual Studio Code の REST クライアント などの HTTP 要求サービスを使用して、要求を行うこともできます。
Note
プッシュ通知は、CreateProject API のオプションの notificationQueueUri パラメーターに依存します。また、モデルのバックアップでは、オプションの exportModelContainerUri パラメーターも使用する必要があります。 このガイドでは、すべての機能を説明するために両方とも使用します。
前提条件
- Azure Custom Vision リソース。 それがない場合は、Azure portal に移動し、新しい Custom Vision リソースを作成してください。
Note
この機能は Azure AI サービスのマルチサービス リソース をサポートしていません。
- BLOB コンテナーがある Azure ストレージ アカウント。 このステップに関してヘルプが必要な場合は、ストレージのクイックスタート に従ってください。
- PowerShell バージョン 6.0 以降、または同様のコマンド ライン アプリケーション。
Azure ストレージの統合をセットアップする
Azure portal で Custom Vision トレーニング リソースに移動し、[ID] ページを選択して、システム割り当てマネージド ID を有効にします。
次に、Azure portal でストレージ リソースに移動します。 [アクセス制御 (IAM)] ページに移動して [ロールの割り当ての追加 (プレビュー)] を選択します。 次のどちらかまたは両方の統合機能用にロールの割り当てを追加してください。
- モデルのバックアップ機能を使用する場合は、 [ストレージ BLOB データ共同作成者] ロールを選択し、Custom Vision トレーニング リソースをメンバーとして追加します。 [Review + assign](確認と割り当て) を選択して完了します。
- 通知キュー機能を使用する場合は、 [ストレージ キュー データ共同作成者] ロールを選択し、Custom Vision トレーニング リソースをメンバーとして追加します。 [Review + assign](確認と割り当て) を選択して完了します。
ロールの割り当てについては、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。
統合 URL を取得する
次に、Custom Vision リソースでこれらのエンドポイントにアクセスできる URL を取得します。
通知キューの統合 URL の場合は、ストレージ アカウントの [キュー] ページに移動し、新しいキューを追加して、その URL を一時的な場所に保存します。
モデル バックアップの統合 URL の場合は、ストレージ アカウントの [コンテナー] ページに移動し、新しいコンテナーを作成します。 次に、それを選択して、 [プロパティ] ページに移動します。 URL を一時的な場所にコピーします。
Custom Vision プロジェクトを統合する
統合 URL が用意できたので、Azure Storage の機能を統合する新しい Custom Vision プロジェクトを作成できます。 また、既存のプロジェクトを更新して、機能を追加することもできます。
CreateProject API を呼び出すときに、オプションのパラメーター exportModelContainerUri と notificationQueueUri を追加します。 前のセクションで取得した URL の値を割り当てます。
curl -v -X POST "{endpoint}/customvision/v3.3/Training/projects?exportModelContainerUri={inputUri}¬ificationQueueUri={inputUri}&name={inputName}"
-H "Training-key: {subscription key}"
応答 200/OK
を受け取ったら、URL が正常に設定されたことを意味します。 JSON の応答にも URL の値が表示されます。
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string",
"settings": {
"domainId": "00000000-0000-0000-0000-000000000000",
"classificationType": "Multiclass",
"targetExportPlatforms": [
"CoreML"
],
"useNegativeSet": true,
"detectionParameters": "string",
"imageProcessingSettings": {
"augmentationMethods": {}
},
"exportModelContainerUri": {url}
"notificationQueueUri": {url}
},
"created": "string",
"lastModified": "string",
"thumbnailUri": "string",
"drModeEnabled": true,
"status": "Succeeded"
}
接続を確認する
前のセクションの API 呼び出しにより、Azure ストレージ アカウントで新しい情報が既にトリガーされています。
指定したコンテナーの CustomVision-TestPermission フォルダー内に、テスト BLOB があるはずです。 この BLOB は一時的にのみ存在します。
通知キューには、次の形式のテスト通知が表示されます。
{
"version": "1.0" ,
"type": "ConnectionTest",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000"
}
}
イベント通知を取得する
準備ができたら、プロジェクトで TrainProject API を呼び出して、通常のトレーニング操作を行います。
トレーニングが完了すると、ストレージの通知キューで通知を受け取ります。
{
"version": "1.0" ,
"type": "Training",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000",
"iterationId": "00000000-0000-0000-0000-000000000000",
"trainingStatus": "TrainingCompleted"
}
}
"trainingStatus"
フィールドは、"TrainingCompleted"
または "TrainingFailed"
のいずれかになります。 "iterationId"
フィールドは、トレーニング済みのモデルの ID です。
モデルのエクスポートのバックアップを取得する
準備ができたら、ExportIteration API を呼び出して、トレーニング済みのモデルを指定したプラットフォームにエクスポートします。
指定したストレージ コンテナーに、エクスポートしたモデルのバックアップ コピーが表示されます。 BLOB 名の形式は次のとおりです。
{projectId} - {iterationId}.{platformType}
また、エクスポートが完了すると、キューで通知を受け取ります。
{
"version": "1.0" ,
"type": "Export",
"Content":
{
"projectId": "00000000-0000-0000-0000-000000000000",
"iterationId": "00000000-0000-0000-0000-000000000000",
"exportStatus": "ExportCompleted",
"modelUri": {url}
}
}
"exportStatus"
フィールドは、"ExportCompleted"
または "ExportFailed"
のいずれかになります。 最初にキュー通知を統合した場合は、コンテナーに格納されたバックアップ モデルの URL が"modelUri"
フィールドに含まれます。 そうでない場合は、Custom Vision モデルの BLOB の SAS URL が "modelUri"
フィールドに表示されます。
次の手順
このガイドでは、Custom Vision リソース間でプロジェクトをコピーしてバックアップする方法について説明しました。 次に、API リファレンス ドキュメントを参照して、Custom Vision を使用して他にできることを確認してください。