Como adicionar rapidamente uma Câmera de Reconhecimento Facial a uma MCU

By Bill Giovino

Contributed By DigiKey's North American Editors

Cada vez mais, os projetistas estão sendo solicitados a acrescentar capacidades de análise de imagem e vídeo às redes atuais e a novos produtos, particularmente para aplicações de segurança. O reconhecimento facial e de veículos é especialmente desejável e pode agregar valor considerável, mas aprender e programar os detalhes dos modelos de reconhecimento facial de um sistema baseado em microcontrolador pode ser demorado e complexo.

Como muitas vezes acontece, os desenvolvedores precisam começar a experimentar e se desenvolver o mais rápido possível. Este artigo mostrará como os desenvolvedores podem economizar tempo, usando uma combinação de hardware e software pronta para acelerar a incorporação do reconhecimento facial em sistemas embarcados.

Noções básicas de reconhecimento facial

Em sua maioria, os desenvolvedores já estão familiarizados com a detecção facial. Este é o processo de analisar uma imagem e determinar onde um rosto está presente. Muitos smartphones têm essa capacidade. O reconhecimento facial é a próxima etapa após a detecção facial. É o processo de analisar um rosto e desenvolver um modelo matemático, usando dados derivados de distâncias relativas de características faciais. Elas incluem a distância entre os olhos, e a posição relativa dos olhos ao nariz, mandíbula, orelhas e bochechas. O ângulo da face em relação à câmera de reconhecimento facial também é determinado, pois é importante para saber as distâncias relativas. O tom de pele também pode ser detectado e utilizado para reconhecimento.

Esse modelo é então comparado a um banco de dados de modelos matemáticos armazenados de rostos conhecidos, assim um algoritmo determina a melhor equivalência. Há uma probabilidade (em porcentagem) de que a face detectada corresponda a uma face armazenada. Há uma possibilidade de não haver equivalência e, portanto, a face detectada é desconhecida.

Hardware de reconhecimento facial

Para incorporar o reconhecimento facial, os projetistas têm a opção de juntar o sensor da câmera, o condicionamento do sinal frontal de vídeo e imagem, GPU, processador de controle, memória, software e firmware associados. É claro, isso leva tempo e pode ser uma longa curva de aprendizado. Opcionalmente, eles podem construir um sistema de reconhecimento facial usando hardware e firmware prontos para uso. Um bom lugar para começar é o sensor de câmera B5T-007001 da Omron Electronics, que é uma solução pronta para uso de hardware e firmware testados (Figura 1).

Imagem da câmera de reconhecimento facial Omron B5T-007001

Figura 1: a câmera de reconhecimento facial Omron B5T-007001 tem todas as funções necessárias para a aplicação destinada. (Fonte da imagem: Omron)

O B5T-007001 tem uma interface USB 2.0 que pode conectar a placa da câmera a um PC Windows®, executando o software de avaliação da Omron. Há também uma interface UART. Tanto a interface USB ou UART pode ser usada para conectar a placa da câmera a um host, seja um microcontrolador ou um PC.

Tanto o USB quanto o UART dá suporte a um API de comando para configurar a câmera. O firmware Omron da câmera integrado na placa analisa o vídeo e realiza o processamento de detecção antes de enviá-lo ao host.

Os comandos enviados para o B5T-007001 a partir de um host são executados sequencialmente. Uma vez que o firmware do host envia um comando para a câmera, ele deve esperar até que a câmera retorne o resultado desse comando antes de enviar outro comando. Se o host detecta um tempo limite, dependendo dos requisitos da aplicação, o firmware do host pode reenviar o comando, ou reiniciar a câmera enviando um comando RESET.

Configurando a câmera para o reconhecimento facial

Ao inicializar o B5T-007001, ele deve primeiro ser configurado para operar no ambiente físico no qual será utilizado. Os comandos são enviados através da interface USB ou UART e seguem uma estrutura de comando definida (Tabela 1). O primeiro byte de cada comando é sempre 0xFE, chamado de código síncrono.

