Share via


整合 Azure 儲存體以取得通知和備份

您可以將 自訂視覺 專案與 Azure Blob 記憶體佇列整合,以取得專案定型/匯出活動的推播通知。 這項功能有助於避免長時間執行作業時,系統持續輪詢服務來取得結果。 相反地,您可以將儲存體佇列通知整合到您的工作流程中。

您也可以使用 Azure 記憶體來儲存已發佈模型的備份複本。

本指南說明如何透過 cURL 使用這些 REST API。 您也可以使用 HTTP 要求服務,例如 REST Client for Visual Studio Code 來提出要求。

注意

推播通知取決於 CreateProject API 中的選擇性 notificationQueueUri 參數,而模型備份則要求您也必須使用選擇性的 exportModelContainerUri 參數。 本指南將針對完整的功能集使用這兩者。

必要條件

設定 Azure 儲存體整合

移至 Azure 入口網站 上的 自訂視覺 訓練資源,選取 [身分識別] 頁面,然後啟用系統指派的受控識別

接下來,移至 Azure 入口網站中的儲存體資源。 移至 [存取控制 (IAM)] 頁面,然後選取 [新增角色指派 (預覽)]。 然後,為任一整合功能或兩者新增角色指派:

  • 如果您打算使用模型備份功能,請選取 [儲存體 Blob 資料參與者] 角色,然後將自訂視覺定型資源新增為成員。 選取 [檢閱 + 指派] 以完成。
  • 如果您打算使用通知佇列功能,則請選取 [儲存體佇列資料參與者] 角色,然後將自訂視覺定型資源新增為成員。 選取 [檢閱 + 指派] 以完成。

如需角色指派的協助,請參閱使用 Azure 入口網站指派 Azure 角色

取得整合 URL

接下來,您將取得可讓自訂視覺資源存取這些端點的 URL。

針對通知佇列整合 URL,請移至儲存體帳戶的 [佇列] 頁面、新增佇列,並將其 URL 儲存至暫存位置。

Azure 記憶體佇列頁面

針對模型備份整合 URL,請移至儲存體帳戶的 [容器] 頁面,然後建立新的容器。 然後選取新容器,並移至 [屬性] 頁面。 將 URL 複製到暫存位置。

Azure 記憶體容器屬性頁面

整合 自訂視覺 專案

現在您已經有整合 URL,可以建立整合 Azure 儲存體功能的新自訂視覺專案。 您也可以更新現有的專案以新增功能。

當您呼叫 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" 欄位是定型模型的識別碼。

取得模型匯出備份

當您準備好時,請呼叫 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"。 此 "modelUri" 欄位會包含容器中所儲存備份模型的 URL (假設您在一開始就已整合佇列通知)。 如果您沒有這麼做,"modelUri" 欄位將會顯示自訂視覺模型 blob 的 SAS URL。

下一步

在本指南中,您已了解如何在自訂視覺資源之間複製和備份專案。 接下來,請探索 API 參考文件,以了解您可以使用的其他自訂視覺執行功能。