OpenMV
Escudos
Lente
Robótica
Livro
Vídeo
Download
Documentos
Fórum
OpenMV.io
GitHubEm abril do ano passado, o nosso novo produto OpenMV4 H7 Plus foi lançado. Hoje, vou apresentar a nova funcionalidade do OpenMV4 H7 Plus – utilizar o site online EdgeImpulse para treinar de forma autónoma redes neuronais para classificação e reconhecimento.
Neste tutorial, irá utilizar aprendizagem automática para construir um sistema de reconhecimento que, através da câmara inteligente OpenMV4 H7 Plus, identifica se uma pessoa está a usar máscara facial, ou seja, realiza classificação de imagem.

EdgeImpulse é um site que fornece serviços de treino online de modelos de redes neuronais para dispositivos embutidos, sendo nosso parceiro OpenMV e também parceiro oficial da STMicroelectronics. Atualmente, o EdgeImpulse está aberto gratuitamente para os nossos utilizadores OpenMV, permitindo que estes utilizem a plataforma para treinar modelos de redes neuronais adequados para o OpenMV sem custos.
A adição de redes neurais ao dispositivo embutido OpenMV permite distinguir caçadores furtivos de elefantes, realizar controlo de qualidade em linhas de produção de fábricas e permitir que carros modelo telecomandados conduzam autonomamente, entre outras funcionalidades.
Neste tutorial, irá aprender como recolher imagens para criar um conjunto de dados de alta qualidade, como aplicar a aprendizagem por transferência para treinar uma rede neural e como implementar o sistema no OpenMV.
Além disso, também disponibilizámos um tutorial em vídeo, que pode ser visualizado pesquisando por "OpenMV4 Plus Training Neural Network for Mask Recognition" no site oficial.
Pode consultar todo o conteúdo do projeto no seguinte endereço, incluindo todos os códigos e modelos: https://book.openmv.cc/project/mask.html
A utilização do EdgeImpulse para treinar modelos de redes neuronais online para o OpenMV divide-se principalmente nos seguintes quatro passos: recolha de dados, carregamento, treino e implementação.
01. Recolha de Conjuntos de Dados
Neste tutorial, vamos construir um modelo capaz de distinguir se uma pessoa está a usar máscara facial ou não. Claro que também pode optar por classificar outros objetos. Para que o modelo de aprendizagem automática funcione, é necessário recolher um grande número de imagens de exemplo de rostos com e sem máscara. Durante o treino, estas imagens de exemplo são utilizadas para o modelo praticar a distinção.
Precisamos de utilizar o OpenMV IDE para recolher o nosso conjunto de dados. Os passos para recolher as imagens são os seguintes:
Criar duas categorias:
Abra o menu "Ferramentas" no OpenMV IDE, selecione "Editor de Conjunto de Dados", clique em "Novo Conjunto de Dados", crie uma nova pasta e abra-a. Dentro do conjunto de dados, crie duas pastas adicionais, nomeando-as como "mask" (para guardar fotografias de rostos com máscara) e "face" (para guardar fotografias de rostos sem máscara).


Capturar imagens com OpenMV
Primeiro, ligamos o OpenMV, clicamos em "Ligar" no IDE, depois em "Executar". No buffer de quadros Framebuffer, podemos ver a imagem em tempo real do OpenMV. Ao clicar no botão de fotografia na barra de menu lateral, o OpenMV guarda automaticamente essa imagem, que constitui um dos dados do conjunto de dados.
Primeiro, o que pretendemos guardar são os rostos das pessoas que usam máscaras. Ao clicar no botão da fotografia, o IDE tira uma fotografia na parte inferior, que é automaticamente nomeada como 00000, seguida de 00001, e assim sucessivamente.
Utilizando o OpenMV, foram recolhidas 200 fotografias de rostos com máscara (100 de homens e 100 de mulheres) e 200 fotografias de rostos sem máscara (igualmente 100 de homens e 100 de mulheres).


