Partilhar via


Integrar o armazenamento do Azure para notificações e backup

Você pode integrar seu projeto de Visão Personalizada com uma fila de armazenamento de blob do Azure para obter notificações por push da atividade de treinamento/exportação do projeto. Esse recurso é útil para evitar sondar continuamente o serviço em busca de resultados quando operações longas estão em execução. Em vez disso, você pode integrar as notificações da fila de armazenamento ao seu fluxo de trabalho.

Você também pode usar o armazenamento do Azure para armazenar cópias de backup de seus modelos publicados.

Este guia mostra como usar essas APIs REST com cURL. Você também pode usar um serviço de solicitação HTTP, como o cliente REST para Visual Studio Code, para fazer as solicitações.

Nota

As notificações por push dependem do parâmetro opcional notificationQueueUri na API CreateProject, e os backups de modelo exigem que você também use o parâmetro opcional exportModelContainerUri. Este guia usará ambos para o conjunto completo de recursos.

Pré-requisitos

  • Um recurso de Visão Personalizada do Azure. Se você não tiver um, vá para o portal do Azure e crie um novo recurso de Visão Personalizada.

    Nota

    Esta funcionalidade não suporta o recurso multisserviço de serviços de IA do Azure.

  • Uma conta de Armazenamento do Azure com um contêiner de blob. Siga o Guia de início rápido de armazenamento se precisar de ajuda com esta etapa.
  • PowerShell versão 6.0+ ou um aplicativo de linha de comando semelhante.

Configurar a integração de armazenamento do Azure

Aceda ao seu recurso de formação Visão Personalizada no portal do Azure, selecione a página Identidade e habilite a identidade gerenciada atribuída ao sistema.

Em seguida, vá para seu recurso de armazenamento no portal do Azure. Vá para a página Controle de acesso (IAM) e selecione Adicionar atribuição de função (Visualização). Em seguida, adicione uma atribuição de função para o recurso de integração ou ambos:

  • Se você planeja usar o recurso de backup de modelo, selecione a função de Colaborador de Dados de Blob de Armazenamento e adicione seu recurso de treinamento Visão Personalizada como membro. Selecione Rever + atribuir para concluir.
  • Se você planeja usar o recurso de fila de notificações, selecione a função Colaborador de Dados da Fila de Armazenamento e adicione seu recurso de treinamento Visão Personalizada como membro. Selecione Rever + atribuir para concluir.

Para obter ajuda com atribuições de função, consulte Atribuir funções do Azure usando o portal do Azure.

Obter URLs de integração

Em seguida, você obterá as URLs que permitem que seu recurso Visão Personalizada acesse esses pontos de extremidade.

Para a URL de integração da fila de notificação, vá para a página Filas da sua conta de armazenamento, adicione uma nova fila e salve sua URL em um local temporário.

Página da fila de armazenamento do Azure

Para obter a URL de integração do backup do modelo, vá para a página Contêineres da sua conta de armazenamento e crie um novo contêiner. Em seguida, selecione-o e vá para a página Propriedades . Copie o URL para um local temporário.

Página de propriedades do contêiner de armazenamento do Azure

Integrar um projeto de Visão Personalizada

Agora que você tem as URLs de integração, pode criar um novo projeto de Visão Personalizada que integra os recursos de Armazenamento do Azure. Você também pode atualizar um projeto existente para adicionar os recursos.

Ao chamar a API CreateProject , adicione os parâmetros opcionais exportModelContainerUri e notificationQueueUri. Atribua os valores de URL obtidos na seção anterior.

curl -v -X POST "{endpoint}/customvision/v3.3/Training/projects?exportModelContainerUri={inputUri}&notificationQueueUri={inputUri}&name={inputName}"
-H "Training-key: {subscription key}"

Se você receber uma 200/OK resposta, isso significa que os URLs foram configurados com êxito. Você também deve ver seus valores de URL na resposta JSON:

{
  "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"
}

Verificar a ligação

Sua chamada de API na seção anterior já deve ter acionado novas informações em sua conta de armazenamento do Azure.

Em seu contêiner designado, deve haver um blob de teste dentro de uma pasta CustomVision-TestPermission . Este blob só existirá temporariamente.

Na fila de notificações, você verá uma notificação de teste no seguinte formato:

{
"version": "1.0" ,
"type": "ConnectionTest",
"Content":
    {
    "projectId": "00000000-0000-0000-0000-000000000000"
    }
}

Obter notificações de eventos

Quando estiver pronto, chame a API TrainProject em seu projeto para fazer uma operação de treinamento comum.

Na fila de notificações de armazenamento, você receberá uma notificação assim que o treinamento terminar:

{
"version": "1.0" ,
"type": "Training",
"Content":
    {
    "projectId": "00000000-0000-0000-0000-000000000000",
    "iterationId": "00000000-0000-0000-0000-000000000000",
    "trainingStatus": "TrainingCompleted"
    }
}

O "trainingStatus" campo pode ser um ou "TrainingFailed""TrainingCompleted" . O "iterationId" campo é o ID do modelo treinado.

Obter backups de exportação de modelo

Quando estiver pronto, chame a API ExportIteration para exportar um modelo treinado para uma plataforma especificada.

No contêiner de armazenamento designado, uma cópia de backup do modelo exportado será exibida. O nome do blob terá o formato:

{projectId} - {iterationId}.{platformType}

Além disso, você receberá uma notificação em sua fila quando a exportação terminar.

{
"version": "1.0" ,
"type": "Export",
"Content":
    {
    "projectId": "00000000-0000-0000-0000-000000000000",
    "iterationId": "00000000-0000-0000-0000-000000000000",
    "exportStatus": "ExportCompleted",
    "modelUri": {url}
    }
}

O "exportStatus" campo pode ser um ou "ExportFailed""ExportCompleted" . O "modelUri" campo conterá a URL do modelo de backup armazenado em seu contêiner, supondo que você integrou notificações de fila no início. Caso contrário, o "modelUri" campo mostrará a URL SAS do blob do modelo Visão Personalizada.

Próximos passos

Neste guia, você aprendeu como copiar e fazer backup de um projeto entre recursos da Visão Personalizada. Em seguida, explore os documentos de referência da API para ver o que mais você pode fazer com a Visão Personalizada.