Hanzo Huang2026-09-01

Aufbau von Echtzeit-Verkehrsanalysen auf Raspberry Pi 5 mit Hailo-8

Führen Sie lokale Verkehrsanalysen auf Raspberry Pi 5 mit Hailo-8 durch. Zählen Sie Fahrzeuge in ausgewählten Bereichen, verfolgen Sie deren Bewegung und messen Sie gerichtete Linienüberschreitungen von einem Browser-Dashboard aus.

Computer VisionEdge AITrafficGithub

Aufbau von Echtzeit-Verkehrsanalysen auf Raspberry Pi 5 mit Hailo-8

Dieses Projekt verwandelt einen Raspberry Pi 5 und Hailo-8 in ein lokales Verkehrsanalysesystem. Es erkennt Fahrzeuge mit YOLOv11 und präsentiert die Ergebnisse im Browser. Sie können ein hochgeladenes Bild oder Video, eine USB-Kamera oder eine RTSP-Kamera verwenden.

1. Was ist Verkehrsanalyse?

Verkehrsanalyse fügt der Fahrzeugerkennung nützliche Regeln hinzu:

FunktionWas sie anzeigt
BereichszählungAnzahl der Fahrzeuge in jedem vom Benutzer gezeichneten Bereich
FahrzeugverfolgungEine stabile ID und eine kurze Bewegungsspur für jedes Fahrzeug
LinienüberschreitungGesamtüberschreitungen und separate Zählungen für A→B und B→A

Der Browser wird verwendet, um eine Quelle auszuwählen, Bereiche und eine Überschreitungslinie zu zeichnen und die Ergebnisse anzusehen. Die gesamte Verarbeitung verbleibt auf dem Raspberry Pi.

Der Hailo-8 führt die YOLOv11-Inferenz aus. Der Raspberry Pi übernimmt den Videoeingang, die Verfolgung, die Zählung und das Web-Dashboard.

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

Die Anwendung erkennt Fahrräder, Autos, Motorräder, Busse und Lastwagen. Ein Inferenzergebnis wird von jeder aktivierten Verkehrsfunktion gemeinsam genutzt.

Dashboard der Verkehrsanalyse

2. Drei Analysefunktionen und ihre gemeinsame Nutzung

Bereichszählung

Zeichnen Sie ein Polygon über die Straße, Einfahrt, Parkzone oder einen anderen Bereich. Ein Fahrzeug wird gezählt, wenn sich der Mittelpunkt seiner Erkennung innerhalb des gespeicherten Polygons befindet.

Sie können mehrere benannte Bereiche erstellen. Jeder Bereich hat seine eigene Gesamtzahl und Aufschlüsselung nach Fahrzeugklassen. Wenn sich Bereiche überlappen, wird ein Fahrzeug in beiden Bereichen jeweils einmal gezählt.

Fahrzeug-Bereichszählung

Fahrzeugverfolgung

Die Verfolgung weist jedem Fahrzeug eine ID zu und zeichnet eine kurze Spur dahinter. Dies macht die Richtung und den letzten Pfad jedes Fahrzeugs leicht erkennbar.

Spuren verfallen, wenn ein Fahrzeug zu lange verschwindet. Spuren werden auch nach einem großen Positionssprung gelöscht, um falsche Linien über das Bild zu vermeiden.

Fahrzeugverfolgung

Gerichtete Linienüberschreitung

Zeichnen Sie eine Linie mit den Endpunkten A und B. Wenn ein verfolgtes Fahrzeug die Linie überschreitet, aktualisiert das Dashboard:

  • Gesamtüberschreitungen
  • Überschreitungen A→B
  • Überschreitungen B→A

Jede Spur wird nur einmal gezählt. Der Fahrzeugpfad muss das gezeichnete Liniensegment kreuzen, sodass Bewegungen an anderer Stelle im Bild die Zählung nicht verändern.

Gerichtete Linienüberschreitungszählung

Alle drei zusammen verwenden

Bereichszählung, Verfolgung und Linienüberschreitung können zusammen ausgeführt werden. Sie verwenden dieselben YOLOv11-Erkennungen, sodass das Modell bei Aktivierung aller drei Funktionen nicht dreimal ausgeführt wird.

So zeigen Sie alle Funktionen an:

  1. Wählen Sie eine Bild-, Video-, USB-Kamera- oder RTSP-Quelle aus.
  2. Aktivieren Sie Bereichszählung, Fahrzeugverfolgung und Linienzählung.
  3. Zeichnen und speichern Sie mindestens einen Zählbereich.
  4. Zeichnen Sie die Zwei-Punkt-Überschreitungslinie.
  5. Wählen Sie Bild analysieren oder Analyse starten.

Das Dashboard zeigt dann die aktuelle Bereichsbelegung, Fahrzeugpfade und die gerichteten Überschreitungsgesamtwerte über denselben Verkehrsfeed an.

Bereichszählung, Verfolgung und Linienüberschreitung zusammen

3. Ausführung auf Raspberry Pi 5 mit Hailo-8

Anforderungen

  • Raspberry Pi 5 oder reComputer R20 mit 64-Bit Raspberry Pi OS Bookworm
  • Hailo-8-Beschleuniger
  • Internetzugang während der Installation
  • Ein Bild, Video, eine USB-Kamera oder eine RTSP-Kamera

HailoRT installieren und überprüfen

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

Überprüfen Sie nach dem Neustart das System:

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

Die Architektur muss aarch64 sein, und das Hailo-Gerät muss sichtbar sein.

Projekt klonen

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

Miniforge und Python 3.12 installieren

Das enthaltene HailoRT-Wheel erfordert CPython 3.12, Linux ARM64 und HailoRT 4.23. Miniforge stellt Python 3.12 bereit, ohne das System-Python zu verändern.

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

Erlauben Sie dem Installer, die Shell zu initialisieren, schließen und öffnen Sie dann das Terminal erneut. Erstellen Sie die Projektumgebung:

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 muss Version 3.12.x melden. Wenn der installierte HailoRT-Treiber nicht 4.23 ist, installieren Sie ein HailoRT-Python-Wheel, das zum Treiber passt.

Überprüfen Sie die Python-Pakete:

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

Verkehrsanalyse starten

Starten ohne USB-Kamera:

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

Öffnen Sie das Dashboard unter:

text
http://PI_IP_ADDRESS:8000

Um die erste USB-Kamera zu verwenden, starten Sie mit:

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

Für eine RTSP-Kamera starten Sie mit Kamera-ID -1, öffnen das Dashboard, geben die vollständige rtsp://- oder rtsps://-URL ein und wählen Verbinden.

Anwendung prüfen

Führen Sie in einem anderen Terminal aus:

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

Die Antwort sollte model_exists als true und hailo_platform_importable als true melden. Wenn einer der Werte false ist, überprüfen Sie, ob models/yolov11n.hef existiert und ob das HailoRT-Wheel zum Treiber, zur Python-Version und zur ARM64-Architektur passt.

Die Verkehrsanalyse ist nun bereit. Wählen Sie eine Quelle, zeichnen Sie die von den aktivierten Funktionen benötigten Hilfslinien und starten Sie die Analyse.