CV / NanoDet
NanoDet-RepVGG
reComputer R Series (CM5 + Hailo-8)
COCO-objectdetectie met 80 klassen met NanoDet-RepVGG (on-chip-NMS) op reComputer R Series met Hailo-8 of Hailo-10H.
Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.
Aan de slag
sudo docker run --rm \
--name cm5-hailo8-nanodet-repvgg \
--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-hailo8-cv/nanodet_repvgg:latest \
python web_detection.py --model_path model/nanodet_repvgg.hef --video_path video/test.mp4REST API
Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.
curl -X POST "http://<Board_IP>:8000/api/models/nanodet_repvgg/predict" \
-F "file=@test.jpg"import requests
response = requests.post(
"http://<Board_IP>:8000/api/models/nanodet_repvgg/predict",
files={"file": open("test.jpg", "rb")},
timeout=30,
)
print(response.json())Modeldetails
reComputer R Series (CM5 + Hailo-8)NanoDet-RepVGG op reComputer R Series (CM5 + Hailo-8)
NanoDet-RepVGG detecteert objecten van de 80 COCO-klassen op Hailo-8 via HailoRT. NMS draait op de chip (Hailo HPP, meta_arch=yolov8); de host verwerkt alleen de tensor na NMS. Dit is de eerste variant van de nanodet-familie (nanodet_repvgg / nanodet_repvgg_a12 / nanodet_repvgg_a1_640).
Deze pagina is bedoeld voor reComputer R Series (CM5 + Hailo-8) met een PCIe-Hailo-8-versneller.
Modelinformatie
| Eigenschap | Waarde |
|---|---|
| Architectuur | NanoDet + RepVGG |
| Taak | Objectdetectie |
| Invoer | 416x416x3 BGR (input_conversion bgr_to_rgb + normalize_in_net gecompileerd in het HEF) |
| Uitvoer | NMS-tensor op de chip, vorm na NMS 80x5x100 |
| Klassen | 80 (COCO, index vanaf 0 via meta_arch=yolov8, geen labels_offset) |
| Parameters | 6.74M |
| Bewerkingen | 11.28G |
| Nabewerking | NMS op de chip (HPP); host verwerkt tensor na NMS |
| HEF | Hailo Model Zoo v2.19.0, Hailo-8 |
De nauwkeurigheid is een referentiewaarde uit Hailo Model Zoo, geen op CM5 gemeten benchmark.
Hardware- en hostinstellingen
| Onderdeel | Waarde |
|---|---|
| Bord | reComputer R Series met Raspberry Pi CM5 |
| Versneller | Hailo-8 via PCIe, beschikbaar als /dev/hailo0 |
| Runtime | HailoRT 4.23.x |
| Python in container | 3.11, aarch64 |
Installeer de Hailo-8-pakketten op de host en controleer vóór het starten van de container of het stuurprogramma en apparaat gereed zijn:
sudo apt update
sudo apt install hailort hailort-pcie-driver python3-hailort
sudo reboot
# After reboot
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0De verwachte HailoRT-versie voor dit image is 4.23.x.
Uitvoeren met demovideo
sudo docker run --rm \
--name cm5-hailo8-nanodet-repvgg \
--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-hailo8-cv/nanodet_repvgg:latest \
python web_detection.py --model_path model/nanodet_repvgg.hef --video_path video/test.mp4Open http://<Board_IP>:8000 voor het webvoorbeeld.
USB-cameramodus
sudo docker run --rm \
--name cm5-hailo8-nanodet-repvgg \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
--device /dev/video0:/dev/video0 \
-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-hailo8-cv/nanodet_repvgg:latest \
python web_detection.py --model_path model/nanodet_repvgg.hef --camera_id 0REST-API
Voorspellingsendpoint:
POST http://<Board_IP>:8000/api/models/nanodet_repvgg/predictVoorbeeld van een afbeeldingsverzoek:
curl -X POST "http://<Board_IP>:8000/api/models/nanodet_repvgg/predict" \
-F "file=@test.jpg"| Endpoint | Methode | Doel |
|---|---|---|
/ | GET | Webvoorbeeldinterface |
/api/models/nanodet_repvgg/predict | POST | Detecties (JSON) |
/api/video_feed | GET | MJPEG-voorbeeldstream |
Implementatienotities
- Het HEF voert NMS op de chip uit (
device_pre_post_layers: nms=true, hpp=true,meta_arch=yolov8); de toepassing verwerkt alleen de tensor na NMS (volgens de officiëletf_postproc_nms) en negeert daaromnms_thresh(alleen API-compatibiliteit). - Rijen na NMS zijn
[ymin, xmin, ymax, xmax, score], genormaliseerd naar [0,1] van de 416x416-letterboxinvoer; de toepassing schaalt naar pixels en maakt de letterboxtransformatie ongedaan. normalize_in_net(ImageNet RGB mean/std) +input_conversion(bgr_to_rgb)op de chip: de toepassing gebruikt zwarte (0) letterboxopvulling en levert ruwe uint8-BGR-pixels, zonder handmatige normalisatie of cvtColor (het HEF zet BGR intern om naar RGB).- HailoRT retourneert de NMS-vstream als lijsten van wisselende lengte per klasse (NMS-by-score); de parser ondersteunt ook object/dense-indelingen. De eerste inferentie registreert het ruwe type en de vorm voor controle op hardware.
- Klassekoppeling:
cls_id(0..79) → rechtstreeks de standaardlijst van 80 COCO-klassen (meta_arch=yolov8, index vanaf 0, geen labels_offset of gaten). Leid bij verschoven labels de koppeling opnieuw af uit het eerste inferentielog. - Standaardwaarden: betrouwbaarheid 0.25, IOU 0.45 (zonder effect omdat NMS op de chip draait). Model Zoo-evaluatie gebruikt 0.05 / 0.6; verlaag de betrouwbaarheidsschuifregelaar om meer resultaten te bekijken.
Ontwikkelnotities
- Bronmodule:
src/rpi5_hailo8_nanodet_repvgg/ - Dockerfile:
docker/hailo8/nanodet_repvgg.dockerfile - Container:
ghcr.io/seeed-projects/recomputer-hailo8-cv/nanodet_repvgg:latest - De module gebruikt de HailoRT 4.23 VStreams-API en een Hailo-8-specifiek HEF.
- Familie: nanodet (varianten nanodet_repvgg / nanodet_repvgg_a12 / nanodet_repvgg_a1_640 gepland); dit is de nanodet_repvgg-build.
Invoer en uitvoer
Input: image, video, or USB camera frame. Output: COCO 80-class detection boxes with confidences, plus an annotated MJPEG preview.