Hanzo Huang2026-09-01

Creación de análisis de tráfico en tiempo real en Raspberry Pi 5 con Hailo-8

Ejecute análisis de tráfico local en Raspberry Pi 5 con Hailo-8. Cuente vehículos en áreas seleccionadas, rastree su movimiento y mida cruces de línea direccionales desde un panel de control en el navegador.

Computer VisionEdge AITrafficGithub

Construcción de análisis de tráfico en tiempo real en Raspberry Pi 5 con Hailo-8

Este proyecto convierte una Raspberry Pi 5 y una Hailo-8 en un sistema local de análisis de tráfico. Detecta vehículos con YOLOv11 y presenta los resultados en un navegador. Puede usar una imagen o video cargado, una cámara USB o una cámara RTSP.

1. ¿Qué es el análisis de tráfico?

El análisis de tráfico añade reglas útiles sobre la detección de vehículos:

FunciónQué muestra
Conteo por áreaNúmero de vehículos dentro de cada área dibujada por el usuario
Seguimiento de vehículosUn ID estable y un rastro corto de movimiento para cada vehículo
Cruce de líneaTotal de cruces y conteos separados A→B y B→A

El navegador se utiliza para seleccionar una fuente, dibujar áreas y una línea de cruce, y ver los resultados. Todo el procesamiento permanece en la Raspberry Pi.

La Hailo-8 ejecuta la inferencia de YOLOv11. La Raspberry Pi maneja la entrada de video, el seguimiento, el conteo y el panel web.

text
Image, video, USB camera, or RTSP camera
             FastAPI backend
        YOLOv11 inference on Hailo-8
       Area count · Track · Line count
             Browser dashboard

La aplicación detecta bicicletas, coches, motocicletas, autobuses y camiones. Un resultado de inferencia es compartido por cada función de tráfico habilitada.

Panel de análisis de tráfico

2. Tres análisis y su uso conjunto

Conteo por área

Dibuje un polígono sobre la carretera, entrada, zona de estacionamiento u otra área. Un vehículo se cuenta cuando el centro de su detección está dentro del polígono guardado.

Puede crear varias áreas con nombre. Cada área tiene su propio total y desglose por clase de vehículo. Si las áreas se superponen, un vehículo dentro de ambas se cuenta una vez en cada área.

Conteo de vehículos por área

Seguimiento de vehículos

El seguimiento asigna a cada vehículo un ID y dibuja un rastro corto detrás de él. Esto hace que la dirección y la trayectoria reciente de cada vehículo sean fáciles de ver.

Los seguimientos expiran cuando un vehículo desaparece por demasiado tiempo. Los rastros también se limpian después de un gran salto de posición, evitando líneas incorrectas a través de la imagen.

Seguimiento de vehículos

Cruce de línea direccional

Dibuje una línea con puntos finales A y B. Cuando un vehículo rastreado cruza la línea, el panel se actualiza:

  • Cruces totales
  • Cruces A→B
  • Cruces B→A

Cada seguimiento se cuenta solo una vez. La trayectoria del vehículo debe cruzar el segmento de línea dibujado, por lo que el movimiento en otra parte del fotograma no cambia el conteo.

Conteo de cruce de línea direccional

Usar los tres juntos

El conteo por área, el seguimiento y el cruce de línea pueden ejecutarse juntos. Reutilizan las mismas detecciones de YOLOv11, por lo que habilitar los tres no ejecuta el modelo tres veces.

Para mostrar todas las funciones:

  1. Seleccione una fuente de imagen, video, cámara USB o RTSP.
  2. Habilite Conteo de área, Seguimiento de vehículos y Conteo de línea.
  3. Dibuje y guarde al menos un área de conteo.
  4. Dibuje la línea de cruce de dos puntos.
  5. Seleccione Analizar imagen o Iniciar análisis.

El panel muestra entonces la ocupación actual del área, las trayectorias de los vehículos y los totales de cruce direccional sobre la misma fuente de tráfico.

Conteo de área, seguimiento y cruce de línea juntos

3. Ejecútelo en Raspberry Pi 5 con Hailo-8

Requisitos

  • Raspberry Pi 5 o reComputer R20 con Raspberry Pi OS Bookworm de 64 bits
  • Acelerador Hailo-8
  • Acceso a Internet durante la instalación
  • Una imagen, video, cámara USB o cámara RTSP

Instalar y verificar HailoRT

bash
sudo apt update
sudo apt install hailo-all
sudo reboot

Después de reiniciar, verifique el sistema:

bash
uname -m
hailortcli fw-control identify
ls /dev/hailo0

La arquitectura debe ser aarch64, y el dispositivo Hailo debe ser visible.

Clonar el proyecto

bash
git clone https://github.com/Hanzo-Huang/pi-ai-demos.git
cd pi-ai-demos

Instalar Miniforge y Python 3.12

El wheel de HailoRT incluido requiere CPython 3.12, Linux ARM64 y HailoRT 4.23. Miniforge proporciona Python 3.12 sin cambiar el Python del sistema.

bash
sudo apt install curl
curl -L -O https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
bash Miniforge3-Linux-aarch64.sh

Permita que el instalador inicialice el shell, luego cierre y vuelva a abrir la terminal. Cree el entorno del proyecto:

bash
conda config --set auto_activate_base false
conda create --name pi-hailo python=3.12 pip -y
conda activate pi-hailo
python --version
python -m pip install -r requirements.txt
python -m pip install runtime/wheels/hailort-4.23.0-cp312-cp312-linux_aarch64.whl

Python debe reportar la versión 3.12.x. Si el controlador HailoRT instalado no es 4.23, instale un wheel de Python de HailoRT que coincida con el controlador.

Verifique los paquetes de Python:

bash
python -c "import cv2, fastapi, hailo_platform, numpy; print('Python dependencies: OK')"

Iniciar el análisis de tráfico

Inicie sin una cámara USB:

bash
python examples/cv/traffic-analytics/run.py --camera-id -1

Abra el panel en:

text
http://PI_IP_ADDRESS:8000

Para usar la primera cámara USB, inicie con:

bash
python examples/cv/traffic-analytics/run.py --camera-id 0

Para una cámara RTSP, inicie con el ID de cámara -1, abra el panel, ingrese la URL completa rtsp:// o rtsps:// y seleccione Conectar.

Verificar la aplicación

Desde otra terminal, ejecute:

bash
curl http://127.0.0.1:8000/api/health

La respuesta debe reportar model_exists como true y hailo_platform_importable como true. Si alguno es false, verifique que models/yolov11n.hef exista y que el wheel de HailoRT coincida con el controlador, la versión de Python y la arquitectura ARM64.

El análisis de tráfico ya está listo. Seleccione una fuente, dibuje las guías necesarias para las funciones habilitadas e inicie el análisis.