整合 Azure 儲存體以取得通知和備份
您可以將自訂視覺專案與 Azure Blob 儲存體佇列整合,以取得專案訓練/匯出活動的推播通知。 這項功能有助於避免長時間執行作業時,系統持續輪詢服務來取得結果。 相反地,您可以將儲存體佇列通知整合到您的工作流程中。
您也可使用 Azure 儲存體來儲存已發佈模型的備份複本。
本指南說明如何透過 cURL 使用這些 REST API。 您也可使用 HTTP 要求服務,例如適用於 Visual Studio Code 的 REST 用戶端來提出要求。
注意
推播通知取決於 CreateProject API 中的選擇性 notificationQueueUri 參數,而模型備份則要求您也必須使用選擇性的 exportModelContainerUri 參數。 本指南將針對完整的功能集使用這兩者。
必要條件
- Azure 自訂視覺資源。 如果您還沒有新的自訂視覺資源,請前往 Azure 入口網站並建立一個新的自訂視覺資源。
注意
這項功能不支援 Azure AI 服務多服務資源。
- 具有 blob 容器的 Azure 儲存體帳戶。 如果您需要此步驟的協助,請遵循儲存體快速入門。
- PowerShell 6.0 版以上,或類似的命令列應用程式。
設定 Azure 儲存體整合
移至 Azure 入口網站的自訂視覺定型資源、選取 [身分識別] 頁面,然後啟用系統指派的受控識別。
接下來,移至 Azure 入口網站中的儲存體資源。 移至 [存取控制 (IAM)] 頁面,然後選取 [新增角色指派 (預覽)]。 然後,為任一整合功能或兩者新增角色指派:
- 如果您打算使用模型備份功能,請選取 [儲存體 Blob 資料參與者] 角色,然後將自訂視覺定型資源新增為成員。 選取 [檢閱 + 指派] 以完成。
- 如果您打算使用通知佇列功能,則請選取 [儲存體佇列資料參與者] 角色,然後將自訂視覺定型資源新增為成員。 選取 [檢閱 + 指派] 以完成。
如需角色指派的協助,請參閱使用 Azure 入口網站指派 Azure 角色。
取得整合 URL
接下來,您將取得可讓自訂視覺資源存取這些端點的 URL。
針對通知佇列整合 URL,請移至儲存體帳戶的 [佇列] 頁面、新增佇列,並將其 URL 儲存至暫存位置。
針對模型備份整合 URL,請移至儲存體帳戶的 [容器] 頁面,然後建立新的容器。 然後選取新容器,並移至 [屬性] 頁面。 將 URL 複製到暫存位置。
整合自訂視覺專案
現在您已經有整合 URL,可以建立整合 Azure 儲存體功能的新自訂視覺專案。 您也可以更新現有的專案以新增功能。
當您呼叫 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"
欄位是定型模型的識別碼。
取得模型匯出備份
當您準備好時,請呼叫 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 參考文件,以了解您可以使用的其他自訂視覺執行功能。