Conectando la IA de borde con la detección de rostros en el OrangePi 5

Ari Mahpour
|  Creado: Noviembre 27, 2024  |  Actualizado: Enero 17, 2025
Conectando la IA de borde con la detección de rostros en el OrangePi 5

Los motores de inferencia de IA se están volviendo cada vez más populares en el borde. Encontramos algoritmos de aprendizaje automático e incluso modelos de lenguaje grandes siendo trasladados a sistemas embebidos tanto en el ámbito aficionado como comercial. En este proyecto, vamos a construir un detector de rostros en tiempo real utilizando un Orange Pi 5 impulsado por el procesador Rockchip 3588. Esto significa que, en tiempo real, detectaremos rostros humanos desde nuestro flujo de video de la webcam.

Configuración del Proyecto

Para comenzar, vamos a usar un Orange Pi 5, una webcam USB y el código en mi repositorio público. Puedes consultar Cómo empezar con el Orange Pi 5 y el procesador Rockchip RK3588 sobre cómo configurar tu Orange Pi 5. Lo que es genial de este ejemplo es que también puede ejecutarse en una PC o cualquier otro dispositivo embebido de alta potencia que ejecute Linux (por ejemplo, Raspberry Pi 5). Después de haber configurado y ejecutado tu Orange Pi 5 (u otro dispositivo), necesitaremos instalar algunas bibliotecas. Este ejemplo está diseñado alrededor de Linux (específicamente ejecutando Ubuntu), así que asumiremos que tienes acceso al gestor de paquetes Debian. Desde una terminal, ejecuta el siguiente comando:

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

Esto instalará todos los paquetes necesarios para ejecutar la demostración. Instala también el paquete de Python OpenCV usando pip:

pip3 install opencv-python

También puedes consultar el README para más pasos para validar tu configuración.

CPU vs. GPU vs. FPGA

En AI Vision con el Kria KV260 Vision AI Starter Kit, demostramos cómo construir un motor de inferencia de IA para detección de rostros usando un FPGA, pero el nivel de complejidad era extremadamente alto. En este ejemplo, vamos a explorar una manera significativamente más fácil de hacer lo mismo. Esto es más fácil porque trasladamos la complejidad a las CPU o GPU, ambas de las cuales exploraremos en este artículo. La verdadera belleza es lo bien optimizado que está OpenCV para nuestros ordenadores. Usar la biblioteca abstrae completamente todas las complejidades del aprendizaje automático que experimentamos al intentar construir nuestra propia red neuronal en un FPGA.

Visión General del Código y Ejecución del Proyecto

El código es bastante simple. Podemos desglosarlo en unos pocos pasos:

Part Insights Experience

Access critical supply chain intelligence as you design.

  1. Configurar OpenCL (es decir, determinar si se está utilizando una GPU).
  2. Cargar el Clasificador en Cascada
  3. Capturar el flujo de video y configurarlo en escala de grises
  4. Ejecutar el Clasificador en Cascada con OpenCV
  5. Si se detecta un rostro, dibujar un cuadro azul alrededor
  6. Repetir los pasos del 3 al 5 en un bucle hasta que se cumpla la condición de "terminación" (por ejemplo, presionar "q" o cerrar la ventana emergente)

La verdadera magia aquí está en el "Clasificador en Cascada" que estamos aprovechando con OpenCV. Este es una herramienta basada en aprendizaje automático para la detección de objetos que funciona a través de una serie de etapas progresivamente complejas (similar al concepto de red neuronal). Piénsalo como una línea de ensamblaje finamente ajustada, donde cada etapa tiene un trabajo: detectar características específicas como bordes, esquinas o formas. Si una región de la imagen pasa todos estos puntos de inspección, entonces se marca como un objeto detectado. Si no, se descarta temprano para ahorrar tiempo y potencia de procesamiento.

Un clasificador en cascada se trata de velocidad y eficiencia. Utiliza características predefinidas (es decir, patrones como bordes o contrastes) y los procesa por etapas, lo que lo hace perfecto para tareas en tiempo real en dispositivos con capacidades de procesamiento limitadas. Por otro lado, las redes neuronales juegan en una liga diferente. Aprenden automáticamente las características directamente de los datos, por lo que pueden manejar escenarios más complejos y variados. Sin embargo, ese poder tiene un precio: las redes neuronales exigen muchos más recursos computacionales y tiempo. Los clasificadores en cascada son rápidos y ligeros pero menos flexibles, mientras que las redes neuronales son robustas pero consumen muchos recursos. Todo se trata de elegir la herramienta adecuada para el trabajo.

En nuestro caso, llegamos a usar un modelo preentrenado, el Detector de Caras Frontales Haar (en forma de un archivo XML), que sabe exactamente qué buscar en una cara y qué filtrar. Hablando prácticamente, esto es suficiente como un ejemplo simple que hemos estado explorando. Como se mencionó anteriormente, no será tan preciso, pero aún es suficientemente bueno para la mayoría de los ejemplos simples de detección de caras.

Para ejecutar el código, todo lo que necesitas hacer es:

python3 face_detection.py --use-gpu

Omita la bandera --use-gpu si no tiene una GPU en su dispositivo (es decir, no está usando un Orange Pi 5). En este punto, debería aparecer una pequeña ventana y un cuadro azul debería aparecer sobre su rostro. En mi caso, uno apareció inmediatamente:

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: Detección de rostros en tiempo real usando OpenCV y una Webcam

Conclusión

Este proyecto demuestra lo accesible que se ha vuelto la detección de rostros en tiempo real con herramientas como OpenCV y dispositivos como el Orange Pi 5. Al aprovechar el Clasificador en Cascada ligero y eficiente (a través de la carga de un archivo XML preentrenado), hemos construido un ejemplo funcional sin las complejidades de las redes neuronales o la programación de FPGA. Aunque este enfoque tiene sus limitaciones, como el manejo de diferentes iluminaciones o ángulos, es un punto de entrada perfecto para experimentar con la IA en el borde.

Con solo unas pocas bibliotecas y una configuración mínima, puedes replicar este proyecto en un dispositivo embebido o incluso en una PC estándar. A medida que los motores de inferencia de IA continúan mejorando, espera ver modelos más sofisticados funcionando en dispositivos con recursos limitados, haciendo que la IA avanzada sea más accesible para todos. Para ver el repositorio que contiene todo el código para comenzar, visita https://gitlab.com/ai-examples/orange-pi-face-detection.

Sobre el autor / Sobre la autora

Sobre el autor / Sobre la autora

Ari es un ingeniero con una amplia experiencia en diseño, fabricación, pruebas e integración de sistemas eléctricos, mecánicos y de software. Le apasiona integrar a los ingenieros de diseño, de verificación y de pruebas para que trabajen juntos como una unidad cohesiva.

Recursos Relacionados

Documentación técnica relacionada

Volver a la Pàgina de Inicio
Thank you, you are now subscribed to updates.