* Nota: Certifique-se de recolher fotografias de vários ângulos para garantir a diversidade do nosso treino e aprendizagem.
Se durante a recolha descobrir que uma imagem não foi capturada de forma ideal, pode clicar com o botão direito do rato sobre essa imagem e selecionar eliminar.
02. Carregar
Após a captura de imagens com o OpenMV, é necessário registar uma conta e iniciar sessão no site oficial do EdgeImpulse (https://edgeimpulse.com/) para começar a carregar as imagens. Os passos para carregar as imagens são:
Crie um novo projeto no EdgeImpulse, clique em "keys", selecione "API Key" e copie a "API Key". Utilize a API Key para estabelecer a ligação entre o OpenMV IDE e o Edge Impulse.

Selecione na barra de menu superior do OpenMV IDE "Ferramentas" — "Editor de Dados" — "Exportar" — "Carregar" — "Carregar via Chave de API", copie a "Chave de API" e carregue.
Os dados serão automaticamente divididos em conjuntos de treino e teste durante o upload, sendo a proporção padrão selecionada de "80% e 20%". Recolhemos um total de mais de 400 imagens faciais, onde 80% dos Training Date correspondem a 80% dos dados utilizados para treino por padrão, e os restantes 20% são usados como conjunto de teste.


03. Conjunto de Dados de Treino
Com o conjunto de dados preparado, pode treinar o conjunto de dados na interface do site do EdgeImpulse.
Módulo de Processamento de Configuração:
Primeiro, selecione "Impulse Design" e configure o módulo de processamento:
* Definir a proporção padrão da imagem como "96 x 96";
* Selecione o módulo "Imagens", indicando que estamos a realizar treino de classificação de imagens (também pode utilizar o EdgeImpulse para classificar sons, vídeos, etc.);
* Selecione "Transferência de Aprendizagem (Imagens) Transfer Learning (Images)", configure o modelo de aprendizagem;
Selecionar "Guardar impulso Save", se aparecer "Successfully" significa que a configuração foi bem-sucedida.

Pré-processamento de imagem:
Clique em "Imagem" no menu esquerdo, defina o formato de cor como "RGB" e, em seguida, clique em "Guardar".

A seguir, selecione "Gerar Características" para iniciar o processo, que realizará o pré-processamento de imagens em mais de 400 conjuntos de dados, e uma visualização 3D do conjunto de dados completo será exibida no lado direito.

Configurar o modelo de aprendizagem por transferência
Clique em "Aprendizagem por Transferência" no menu esquerdo, os parâmetros configurados podem ser todos selecionados como padrão ou alterados conforme necessário:
1. Definir o número de ciclos de treino Number of training cycles como padrão para 10
2. Defina a taxa de aprendizagem Learning rate para 0,0005
3. Pode marcar ou não a opção "Aumento de dados Data augmentation
4. Definir a classificação mínima de confiança Minimum confidence rating como 0.8 por padrão.
Clique em "Iniciar treino Start training", o processo de treino demora aproximadamente 4 a 5 minutos.
Após a conclusão do treino do modelo, pode consultar a precisão, a matriz de confusão e o desempenho esperado do equipamento.

* Testar o modelo:
Após o treino, utilizaremos dados de teste para verificar o modelo.
Selecione "Teste de Modelo", marque a caixa de seleção ao lado de "Nome da Amostra" e clique em "Classificar Selecionados". A precisão exibida aqui atingiu 97%, o que é notável para um modelo com tão poucos dados.

Descobriu que esta imagem exibida em vermelho é incerta. Clique nos três pontos à direita da imagem, selecione "Mostrar classificação Show classification" e entrará na interface de "Classificação em tempo real", que contém mais detalhes do ficheiro. Esta interface ajudará a determinar a razão pela qual a imagem foi classificada incorretamente.

Se os dados estiverem fora de todos os clusters conhecidos (com máscara/sem máscara), podem ser dados que não correspondem a nenhuma categoria previamente observada – possivelmente devido ao rosto estar maioritariamente coberto por cabelo.
04. Executar o modelo no OpenMV
Após concluir as etapas de design de treino, treino do modelo e validação do modelo, pode exportar este modelo para o seu OpenMV. Selecione "OpenMV", escolha "Build" para gerar, e serão automaticamente criados 3 ficheiros:
trained.tflite modelo de rede neural treinado
labels.txt duas etiquetas de classificação (face e mask)
* ei_image_classification.py é o código a ser executado no OpenMV

Ligue o OpenMV IDE e guarde estes 3 ficheiros na memória Flash interna do OpenMV. Abra o ficheiro ei_image_classification.py no OpenMV IDE para ver o código que acabámos de gerar no EdgeImpulse. Clique em executar e os resultados da execução serão exibidos no terminal série.


Muito bem, já conseguiste adicionar com sucesso a funcionalidade de treinar redes neurais de forma autónoma ao OpenMV.
Esperamos pelos seus resultados!

Sentinela de IA baseada em OpenMV: Alerta automático para locais críticos não fechados
Detecção automática de portas de locais críticos que permaneçam abertas durante um período prolongado, com alerta imediato.

Alerta de intrusão de pessoal; a OpenMV interpreta o «sentido de fronteira de segurança»
Detecção de comportamentos de intrusão de pessoas ou equipamentos através de linhas virtuais de vigilância.

O «AI Gestor Municipal» chegou: sistema automático de deteção de ocupação ilegal de vias públicas baseado em OpenMV
Identificação automática de atividades comerciais que ocupam indevidamente vias públicas, apoiando a gestão quotidiana das cidades.

Cilindros de gás colocados de forma inadequada? Utilize a OpenMV para acionar automaticamente alertas de perigo
Identificação automática de posições inadequadas de botijões de gás, permitindo a deteção antecipada de riscos de segurança relacionados com o gás.

Trabalho em equipamento energizado sem luvas isolantes? A OpenMV emite imediatamente um alerta!
Identificação automática de se os trabalhadores estão a utilizar luvas isolantes, para apoio à execução segura das tarefas.

Utilização da câmara inteligente OpenMV para deteção em tempo real de defeitos na superfície de placas de alumínio
Detecção online de defeitos na superfície de chapas de alumínio, tais como riscos e depressões, para apoio ao controlo de qualidade.