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
- Um recurso de Visão Personalizada do Azure. Caso você não tenha um, acesse o portal do Azure e crie um recurso de Visão Personalizada.
Observação
Esse recurso não dá suporte ao recurso multisserviço dos serviços de IA do Azure.
- Uma conta do 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 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.
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.
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}¬ificationQueueUri={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.