Exercício – Criar uma imagem de contêiner com o modelo YOLO e implantá-la no IoT Edge
Antes de começar, verifique se você instalou os pré-requisitos no computador local.
- Instalar o Docker no computador
- Instalar o cURL
Criar um Registro de Contêiner do Azure
Abra o Azure Cloud Shell no portal do Azure clicando no ícone do Cloud Shell.
Você criará um registro de contêiner do Azure com o comando az acr create. Execute o seguinte comando para definir uma variável chamada ACR_NAME. O nome do registro de contêiner deve ser exclusivo no Azure e conter de 5 a 50 caracteres alfanuméricos.
ACR_NAME=<enter-registry-name>
Insira o comando a seguir no editor do Cloud Shell para criar um registro de contêiner.
az acr create --resource-group <replace-with-resource-group> --name $ACR_NAME --sku Standard
Acesse o recurso de registro de contêiner recém-criado e procure Chaves de acesso.
Copie o nome de registro, o servidor de logon, o nome de usuário e a senha.
Baixar o modelo de inferência YOLOv4(tiny) TensorFlow Lite
Acesse
https://github.com/Azure/live-video-analytics
e baixe o zip no computador local.Acesse o caminho a seguir na pasta baixada.
live-video-analytics-master/utilities/video-analysis/yolov4-tflite-tiny
Crie um diretório no computador e copie todos os arquivos (incluindo as subpastas) dessa pasta do GitHub para o novo diretório.
Criar uma imagem de contêiner com o modelo YOLO
Você verá o Dockerfile que fornece instruções de build para a imagem de contêiner.
Abra o terminal neste diretório. Execute o comando do Docker a seguir em uma janela Comando nesse diretório para criar a imagem de contêiner.
docker build . -t yolov4-tflite-tiny:latest
Efetuar push da imagem do Docker para o Registro de Contêiner do Azure
Agora, você tem uma imagem do Docker com o modelo YOLO. Para efetuar push de uma imagem para o Registro, você precisa marcá-la com o nome totalmente qualificado de seu servidor de logon do Registro. O nome do servidor de logon está no formato azurecr.io (deve e star em letras minúsculas).
No computador local, faça logon no Azure com a CLI do Azure.
az login
Faça logon no ACR com a CLI do Azure (o Docker também pode ser usado).
docker login <replace-with-your-acr-login-server>
Marque a imagem usando o comando docker tag. Substitua <login-server> pelo nome do servidor de logon da instância do ACR.
docker tag <original-image-name:tag> <registry-name>.azurecr.io/<image-name:tag>
Use o push do docker para fazer push da imagem para a instância do registro. Substitua <login-server> pelo nome do servidor de logon da sua instância do registro.
docker push <registry-name>.azurecr.io/<image-name:tag>
Levará algum tempo para que o modelo em contêineres seja enviado por push ao Registro de Contêiner do Azure. Após o push da imagem para o registro de contêiner, o URI da imagem será:
<registry-name>.azurecr.io/<image-name:tag>
Para verificar se a imagem foi enviada por push, você acessará o recurso Registro de Contêiner e navegará pelo repositório.
Implantar o modelo YOLO como um módulo do Azure IoT Edge
No portal do Azure, vá para o recurso de Hub IoT.
No painel esquerdo, selecione IoT Edge em Gerenciamento Automático de Dispositivo.
Selecionar o dispositivo IoT Edge que receberá a implantação.
Na barra superior, selecione Definir Módulos.
Forneça as informações a seguir.
Nome: substitua-o pelo nome de registro do Registro de Contêiner do Azure
Endereço: substitua-o pelo servidor de logon do Registro de Contêiner do Azure
Nome de usuário: substitua-o pelo nome de usuário do Registro de Contêiner do Azure
Senha: substitua-o pela senha do Registro de Contêiner do Azure
Selecione Adicionar.
Na seção Módulos do IoT Edge, selecione Adicionar e Módulo do IoT Edge no menu suspenso.
Dê um nome ao módulo do IoT Edge e insira a URL da imagem, que é o caminho abaixo.
<registry-name>.azurecr.io/<image-name:tag>
Selecione Adicionar.
Examinar + criar
Depois de configurar o módulo, selecione Examinar + criar. A seção de revisão mostra o manifesto de implantação JSON criado com base nos módulos definidos. Verifique se o módulo definido na seção anterior está definido no manifesto.
Verificar o módulo implantado no seu dispositivo de borda
Após a implantação, você poderá verificar o módulo no dispositivo de borda. Conecte-se à sua máquina virtual e execute o comando docker ps.
docker ps
Agora você tem o próprio módulo de inferência no dispositivo de borda, e o ponto de extremidade de previsão poderá ser acessado por meio de /score com a porta 80 se a imagem for compilada com base no modelo Tiny YOLOv4 TensorFlow Lite.
Anote o ponto de extremidade de previsão que está no formato http://{nome-do-módulo}:80/score e só pode ser acessado no dispositivo de borda.