inteintegrity2026-08-11

Winkelproductdetectie met Raspberry Pi 5 en Hailo-8

Detecteert schapproducten, volgt voorraadwijzigingen en toont uitnames en lage voorraad in een browserdashboard met Hailo-8 op Raspberry Pi 5.

CVObject DetectionRetailGitHub

Winkelproductdetectie met Raspberry Pi 5 en Hailo-8

Dit project gebruikt een Raspberry Pi 5 en een Hailo-8-versneller om producten in winkelschappen te detecteren, de voorraad bij te houden en uitnames en lage voorraad in de video weer te geven. Twee Hailo-8 HEF-modellen detecteren producten in het schap en producten die door een persoon worden vastgehouden. Een FastAPI/MJPEG-dashboard maakt toegang via een browser op het lokale netwerk mogelijk.

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

Functies

  • Door Hailo-8 versnelde inferentie op Raspberry Pi 5
  • Detectie van schapproducten en vastgehouden producten met twee HEF-modellen
  • Configureerbare schapregio's en toewijzing van producttypen
  • Overlay voor voorraadaantal, uitnamegebeurtenissen en lage voorraad
  • MJPEG-voorbeeld en voorraadstatus in de browser op poort 8000
  • Meegeleverde demovideo, modelbestanden en hulpmiddelen voor apparaatvalidatie
  • Opties voor native implementatie en Docker

Hardware en software

OnderdeelVereiste
BoardRaspberry Pi 5, 64-bits ARM
VersnellerHailo-8 M.2 Key M 2280
HailoRT4.23.x
Native besturingssysteem64-bits Debian of Raspberry Pi OS
ContainerruntimeDocker met arm64-ondersteuning

De hostdriver, firmware, gedeelde bibliotheek en het Python-pakket moeten compatibele HailoRT-versies gebruiken. De meegeleverde modellen zijn bedoeld voor Hailo-8 en niet voor Hailo-8L.

Snel starten met Docker

Download de vooraf gebouwde linux/arm64-image van GHCR:

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

Start de meegeleverde video en het webdashboard:

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

Open het volgende adres in een browser op hetzelfde netwerk:

text
http://<PI_IP>:8000

Het dashboard toont de geannoteerde video, inferentie-FPS, de totale voorraad en de voorraadstatus van elke schapregio.

Het project ophalen

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

Uitvoeren op Raspberry Pi OS

Installeer de afhankelijkheden voor het board en maak een virtuele Python-omgeving:

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

Start het apparaat na het installeren van de Hailo-pakketten opnieuw op als het installatieprogramma daarom vraagt. Controleer daarna de versneller, runtime, configuratie en HEF-modellen:

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

Start het browserdashboard met de meegeleverde video:

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

Voer het volgende uit om een verwerkte MP4 te maken zonder het webdashboard te starten:

bash
./scripts/run_demo.sh

Het resultaat wordt opgeslagen als outputs/restock_demo_hailo8.mp4.

De container vanuit de broncode bouwen

De repository bevat het Dockerfile en het bijpassende aarch64-wheel voor HailoRT 4.23.0 en Python 3.11. Bouw de image vanuit de hoofdmap van de repository:

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

Als HailoRT op een ander hostpad is geïnstalleerd, pas dan de twee mounts voor gedeelde bibliotheken aan en houd de versies van host en container compatibel.

Web-API

  • GET /: browserdashboard
  • GET /api/video_feed: geannoteerde MJPEG-videostream
  • GET /api/status: status van inferentie, voorraad, regio's en gebeurtenissen
  • GET /healthz: status van service en inferentie

Alleen de configuratie valideren

Gebruik --check-config om paden en de configuratiestructuur te controleren zonder HailoRT te laden:

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

Een andere video of schapindeling gebruiken

Werk configs/runtime.json bij om andere invoer- en uitvoerpaden te selecteren. Als de camerapositie, videoresolutie, schapgeometrie of productplaatsing verandert, werk dan ook de bestanden voor schapregio's en producttoewijzing onder configs/ bij.

Projectstructuur

text
pi_project/retail_shelf_detection/
├── app/                 # Startpunt voor video-inferentie
├── configs/             # Configuratie van modellen, regio's, producten en gebeurtenissen
├── input/               # Meegeleverde demovideo
├── models/hef/          # Hailo-8 HEF-modellen
├── runtime/             # HailoRT-integratie en YOLO-nabewerking
├── shelf_monitor/       # Logica voor voorraad, gebeurtenissen, regio's en tekenen
├── scripts/             # Installatie-, controle- en demoscripts
├── tools/               # Implementatiecontroles
└── web_detection.py     # FastAPI-dashboard en MJPEG-stream