通知とバックアップのために Azure Storage を統合する

Custom Vision プロジェクトを Azure Blob Storage キューと統合し、プロジェクトのトレーニングのプッシュ通知を取得したり、アクティビティをエクスポートしたりできます。 この機能は、長い操作が実行されているときに、サービスで結果をポーリングし続けなくて済むようにするのに役立ちます。 代わりに、ストレージ キュー通知をワークフローに統合できます。

Azure ストレージを使用し、公開したモデルのバックアップ コピーを保管することもできます。

このガイドでは、cURL でこれらの REST API を使用する方法について説明します。 Visual Studio Code の REST クライアント などの HTTP 要求サービスを使用して、要求を行うこともできます。

Note

プッシュ通知は、CreateProject API のオプションの notificationQueueUri パラメーターに依存します。また、モデルのバックアップでは、オプションの exportModelContainerUri パラメーターも使用する必要があります。 このガイドでは、すべての機能を説明するために両方とも使用します。

前提条件

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 を一時的な場所に保存します。

Azure Storage キューのページ

モデル バックアップの統合 URL の場合は、ストレージ アカウントの [コンテナー] ページに移動し、新しいコンテナーを作成します。 次に、それを選択して、 [プロパティ] ページに移動します。 URL を一時的な場所にコピーします。

Azure ストレージ コンテナーのプロパティ ページ

Custom Vision プロジェクトを統合する

統合 URL が用意できたので、Azure Storage の機能を統合する新しい Custom Vision プロジェクトを作成できます。 また、既存のプロジェクトを更新して、機能を追加することもできます。

CreateProject API を呼び出すときに、オプションのパラメーター exportModelContainerUrinotificationQueueUri を追加します。 前のセクションで取得した URL の値を割り当てます。

curl -v -X POST "{endpoint}/customvision/v3.3/Training/projects?exportModelContainerUri={inputUri}&notificationQueueUri={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 を使用して他にできることを確認してください。