Hanzo Huang2026-09-01

Création d'analyses de trafic en temps réel sur Raspberry Pi 5 avec Hailo-8

Exécutez des analyses de trafic locales sur Raspberry Pi 5 avec Hailo-8. Comptez les véhicules dans des zones sélectionnées, suivez leur mouvement et mesurez les franchissements de lignes directionnelles depuis un tableau de bord de navigateur.

Computer VisionEdge AITrafficGithub

Création d'une analyse du trafic en temps réel sur Raspberry Pi 5 avec Hailo-8

Ce projet transforme un Raspberry Pi 5 et un Hailo-8 en un système local d'analyse du trafic. Il détecte les véhicules avec YOLOv11 et présente les résultats dans un navigateur. Vous pouvez utiliser une image ou une vidéo téléchargée, une caméra USB ou une caméra RTSP.

1. Qu'est-ce que l'analyse du trafic ?

L'analyse du trafic ajoute des règles utiles à la détection des véhicules :

FonctionCe qu'elle montre
Comptage par zoneNombre de véhicules à l'intérieur de chaque zone dessinée par l'utilisateur
Suivi des véhiculesUn ID stable et une courte trace de mouvement pour chaque véhicule
Franchissement de ligneTotal des franchissements et comptages séparés A→B et B→A

Le navigateur permet de sélectionner une source, de dessiner des zones et une ligne de franchissement, et de visualiser les résultats. Tout le traitement reste sur le Raspberry Pi.

Le Hailo-8 exécute l'inférence YOLOv11. Le Raspberry Pi gère l'entrée vidéo, le suivi, le comptage et le tableau de bord web.

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

L'application détecte les vélos, les voitures, les motos, les bus et les camions. Un seul résultat d'inférence est partagé par toutes les fonctions de trafic activées.

Tableau de bord de l'analyse du trafic

2. Trois analyses et leur utilisation conjointe

Comptage par zone

Dessinez un polygone au-dessus de la route, de l'entrée, de la zone de stationnement ou d'une autre zone. Un véhicule est compté lorsque le centre de sa détection se trouve à l'intérieur du polygone enregistré.

Vous pouvez créer plusieurs zones nommées. Chaque zone a son propre total et une répartition par classe de véhicule. Si les zones se chevauchent, un véhicule situé dans les deux est compté une fois dans chaque zone.

Comptage de véhicules par zone

Suivi des véhicules

Le suivi attribue à chaque véhicule un ID et dessine une courte trace derrière lui. Cela permet de voir facilement la direction et le trajet récent de chaque véhicule.

Les pistes expirent lorsqu'un véhicule disparaît trop longtemps. Les traces sont également effacées après un saut de position important, ce qui évite les lignes incorrectes à travers l'image.

Suivi des véhicules

Franchissement de ligne directionnel

Dessinez une ligne avec les extrémités A et B. Lorsqu'un véhicule suivi franchit la ligne, le tableau de bord se met à jour :

  • Franchissements totaux
  • Franchissements A→B
  • Franchissements B→A

Chaque piste n'est comptée qu'une seule fois. Le chemin du véhicule doit traverser le segment de ligne dessiné, de sorte que les mouvements ailleurs dans l'image ne modifient pas le comptage.

Comptage de franchissement de ligne directionnel

Utiliser les trois ensemble

Le comptage par zone, le suivi et le franchissement de ligne peuvent fonctionner ensemble. Ils réutilisent les mêmes détections YOLOv11, donc activer les trois ne fait pas tourner le modèle trois fois.

Pour afficher toutes les fonctions :

  1. Sélectionnez une source image, vidéo, caméra USB ou RTSP.
  2. Activez Comptage par zone, Suivi des véhicules et Comptage de ligne.
  3. Dessinez et enregistrez au moins une zone de comptage.
  4. Dessinez la ligne de franchissement à deux points.
  5. Sélectionnez Analyser l'image ou Démarrer l'analyse.

Le tableau de bord affiche alors l'occupation actuelle de la zone, les trajectoires des véhicules et les totaux de franchissement directionnel sur le même flux de trafic.

Comptage par zone, suivi et franchissement de ligne ensemble

3. Exécutez-le sur Raspberry Pi 5 avec Hailo-8

Prérequis

  • Raspberry Pi 5 ou reComputer R20 avec Raspberry Pi OS Bookworm 64 bits
  • Accélérateur Hailo-8
  • Accès Internet pendant l'installation
  • Une image, une vidéo, une caméra USB ou une caméra RTSP

Installer et vérifier HailoRT

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

Après le redémarrage, vérifiez le système :

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

L'architecture doit être aarch64 et le périphérique Hailo doit être visible.

Cloner le projet

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

Installer Miniforge et Python 3.12

La wheel HailoRT incluse nécessite CPython 3.12, Linux ARM64 et HailoRT 4.23. Miniforge fournit Python 3.12 sans modifier le Python système.

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

Autorisez l'installateur à initialiser le shell, puis fermez et rouvrez le terminal. Créez l'environnement du projet :

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 doit indiquer la version 3.12.x. Si le pilote HailoRT installé n'est pas 4.23, installez une wheel Python HailoRT correspondant au pilote.

Vérifiez les paquets Python :

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

Démarrer l'analyse du trafic

Démarrez sans caméra USB :

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

Ouvrez le tableau de bord à l'adresse :

text
http://PI_IP_ADDRESS:8000

Pour utiliser la première caméra USB, démarrez avec :

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

Pour une caméra RTSP, démarrez avec l'ID de caméra -1, ouvrez le tableau de bord, entrez l'URL complète rtsp:// ou rtsps:// et sélectionnez Connecter.

Vérifier l'application

Depuis un autre terminal, exécutez :

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

La réponse doit indiquer model_exists comme true et hailo_platform_importable comme true. Si l'un d'eux est false, vérifiez que models/yolov11n.hef existe et que la wheel HailoRT correspond au pilote, à la version de Python et à l'architecture ARM64.

L'analyse du trafic est maintenant prête. Sélectionnez une source, dessinez les guides nécessaires pour les fonctions activées et démarrez l'analyse.