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.
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ón | Qué muestra |
|---|---|
| Conteo por área | Número de vehículos dentro de cada área dibujada por el usuario |
| Seguimiento de vehículos | Un ID estable y un rastro corto de movimiento para cada vehículo |
| Cruce de línea | Total 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.
Image, video, USB camera, or RTSP camera
│
▼
FastAPI backend
│
▼
YOLOv11 inference on Hailo-8
│
▼
Area count · Track · Line count
│
▼
Browser dashboardLa aplicación detecta bicicletas, coches, motocicletas, autobuses y camiones. Un resultado de inferencia es compartido por cada función de tráfico habilitada.

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.

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.

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.

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:
- Seleccione una fuente de imagen, video, cámara USB o RTSP.
- Habilite Conteo de área, Seguimiento de vehículos y Conteo de línea.
- Dibuje y guarde al menos un área de conteo.
- Dibuje la línea de cruce de dos puntos.
- 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.

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
sudo apt update
sudo apt install hailo-all
sudo rebootDespués de reiniciar, verifique el sistema:
uname -m
hailortcli fw-control identify
ls /dev/hailo0La arquitectura debe ser aarch64, y el dispositivo Hailo debe ser visible.
Clonar el proyecto
git clone https://github.com/Hanzo-Huang/pi-ai-demos.git
cd pi-ai-demosInstalar 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.
sudo apt install curl
curl -L -O https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
bash Miniforge3-Linux-aarch64.shPermita que el instalador inicialice el shell, luego cierre y vuelva a abrir la terminal. Cree el entorno del proyecto:
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.whlPython 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:
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:
python examples/cv/traffic-analytics/run.py --camera-id -1Abra el panel en:
http://PI_IP_ADDRESS:8000Para usar la primera cámara USB, inicie con:
python examples/cv/traffic-analytics/run.py --camera-id 0Para 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:
curl http://127.0.0.1:8000/api/healthLa 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.