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.
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.
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
| Onderdeel | Vereiste |
|---|---|
| Board | Raspberry Pi 5, 64-bits ARM |
| Versneller | Hailo-8 M.2 Key M 2280 |
| HailoRT | 4.23.x |
| Native besturingssysteem | 64-bits Debian of Raspberry Pi OS |
| Containerruntime | Docker 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:
sudo docker pull \
ghcr.io/seeed-projects/recomputer-ai-lab-project/retail_shelf_detection:latestStart de meegeleverde video en het webdashboard:
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 8000Open het volgende adres in een browser op hetzelfde netwerk:
http://<PI_IP>:8000Het dashboard toont de geannoteerde video, inferentie-FPS, de totale voorraad en de voorraadstatus van elke schapregio.
Het project ophalen
git clone https://github.com/Seeed-Projects/reComputer-AI-Lab-Project.git
cd reComputer-AI-Lab-ProjectUitvoeren op Raspberry Pi OS
Installeer de afhankelijkheden voor het board en maak een virtuele Python-omgeving:
cd pi_project/retail_shelf_detection
chmod +x scripts/*.sh
./scripts/install_rpi5.shStart 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:
./scripts/probe.sh
python3 tools/check_deployment.pyStart het browserdashboard met de meegeleverde video:
python3 web_detection.py \
--config configs/runtime.json \
--video_path input/demo.mp4Voer het volgende uit om een verwerkte MP4 te maken zonder het webdashboard te starten:
./scripts/run_demo.shHet 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:
sudo docker build \
-f docker/hailo8/retail_shelf_detection.dockerfile \
-t retail_shelf_detection:latest \
pi_project/retail_shelf_detectionAls 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 /: browserdashboardGET /api/video_feed: geannoteerde MJPEG-videostreamGET /api/status: status van inferentie, voorraad, regio's en gebeurtenissenGET /healthz: status van service en inferentie
Alleen de configuratie valideren
Gebruik --check-config om paden en de configuratiestructuur te controleren zonder HailoRT te laden:
cd pi_project/retail_shelf_detection
python3 app/infer_video_hailo.py --check-configEen 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
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