IA con Raspberry Pi 5: Detección y conteo de personas en tiempo real

EN146 - IA con Raspberry Pi 5 detección y conteo de personas en tiempo real

Introduccion

El uso de inteligencia artificial en dispositivos embebidos ha abierto la puerta a soluciones cada vez más eficientes y autónomas, capaces de procesar información en tiempo real sin depender de la nube.

Uno de los casos de uso más interesantes es el conteo de personas mediante visión artificial, una aplicación ampliamente utilizada en control de aforo, análisis de flujo de clientes y sistemas de seguridad.

En este proyecto se implementa un sistema de conteo de personas utilizando una Raspberry Pi 5, combinada con un módulo de aceleración de inteligencia artificial (AI HAT +26 TOPS) y una cámara oficial optimizada para visión por computadora. Además, se integran elementos clave como un sistema de enfriamiento activo y un módulo UPS para garantizar estabilidad y funcionamiento continuo.

A lo largo de esta guía se presenta la arquitectura del sistema, los componentes utilizados y el funcionamiento general del algoritmo de detección y conteo en tiempo real.

Materiales

Instalación de la AI HAT+

  1. Comenzamos instalando el Active Cooler en nuestra tarjeta Raspberry Pi 5, conectando con precaución el conector JST del ventilador en su lugar correspondiente.
  2. Una vez instalada, comenzamos a armar por separado el Al HAT+ 26 TOPS colocandole sus postes. Colocamos el Cabezal GPIO 2 x 20p en la Raspberry Pi 5, sobreponemos la Al HAT en la tarjeta y damos una ligera presión.
  3. Aseguramos los postes de la AI HAT con tornillos desde la parte de abajo de la UPS HAT 18650 
  4. Con mucha precaución conectamos el cable PCIe de la Al HAT en el conector de la Raspberry Pi 5.
  5. Procedemos a conectar la Cámara AI en un puerto de entrada de camara de la Raspberry Pi 5.
  6. Y finalizamos conectando las 4 baterias 18650 en la UPS HAT y listo ya nuestro sistema listo para usarse y programarse.

Configuración de Software

Una vez que tenemos la instalación completa de nuestras tarjetas debemos tener en consideracion ciertos requisitos que son necesarios para que la AI HAT pueda trabajar al 100%:

  • Sistema Operativo. Para ejecutar modelos de IA se requiere una Raspberry Pi 5 con una instalación de Raspberry Pi OS de 64 bits (Trixie). 
  • Hardware Compatible con IA. Se recomienda una Raspberry Pi AI HAT+ o AI HAT+ 2, ambas con un módulo Hailo integrado. (En nuestro caso usaremos una AI HAT+) y una AI camara de Raspberry Pi.

Ahora bien, a grandes rasgos, antes de ejecutar modelos de visión IA o modelos GenAI en su Raspberry Pi 5, debe configurar el software necesario.

En términos generales, esto consiste en realizar el siguiente orden de tareas:

  1. Habilitar PCIe Gen 3.0. Configura la interfaz PCIe para permitir que la NPU de Hailo se comunique a máxima velocidad.
  2. Actualizar el sistema operativo de Raspberry Pi. Asegúrate de que los paquetes de tu sistema operativo Raspberry Pi estén completamente actualizados.
  3. Instale las dependencias necesarias. Instalar las dependencias de software necesarias que permitan al sistema operativo (SO) y a las aplicaciones detectar, comunicarse y ejecutar modelos de IA en la NPU de Hailo.
  4. Reinicia y verifica. Comprueba que tu hardware de IA se detecta correctamente y está listo para usarse.

Habilitar PCIe Gen 3.0.

Por defecto, la Raspberry Pi 5 utiliza velocidades Gen 2.0 (5 GT/s) en su interfaz PCIe. Para obtener el mejor rendimiento de su NPU. Ahora para realizar la configuración debes seguir los siguientes pasos:

  • Primero, abre la interfaz de línea de comandos (CLI) de configuración de Raspberry Pi; en la terminal de Raspberry Pi, ejecuta el siguiente comando:
sudo raspi-config

A continuación, desde la interfaz de línea de comandos de configuración, complete los siguientes pasos:

  1. Seleccionar Advanced Options > PCIe Speed.
  2. Seleccione esta opción Yes para habilitar el modo PCI Gen 3.0.
  3. Seleccione esta opción Finish para salir de la interfaz de línea de comandos de configuración.
  4. Reinicia tu Raspberry Pi para que los cambios surtan efecto. Puedes hacerlo desde la Terminal con sudo reboot.

Actualizar el sistema operativo de Raspberry Pi

Asegurate de que la Raspberry Pi 5 esté ejecutando Raspberry Pi OS Trixie con el software más reciente instalado y que tenga el firmware más reciente de Raspberry Pi. Una vez verificado ejecuta los siguientes comandos uno por uno:

sudo apt update
sudo apt full-upgrade -y
sudo rpi-eeprom-update -a
sudo reboot

Instalar las dependencias necesarias

