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

Você pode integrar seu projeto de Visão Personalizada a uma fila de espera de armazenamento de blobs do Azure para receber notificações por push de uma atividade de treinamento/exportação de projetos. Esse recurso é útil para evitar a sondagem contínua do serviço em busca de resultados quando operações longas estão em execução. Em vez disso, você pode integrar as notificações de 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 o cURL. Você também pode usar um serviço de solicitação HTTP, como o REST Cliente para Visual Studio Code, para fazer as solicitações.

Observação

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

Pré-requisitos

Configurar a integração do armazenamento do Azure

Acesse o seu recurso de treinamento de Visão Personalizada no portal do Azure, selecione a página Identidade e habilite a identidade gerenciada atribuída pelo sistema.

Em seguida, acesse o recurso de armazenamento no portal do Azure. Vá até a página IAM (Controle de Acesso) e selecione + Adicionar atribuição de função (versão prévia) . Em seguida, adicione uma atribuição de função a um dos recursos de integração ou ambos:

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

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

Obter URLs de integração

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

Para a URL de integração da fila de notificação, acesse a página Filas da sua conta de armazenamento, adicione uma nova fila e salve a URL em uma localização temporária.

Azure storage queue page

Para a URL de integração de backup do modelo, acesse a página Contêineres da conta de armazenamento e crie um contêiner. Em seguida, selecione-o e acesse a página Propriedades. Copie a URL para uma localização temporária.

Azure storage container properties page

Integrar um projeto de Visão Personalizada

Agora que você tem as URLs de integração, crie um projeto de Visão Personalizada que integre os recursos do 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 que você obteve 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 resposta 200/OK, isso significará que as URLs foram configuradas com êxito. Você também verá os 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 conexão

A chamada à API na seção anterior já deve ter disparado novas informações na conta de armazenamento do Azure.

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

Na fila de notificação, 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 no projeto para fazer uma operação de treinamento comum.

Na fila de notificação do Armazenamento, você receberá uma notificação após a conclusão do treinamento:

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

O campo "trainingStatus" poderá ser "TrainingCompleted" ou "TrainingFailed". O campo "iterationId" é a 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 na fila quando a exportação for concluída.

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

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

Próximas etapas

Neste guia, você aprendeu a copiar um projeto entre os recursos da Visão Personalizada e fazer backup dele. Agora, explore a documentação de referência de API para saber o que mais você pode fazer com a Visão Personalizada.