共用方式為


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

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

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

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

注意

推播通知取決於 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 參考文件,以了解您可以使用的其他自訂視覺執行功能。