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.
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 :
| Fonction | Ce qu'elle montre |
|---|---|
| Comptage par zone | Nombre de véhicules à l'intérieur de chaque zone dessinée par l'utilisateur |
| Suivi des véhicules | Un ID stable et une courte trace de mouvement pour chaque véhicule |
| Franchissement de ligne | Total 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.
Image, video, USB camera, or RTSP camera
│
▼
FastAPI backend
│
▼
YOLOv11 inference on Hailo-8
│
▼
Area count · Track · Line count
│
▼
Browser dashboardL'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.

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.

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.

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.

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 :
- Sélectionnez une source image, vidéo, caméra USB ou RTSP.
- Activez Comptage par zone, Suivi des véhicules et Comptage de ligne.
- Dessinez et enregistrez au moins une zone de comptage.
- Dessinez la ligne de franchissement à deux points.
- 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.

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
sudo apt update
sudo apt install hailo-all
sudo rebootAprès le redémarrage, vérifiez le système :
uname -m
hailortcli fw-control identify
ls /dev/hailo0L'architecture doit être aarch64 et le périphérique Hailo doit être visible.
Cloner le projet
git clone https://github.com/Hanzo-Huang/pi-ai-demos.git
cd pi-ai-demosInstaller 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.
sudo apt install curl
curl -L -O https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
bash Miniforge3-Linux-aarch64.shAutorisez l'installateur à initialiser le shell, puis fermez et rouvrez le terminal. Créez l'environnement du projet :
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 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 :
python -c "import cv2, fastapi, hailo_platform, numpy; print('Python dependencies: OK')"Démarrer l'analyse du trafic
Démarrez sans caméra USB :
python examples/cv/traffic-analytics/run.py --camera-id -1Ouvrez le tableau de bord à l'adresse :
http://PI_IP_ADDRESS:8000Pour utiliser la première caméra USB, démarrez avec :
python examples/cv/traffic-analytics/run.py --camera-id 0Pour 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 :
curl http://127.0.0.1:8000/api/healthLa 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.