Después de actualizar su Raspberry Pi con el software y firmware más recientes de Raspberry Pi, se requieren las siguientes dependencias para utilizar la NPU:

  • El controlador de dispositivo y el firmware del kernel de Hailo.
  • Software de middleware Hailo RT.
  • Bibliotecas principales de postprocesamiento de Hailo Tappas.

La forma de instalar estas dependencias depende del hardware de IA que estés utilizando. Elige la opción de instalación adecuada para tu hardware de IA, pero te preguntaras ¿por que?, el AI HAT+ requieren un paquete diferente (hailo-all) al del AI HAT+ 2 (hailo-h10-all). Estos paquetes no pueden coexistir.

Para instalar las dependencias necesarias para el AI HAT+, abra la terminal de Raspberry Pi y ejecute los siguientes comandos:

sudo apt install dkms
sudo apt install hailo-all

Reinicia y verifica

Después de instalar las dependencias necesarias, debes reiniciar tu Raspberry Pi 5. Puedes hacerlo desde la terminal de Raspberry Pi usando el siguiente comando:

sudo reboot

Cuando tu Raspberry Pi 5 haya terminado de reiniciarse, ejecuta el siguiente comando para comprobar que todo funciona correctamente:

hailortcli fw-control identify

Si ve una salida similar a la siguiente, habrá instalado correctamente la NPU y sus dependencias de software:

IMPORTANTE: La AI HAT+ y AI HAT+ 2 podrían mostrarse <N/A> en Serial Number, Part Number y Product Name. Esto es normal y no afecta a la funcionalidad.
El comando fw-control identify intenta leer metadatos de una zona específica del chip. En muchas versiones de firmware para el AI HAT+, esos campos se dejan vacíos por defecto. Lo más importante de tu salida es esto:

  • Device Architecture: HAILO8: Confirma que el chip es reconocido.
  • Firmware Version: 4.20.0: Indica que el firmware está cargado y funcionando.

Además, puedes ejecutar un comando dmesg | grep -i hailo para comprobar los registros del kernel, que se espera que muestren algo similar a lo siguiente:

Ejecutar modelos de visión IA en Raspberry Pi 5

Ahora veremos como configurar la NPU Hailo con tu Raspberry Pi 5, de modo que las aplicaciones de cámara puedan ejecutar tareas de IA en tiempo real, como la detección de objetos, a partir de la entrada de la cámara. Las siguientes instrucciones son válidas para la  AI HAT+ y AI HAT+ 2.

Paso 1. Instalar las dependencias de la cámara.

En primer lugar, debe instalar el software de la cámara Raspberry Pi. El paquete rpicam-apps proporciona las utilidades de cámara utilizadas por Raspberry Pi OS e incluye las etapas de demostración del software de posprocesamiento Hailo necesarias para los flujos de trabajo de visión IA.
Utiliza el siguiente comando para instalar el paquete de software rpicam-apps más reciente:

sudo apt install rpicam-apps rpicam-apps-hailo-postprocess -y

A continuación, ejecute el siguiente comando para asegurarse de que la cámara funciona correctamente:

rpicam-hello

Esto inicia la cámara y muestra una ventana de vista previa durante cinco segundos. Si aparece la ventana de vista previa, la cámara está configurada correctamente.

Paso 2. Ejecutar demostraciones visuales de IA en tiempo real

Una vez que haya verificado que todo está correctamente instalado, puede ejecutar demostraciones de IA de la cámara utilizando el rpicam-apps software de la cámara. Este software implementa demostraciones de IA mediante un marco de posprocesamiento; esto utiliza redes neuronales preentrenadas para realizar inferencias de IA en fotogramas de la cámara utilizando la NPU.

Ahora bien, las siguientes demostraciones utilizan rpicam-hello, pero también puedes usar otras aplicaciones de rpicam como:

  • rpicam-vid para grabaciones de vídeo 
  • rpicam-still para imágenes fijas

IMPORTANTE: Es posible que estas aplicaciones requieran que añadas o modifiques algunas opciones de línea de comandos para que sean compatibles.

Detección de objetos

Las siguientes demostraciones de rpicam-apps, realiza la detección de objetos utilizando rpicam-hello y diferentes modelos YOLO. Cada demostración dibuja cuadros delimitadores alrededor de los objetos detectados y admite indicadores opcionales para modificar la salida

Las distintas demostraciones presentan diferentes ventajas y desventajas en cuanto a velocidad y precisión. Ejecuta los siguientes comandos para probar cada una de las demostraciones en tu Raspberry Pi 5:

ModeloDominioEtapa de postprocesamientoUso ideal
YOLOv6rpicam-hello -t 0 –post-process-file /usr/share/rpi-camera-assets/hailo_yolov6_inference.jsonDetección de objetos.Líneas de producción o cámaras que procesan muchos cuadros por segundo.
YOLOv8rpicam-hello -t 0 –post-process-file /usr/share/rpi-camera-assets/hailo_yolov8_inference.jsonDetección de objetos.Sirve para detectar objetos, segmentar imágenes y clasificar.
YOLOXrpicam-hello -t 0 –post-process-file /usr/share/rpi-camera-assets/hailo_yolox_inference.jsonDetección de objetos ligera y rápida.Dispositivos móviles donde la simplicidad de la arquitectura ahorra batería.