Tabela 1

Tabela 1: formato de comando para o B5T-007001. O bit menos significante está à esquerda, o mais significante à direita. O bit menos significante é transmitido primeiro. Durante os comandos de gravação, os dados escritos para o B5T-007001 estão no campo Dados de Comando. (Fonte da imagem: Omron)

O B5T-007001 suporta 20 comandos. Para uma descrição completa de todos os comandos, consulte a Tabela 2.

Tabela 2

Tabela 2: lista de comandos para o B5T-007001 com uma breve explicação de cada um deles. Cada comando retorna um código de resposta ou um código de erro. Todas as escritas são do host escrevendo para a câmera. Todas as leituras são do host lendo os dados de volta da câmera. (Fonte de dados: Omron)

A câmera é muito versátil e é facilmente configurada através de um cabo conectado à porta mini USB 2.0. Cada pessoa a ser identificada é chamada de Usuário, e é identificada por um ID de usuário de 2 bytes. Todos os dados de identificação do usuário são escritos primeiro no B5T-007001 pelo host e incluem uma imagem em escala de cinza do usuário.

Uma coleção de usuários é denominada como um Álbum. São suportados até 100 usuários no Álbum. O B5T-007001 armazena todos os dados do Álbum, juntamente com todos os outros dados de configuração, em RAM na placa da câmera. Durante a operação, os dados armazenados do Álbum na RAM são usados para detecção.

A câmera tem memória flash na placa para armazenamento de backup do álbum. O comando Save Album On Flash grava os dados do álbum de todos os usuários armazenados na RAM para a memória flash. Os dados da flash só são carregados na memória RAM da câmera durante sua inicialização. Se durante a operação, o firmware do host precisar recarregar os dados da flash para a RAM da câmera, ele teria que reiniciar o B5T-007001 com um desliga e liga do hardware.

O Execute Detection Command (04h) é usado para executar os vários algoritmos de detecção embutidos, com base no conteúdo do campo de Dados de Comando. Para cada pessoa detectada no campo de visão da câmera, um ou todos os dez Comandos de Detecção seguintes podem ser executados:

  1. Comando de detecção do corpo humano - Detecta a metade superior do corpo humano, identificada pelas coordenadas do centro do corpo.
  2. Comando de detecção de mãos - Detecta as mãos abertas, identificadas pelas coordenadas do centro da mão.
  3. Comando de detecção de faces - Detecta até 100 faces, identificadas por uma aproximação das coordenadas do ponto central.
  4. Comando de estimativa da direção das faces - Estima a direção das faces detectadas, apresentadas como os ângulos de guinada (esquerda, direita), inclinação (para baixo, para cima) e rotação (sentido anti-horário, sentido horário).
  5. Comando de estimativa de idade - Estima a idade das faces detectadas de 0 a 75 anos de idade.
  6. Comando de estimativa de gênero - Estima o gênero das faces detectadas (masculino, feminino).
  7. Comando de estimativa do Olhar - Estima a direção do olhar das faces detectadas, apresentadas como guinada (esquerda, direita) e inclinação (para baixo, para cima).
  8. Comando de estimativa de piscada - Estima o grau de piscada de cada olho das faces detectadas, onde 1 = olho está totalmente aberto e 1000 = totalmente fechado.
  9. Comando de estimativa de expressão - Estima a expressão emocional das faces detectadas, com resultados expressos como sendo neutras, felicidade, surpresa, raiva e tristeza.
  10. Comando de reconhecimento facial - Reconhece faces detectadas em comparação com faces armazenadas. O resultado retorna o ID do usuário da face, com maior probabilidade de corresponder à face que está sendo detectada.

Todos os locais são identificados por coordenadas [x,y], onde o canto superior esquerdo da imagem é [0,0]. Para cada resultado há um grau de confiança associado de 0% a 100%, expresso como um número decimal de 0 a 1000.

A câmera suporta uma função de Saída de Imagem, destinada principalmente como um auxílio de depuração para o desenvolvedor ao configurar e apontar a câmera. Com 320 x 240 pixels, a resolução é insuficiente para ser usada como monitor de segurança. Uma segunda câmera de alta resolução é recomendada se a transmissão de vídeo for necessária.

Antes de colocar a câmera em uma aplicação, ela deve primeiro ser configurada em um ambiente de desenvolvimento. O B5T-007001 vem com um software que permite que um PC faça interface com ele através de uma porta USB. O software para PC também é usado com o B5T-007001 para identificar e registrar usuários no Álbum. Como discutido anteriormente nas noções básicas de reconhecimento facial, as fotos de rosto dos usuários devem mostrar claramente as principais características do nariz, olhos, orelhas e queixo (Figura 2).

Imagem da interface do usuário do PC para a câmera de reconhecimento facial Omron B5T-007001

Figura 2: a interface do usuário do PC para a câmera de reconhecimento facial Omron B5T-007001 é recomendada para avaliação e desenvolvimento dela. Também serve como uma aplicação do usuário para armazenar, alterar e excluir dados do Álbum. (Fonte da imagem: Omron)

Adicionando reconhecimento facial a um sistema de microcontrolador

O B5T-007001 pode fazer interface com um microcontrolador por meio de USB ou UART. A interface UART suporta uma taxa máxima de transmissão de 921600 bits/s e a interface USB 2.0 suporta 480 Mbits/s. Note que a câmera não suporta o uso de ambas as interfaces ao mesmo tempo.

Embora o microcontrolador precise suportar E/S básicas para ser útil com o B5T-007001, o desenvolvimento mais avançado pode exigir o processamento de imagens ou o gerenciamento de várias câmeras.

Para tais aplicações, o microcontrolador STM32F469 Arm® Cortex®-M4F da STMicroelectronics suporta quatro UARTs padrão e tem uma interface USB 2.0 com camada física (PHY) na placa para economizar no espaço e na quantidade de componentes (Figura 3). O microcontrolador também tem um MIPI® Alliance D-PHY no chip para dar suporte ao MIPI® CSI-2 e ao DSI-2.

Para processamento de vídeo, o núcleo Arm STM32F469 funciona a 180 MHz. Também suporta o processamento de imagens por hardware através de um Chrom-ART Accelerator™ separado. Este é um acelerador gráfico que aumenta a velocidade das transformações de cor, ao mesmo tempo em que realiza operações rápidas de movimentação de memória de bloco. O STM32F469 tem uma interface de 128 bits para os 2 Mbytes de flash com uma fila de instruções pré-busca e um cache de ramificação, permitindo 0 estados de espera de acesso à memória flash a uma velocidade de CPU de 180 MHz.

Diagrama do microcontrolador STMicroelectronics STM32F469

Figura 3: o microcontrolador STM32F469 tem duas portas USB 2.0 e oito portas seriais, que podem facilmente fazer interface com o B5T-007001 e ainda têm desempenho suficiente para suportar o processamento de imagens. (Fonte de imagem: STMicroelectronics)

O STM32F469 pode fazer interface com o B5T-007001 através de uma das duas interfaces USB 2.0. A velocidade da interface USB 2.0 é especialmente perceptível ao ler e escrever dados do álbum entre o host STM32F469 e a câmera. Com quatro interfaces UART, quatro interfaces USART e duas portas USB 2.0, o STM32F469 pode fazer interface com até dez B5T-007001s.

O STM32F469 também possui uma interface de cartão de memória externa SDMMC (Figura 4). Isto funciona com uma variedade de cartões flash, como cartões comerciais microSD e MMC e é útil para o transporte de dados do Álbum. Por exemplo, um B5T-007001 com interface a um PC pode ser usado para tirar fotos de todos os usuários que precisam ser identificados. O PC pode então armazenar os dados do álbum em um cartão de memória flash, que por sua vez pode ser inserido no computador de placa única (SBC) STM32F469 e usado como dados atualizados do álbum.

Diagrama da interface do cartão de memória externa STM32F469 da STMicroelectronics

Figura 4: a interface do cartão de memória externa STM32F469 é útil para o transporte de dados, tais como dados atualizados do Álbum a partir de um PC. (Fonte da imagem: Omron)

Usando os comandos listados na Tabela 2, o STM32F469 e o B5T-007001 podem ser usados como um sistema autônomo de monitoramento de segurança. Ao executar o Comando de Reconhecimento Facial, o STM32F469 pode identificar pessoas conhecidas ou desconhecidas na área de captura da câmera. O firmware do microcontrolador pode comparar os IDs de usuário retornados de pessoas identificadas com uma tabela interna de pessoas armazenadas no microcontrolador.

Quando os IDs de usuário conhecidos são equivalentes, o STM32F469 pode usar qualquer um de seus vários periféricos para realizar uma ação como, por exemplo, soar um alerta ou abrir uma porta. O microcontrolador tem uma porta Ethernet que pode conectar o dispositivo a uma rede, permitindo que ele envie um e-mail com base nos IDs de usuário correspondentes.

O microcontrolador STM32F469 também possui um controlador TFT LCD para controlar um display LCD colorido externo. Entretanto, para expansão adicional de vídeo, a interface compatível com MIPI® DSI pode ser usada para conectar a câmeras de vídeo com uma interface multimídia MIPI®. Isto pode permitir uma expansão posterior, adicionando outra câmera para transmissão de vídeo e processamento adicional. Embora isto acrescente um nível de complexidade muito maior, pode realmente expandir as capacidades de um sistema de segurança.

O microcontrolador é suportado pela placa de testes STM32469I-EVAL, que permite uma avaliação rápida de todos os recursos do microcontrolador. A placa de avaliação também tem um display LCD que pode ser usado para exibir vídeos do B5T-007001.

Imagem do kit de avaliação STM32469I-EVAL da STMicroelectronics

Figura 5: o STM32469I-EVAL é um kit de avaliação completo para o microcontrolador STM32F469 e pode facilmente fazer interface com o B5T-007001, usando qualquer uma de suas portas USB, UART ou USART. (Fonte de imagem: STMicroelectronics)

Conclusão

O hardware pronto para uso é eficaz, pois facilita a adição de reconhecimento facial a projetos de sistemas embarcados, incorporando os algoritmos necessários no firmware da placa da câmera. Uma interface de comando simples permite o desenvolvimento rápido do firmware do microcontrolador para interação com a placa, sem a necessidade de aprender os detalhes do processamento da imagem.

 
DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

About this author

Image of Bill Giovino

Bill Giovino

Bill Giovino is an Electronics Engineer with a BSEE from Syracuse University, and is one of the few people to successfully jump from design engineer, to field applications engineer, to technology marketing.

For over 25 years Bill has enjoyed promoting new technologies in front of technical and non-technical audiences alike for many companies including STMicroelectronics, Intel, and Maxim Integrated. While at STMicroelectronics, Bill helped spearhead the company’s early successes in the microcontroller industry. At Infineon Bill orchestrated the company’s first microcontroller design wins in U.S. automotive. As a marketing consultant for his company CPU Technologies, Bill has helped many companies turn underperforming products into success stories.

Bill was an early adopter of the Internet of Things, including putting the first full TCP/IP stack on a microcontroller. Bill is devoted to the message of “Sales Through Education” and the increasing importance of clear, well written communications in promoting products online. He is moderator of the popular LinkedIn Semiconductor Sales & Marketing Group and speaks B2E fluently.

About this publisher

DigiKey's North American Editors