Conectando a IA de Borda com Detecção de Rosto no OrangePi 5

Ari Mahpour
|  Criada: Novembro 27, 2024  |  Atualizada: Janeiro 17, 2025
Conectando a IA de Borda com Detecção Facial no OrangePi 5

Os motores de inferência de IA estão se tornando cada vez mais populares na borda. Encontramos algoritmos de aprendizado de máquina e até modelos de linguagem de grande porte sendo transferidos para sistemas embarcados nos espaços de hobbistas e comerciais. Neste projeto, estaremos construindo um detector de rosto em tempo real usando um Orange Pi 5 alimentado pelo processador Rockchip 3588. Isso significa que vamos, em tempo real, detectar rostos humanos a partir do nosso fluxo de vídeo da webcam.

Configuração do Projeto

Para começar, vamos usar um Orange Pi 5, uma webcam USB e o código no meu repositório público. Você pode consultar Como Iniciar com o Orange Pi 5 e o Processador Rockchip RK3588 sobre como configurar seu Orange Pi 5. O que é ótimo sobre este exemplo é que ele também pode ser executado em um PC ou qualquer outro dispositivo embarcado de alta potência rodando Linux (por exemplo, Raspberry Pi 5). Depois de ter configurado e iniciado seu Orange Pi 5 (ou outro dispositivo), precisaremos instalar algumas bibliotecas. Este exemplo é projetado em torno do Linux (especificamente rodando Ubuntu), então vamos assumir que você tem acesso ao gerenciador de pacotes Debian. A partir de um terminal, execute o seguinte comando:

sudo apt update -y && sudo apt install -y python3 python3-pip libopencv-dev python3-opencv v4l-utils

Isso instalará todos os pacotes necessários para executar a demonstração. Instale também o pacote Python OpenCV usando pip:

pip3 install opencv-python

Você também pode consultar o README para mais etapas para validar sua configuração.

CPU vs. GPU vs. FPGA

Em AI Vision com o Kria KV260 Vision AI Starter Kit, demonstramos como construir um motor de inferência de IA para detecção de rostos usando um FPGA, mas o nível de complexidade era extremamente alto. Neste exemplo, vamos explorar uma maneira significativamente mais fácil de fazer a mesma coisa. Isso é mais fácil porque transferimos a complexidade para CPUs ou GPUs, ambos os quais exploraremos neste artigo. A verdadeira beleza é o quão bem otimizado o OpenCV está para nossos computadores. Usar a biblioteca abstrai completamente todas as complexidades de aprendizado de máquina que experimentamos ao tentar construir nossa própria rede neural em um FPGA.

Visão Geral do Código e Execução do Projeto

O código é bastante simples. Podemos dividi-lo em algumas etapas:

Part Insights Experience

Access critical supply chain intelligence as you design.

  1. Configure o OpenCL (ou seja, determine se uma GPU está sendo usada).
  2. Carregue o Classificador em Cascata
  3. Capture o fluxo de vídeo e ajuste para escala de cinza
  4. Execute o Cascata com o OpenCV
  5. Se um rosto for detectado, desenhe uma caixa azul ao redor dele
  6. Repita os passos 3-5 em um loop até que a condição de "matar" tenha sido atendida (por exemplo, pressionando "q" ou fechando a janela pop-up)

A verdadeira mágica aqui está no "Classificador em Cascata" que estamos aproveitando com o OpenCV. Este é uma ferramenta baseada em aprendizado de máquina para detecção de objetos que funciona através de uma série de estágios progressivamente complexos (similar ao conceito de rede neural). Pense nisso como uma linha de montagem finamente ajustada, onde cada estágio tem um trabalho: detectar características específicas como bordas, cantos ou formas. Se uma região da imagem passar por todos esses pontos de inspeção, então é marcada como um objeto detectado. Se não, é descartada cedo para economizar tempo e poder de processamento.

Um classificador em cascata é tudo sobre velocidade e eficiência. Ele usa características pré-definidas (ou seja, padrões como bordas ou contrastes) e as processa em etapas, tornando-o perfeito para tarefas em tempo real em dispositivos com capacidades de processamento limitadas. As redes neurais, por outro lado, jogam em uma liga diferente. Elas aprendem automaticamente características diretamente dos dados, então podem lidar com cenários mais complexos e variados. Esse poder, no entanto, tem um preço: as redes neurais exigem muito mais recursos computacionais e tempo. Classificadores em cascata são rápidos e leves, mas menos flexíveis, enquanto redes neurais são robustas, mas consomem muitos recursos. É tudo sobre a ferramenta certa para o trabalho.

No nosso caso, conseguimos usar um modelo pré-treinado, o Detector de Face Frontal Haar (na forma de um arquivo XML), que sabe exatamente o que procurar em um rosto e o que filtrar. Falando praticamente, isso é bom o suficiente como um exemplo simples que estamos explorando. Como mencionado acima, não será tão preciso, mas ainda é bom o suficiente para a maioria dos exemplos simples de detecção de rosto.

Para executar o código, tudo o que você precisa fazer é:

python3 face_detection.py --use-gpu

Ou ignore a flag --use-gpu se você não tem uma GPU no seu dispositivo (ou seja, não está usando um Orange Pi 5). Neste ponto, uma pequena janela deve aparecer, e uma caixa azul deve surgir sobre o seu rosto. No meu caso, uma apareceu imediatamente:

Cloud Storage and Version Control

Store your libraries and design data in one secure, accessible, and version-controlled space.

Real-time face detection using OpenCV and a Webcam
Figura 1: Detecção de rosto em tempo real usando OpenCV e uma Webcam

Conclusão

Este projeto demonstra quão acessível se tornou a detecção de rosto em tempo real com ferramentas como o OpenCV e dispositivos como o Orange Pi 5. Ao aproveitar o Classificador em Cascata leve e eficiente (por meio do carregamento de um arquivo XML pré-treinado), construímos um exemplo funcional sem as complexidades das redes neurais ou programação FPGA. Embora esta abordagem tenha suas limitações, como lidar com iluminação variada ou ângulos, é um ponto de entrada perfeito para experimentar com IA de borda.

Com apenas algumas bibliotecas e uma configuração mínima, você pode replicar este projeto em um dispositivo embarcado ou até mesmo em um PC padrão. À medida que os motores de inferência de IA continuam a melhorar, espere ver modelos mais sofisticados rodando em dispositivos com recursos limitados, tornando a IA avançada mais acessível a todos. Para visualizar o repositório contendo todo o código para começar, visite https://gitlab.com/ai-examples/orange-pi-face-detection.

Sobre o autor

Sobre o autor

Ari is an engineer with broad experience in designing, manufacturing, testing, and integrating electrical, mechanical, and software systems. He is passionate about bringing design, verification, and test engineers together to work as a cohesive unit.

Recursos relacionados

Documentação técnica relacionada

Retornar a página inicial
Thank you, you are now subscribed to updates.
Altium Need Help?