inteintegrity2026-08-11

Regalwarenerkennung mit Raspberry Pi 5 und Hailo-8

Erkennt Regalwaren, verfolgt Bestandsänderungen und zeigt Entnahmen sowie niedrige Bestände in einem Browser-Dashboard mit Hailo-8 auf dem Raspberry Pi 5 an.

CVObject DetectionRetailGitHub

Regalwarenerkennung mit Raspberry Pi 5 und Hailo-8

Dieses Projekt verwendet einen Raspberry Pi 5 und einen Hailo-8-Beschleuniger, um Produkte in Verkaufsregalen zu erkennen, den Lagerbestand zu verfolgen und Entnahmen sowie niedrige Bestände im Video anzuzeigen. Zwei Hailo-8-HEF-Modelle erkennen Produkte im Regal und Produkte, die von einer Person gehalten werden. Ein FastAPI/MJPEG-Dashboard ermöglicht den Zugriff über einen Browser im lokalen Netzwerk.

Quellcode: https://github.com/Seeed-Projects/reComputer-AI-Lab-Project/tree/main/pi_project/retail_shelf_detection

Funktionen

  • Hailo-8-beschleunigte Inferenz auf dem Raspberry Pi 5
  • Erkennung von Regalwaren und gehaltenen Produkten mit zwei HEF-Modellen
  • Konfigurierbare Regalbereiche und Zuordnung von Produkttypen
  • Einblendung von Bestandszahl, Entnahmeereignissen und Warnungen bei niedrigem Bestand
  • Browserbasierte MJPEG-Vorschau und Bestandsanzeige auf Port 8000
  • Enthaltenes Demovideo, Modelldateien und Werkzeuge zur Gerätevalidierung
  • Native Bereitstellung und Docker-Bereitstellung

Hardware und Software

KomponenteAnforderung
BoardRaspberry Pi 5, 64-Bit-ARM
BeschleunigerHailo-8 M.2 Key M 2280
HailoRT4.23.x
Natives Betriebssystem64-Bit-Debian oder Raspberry Pi OS
Container-LaufzeitDocker mit arm64-Unterstützung

Host-Treiber, Firmware, gemeinsam genutzte Bibliothek und Python-Paket müssen kompatible HailoRT-Versionen verwenden. Die enthaltenen Modelle sind für Hailo-8 und nicht für Hailo-8L vorgesehen.

Schnellstart mit Docker

Laden Sie das vorgefertigte linux/arm64-Image aus GHCR:

bash
sudo docker pull \
  ghcr.io/seeed-projects/recomputer-ai-lab-project/retail_shelf_detection:latest

Starten Sie das enthaltene Video und das Web-Dashboard:

bash
sudo docker run --rm \
  --name rpi5-hailo8-retail-shelf-detection \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  -v /usr/lib/libhailort.so.4.23.0:/usr/lib/libhailort.so.4.23.0:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-ai-lab-project/retail_shelf_detection:latest \
  python web_detection.py \
    --config configs/runtime.json \
    --video_path input/demo.mp4 \
    --host 0.0.0.0 \
    --port 8000

Öffnen Sie die folgende Adresse in einem Browser im selben Netzwerk:

text
http://<PI_IP>:8000

Das Dashboard zeigt das annotierte Video, die Inferenz-FPS, den Gesamtbestand und den Bestandsstatus jedes Regalbereichs.

Projekt beziehen

bash
git clone https://github.com/Seeed-Projects/reComputer-AI-Lab-Project.git
cd reComputer-AI-Lab-Project

Unter Raspberry Pi OS ausführen

Installieren Sie die Board-Abhängigkeiten und erstellen Sie eine virtuelle Python-Umgebung:

bash
cd pi_project/retail_shelf_detection
chmod +x scripts/*.sh
./scripts/install_rpi5.sh

Starten Sie das Gerät nach der Installation der Hailo-Pakete neu, falls das Installationsprogramm dazu auffordert. Prüfen Sie anschließend Beschleuniger, Laufzeit, Konfiguration und HEF-Modelle:

bash
./scripts/probe.sh
python3 tools/check_deployment.py

Starten Sie das Browser-Dashboard mit dem enthaltenen Video:

bash
python3 web_detection.py \
  --config configs/runtime.json \
  --video_path input/demo.mp4

Führen Sie den folgenden Befehl aus, um eine verarbeitete MP4-Datei ohne Web-Dashboard zu erzeugen:

bash
./scripts/run_demo.sh

Das Ergebnis wird unter outputs/restock_demo_hailo8.mp4 gespeichert.

Container aus dem Quellcode erstellen

Das Repository enthält das Dockerfile und das passende aarch64-Wheel für HailoRT 4.23.0 und Python 3.11. Erstellen Sie das Image im Stammverzeichnis des Repositorys:

bash
sudo docker build \
  -f docker/hailo8/retail_shelf_detection.dockerfile \
  -t retail_shelf_detection:latest \
  pi_project/retail_shelf_detection

Wenn HailoRT auf dem Host unter einem anderen Pfad installiert ist, passen Sie die beiden Einbindungen der gemeinsam genutzten Bibliotheken an und achten Sie auf kompatible Versionen in Host und Container.

Web-API

  • GET /: Browser-Dashboard
  • GET /api/video_feed: annotierter MJPEG-Videostream
  • GET /api/status: Status von Inferenz, Bestand, Bereichen und Ereignissen
  • GET /healthz: Zustand von Dienst und Inferenz

Nur die Konfiguration prüfen

Mit --check-config können Pfade und Konfigurationsstruktur geprüft werden, ohne HailoRT zu laden:

bash
cd pi_project/retail_shelf_detection
python3 app/infer_video_hailo.py --check-config

Anderes Video oder Regallayout verwenden

Ändern Sie configs/runtime.json, um andere Ein- und Ausgabepfade auszuwählen. Wenn sich Kameraposition, Videoauflösung, Regalgeometrie oder Produktplatzierung ändern, müssen auch die Dateien für Regalbereiche und Produktzuordnung unter configs/ angepasst werden.

Projektstruktur

text
pi_project/retail_shelf_detection/
├── app/                 # Einstiegspunkt für die Videoinferenz
├── configs/             # Modell-, Bereichs-, Produkt- und Ereigniskonfiguration
├── input/               # Enthaltenes Demovideo
├── models/hef/          # Hailo-8-HEF-Modelle
├── runtime/             # HailoRT-Integration und YOLO-Nachverarbeitung
├── shelf_monitor/       # Logik für Bestand, Ereignisse, Bereiche und Darstellung
├── scripts/             # Installations-, Prüf- und Demoskripte
├── tools/               # Bereitstellungsprüfungen
└── web_detection.py     # FastAPI-Dashboard und MJPEG-Stream