YOLOv6: Máxima eficiencia en latencia. Nos brinda velocidad en hardware.

YOLOv8: Es el más preciso de los tres en la actualidad. Obtienes una precisión extrema.

YOLOX: Mucho más fácil de entrenar para objetos con formas extrañas. Brinda simplicidad y robustez.

Segmentación de imágenes

La siguiente demostración de rpicam-apps utiliza rpicam-hello como un método para detectar objetos y luego segmentarlos dibujando una máscara de color en la imagen del visor. Ejecuta el siguiente comando para probar la demostración en su Raspberry Pi 5:

rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov5_segmentation.json --framerate 20
Estimación de la pose

La siguiente demostración de rpicam-apps utiliza rpicam-hello como un método para estimar la postura humana en 17 puntos, dibujando líneas que conectan los puntos detectados. Ejecuta el siguiente comando para probar la demostración en su Raspberry Pi 5:

rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov8_pose.json

Detección y conteo de personas en tiempo real

Ahora una vez configurada nuestra cámara y nuestra AI HAT+, podemos proceder con nuestro contador.

1. Dependencias para el Script de Python

Para que el script de Python pueda procesar el texto y el video sin trabarse, necesitamos estas librerías:

sudo apt install python3-opencv python3-numpy coreutils -y
  • python3-opencv: Fundamental para que el script pudiera crear la ventana, dibujar los rectángulos de detección y escribir el texto del contador en pantalla.
  • numpy: Se instala casi siempre junto con OpenCV para manejar las matrices de los píxeles de la imagen.
  • coreutils(stdbuf): Usamos el comando stdbuf para obligar a la cámara a enviar los datos en tiempo real sin guardarlos en un “buffer”, lo que evitaba que el contador se quedara trabado o con retraso.

2. Crea tu Script de Python

Crea el archivo: nano contador_pro.py y pega este código:


import subprocess
import sys
import time

# — CONFIGURACIÓN —
JSON_PATH = “/usr/share/rpi-camera-assets/hailo_yolov8_inference.json”

# Usamos stdbuf para obligar a la cámara a soltar los datos YA
comando = [
“stdbuf”, “-oL”,
“rpicam-hello”, “-t”, “0”,
“–post-process-file”, JSON_PATH,
“–viewfinder-width”, “1280”, “–viewfinder-height”, “720”,
“–lores-width”, “640”, “–lores-height”, “640”,
“–verbose”, “2”
]

print(“— CONTADOR IA ACTIVADO (MODO FLUIDO) —“)

# Lanzamos el proceso
proceso = subprocess.Popen(comando, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True, bufsize=1)

total_historico = 0
ultimo_conteo_time = 0
ESPERA_ENTRE_PERSONAS = 5 # Segundos de espera para no contar a la misma persona dos veces

try:
for linea in proceso.stdout:
# Si la línea contiene ‘person’, el chip Hailo ha visto a alguien
if “person” in linea.lower():
tiempo_actual = time.time()

# Si han pasado más de 5 segundos desde la última vez, contamos +1
if (tiempo_actual – ultimo_conteo_time) > ESPERA_ENTRE_PERSONAS:
total_historico += 1
ultimo_conteo_time = tiempo_actual
print(f”\n[NUEVA PERSONA!] Total acumulado: {total_historico}”)

sys.stdout.write(f”\rEstado: DETECTANDO… | Total: {total_historico} “)
else:
sys.stdout.write(f”\rEstado: ESPERANDO… | Total: {total_historico} “)

sys.stdout.flush()

except KeyboardInterrupt:
proceso.terminate()
print(f”\n\nCerrado. Total final: {total_historico}”)

3. Cómo ejecutarlo

  • Guarda el archivo: Ctrl + O, luego Enter.
  • Sal del editor: Ctrl + X.
  • Ejecuta con: python3 contador_pro.py

Conclusión

La integración de inteligencia artificial en sistemas embebidos, como la Raspberry Pi 5, permite desarrollar soluciones cada vez más eficientes, autónomas y aplicables a entornos reales. En este proyecto, la combinación de un HAT de IA, una cámara optimizada y una arquitectura bien definida hace posible implementar un sistema de conteo de personas en tiempo real, sin depender de servicios en la nube.

El uso de componentes como el AI HAT, el sistema de enfriamiento activo y el módulo UPS no solo mejora el rendimiento del sistema, sino que también garantiza estabilidad y operación continua, aspectos fundamentales en aplicaciones prácticas. Además, comprender cómo interactúan el hardware y los algoritmos de visión artificial permite diseñar soluciones más robustas y escalables.

En conjunto, este tipo de implementaciones demuestra que es posible llevar la inteligencia artificial de manera accesible, abriendo la puerta a múltiples aplicaciones en áreas como seguridad, análisis de flujo y automatización.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *