CV / NanoDet
NanoDet-RepVGG-a1-640
reComputer R Series (CM5 + Hailo-10H)
COCO-Objekterkennung mit 80 Klassen mit nanodet_repvgg_a1_640 (On-Chip-NMS) auf reComputer R Series mit Hailo-8 oder Hailo-10H.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Erste Schritte
sudo docker run --rm \
--name cm5-hailo10h-nanodet-repvgg-a1-640 \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo10h-cv/nanodet_repvgg_a1_640:latest \
python web_detection.py --model_path model/nanodet_repvgg_a1_640.hef --video_path video/test.mp4REST API
Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.
curl -X POST "http://<Board_IP>:8000/api/models/nanodet_repvgg_a1_640/predict" \
-F "file=@test.jpg"import requests
response = requests.post(
"http://<Board_IP>:8000/api/models/nanodet_repvgg_a1_640/predict",
files={"file": open("test.jpg", "rb")},
timeout=30,
)
print(response.json())Modelldetails
reComputer R Series (CM5 + Hailo-10H)NanoDet-RepVGG-a1-640 auf reComputer CM5 + Hailo-10H
NanoDet-RepVGG-a1-640 führt die COCO-Objekterkennung mit 80 Klassen auf dem
Hailo-10H mit On-Chip-NMS (Hailo HPP) aus. Gleiche Basis
(base/nanodet.yaml) wie nanodet_repvgg, aber mit größerem RepVGG-A1-Backbone
und 640x640-Eingabe für höhere Genauigkeit. Das HEF liefert bereits
dekodierte Erkennungen und die App analysiert nur den Post-NMS-Tensor.
Portiert aus dem validierten Hailo-8-Modul rpi5_hailo8_nanodet_repvgg_a1_640;
der Executor verwendet den Multi-Output-create_infer_model-Wrapper von
HailoRT 5.1.1 mit FLOAT32-Ausgaben.
Modellinformationen
| Eigenschaft | Wert |
|---|---|
| Architektur | NanoDet + RepVGG-A1 (base/nanodet.yaml) |
| Aufgabe | Objekterkennung |
| Eingabe | 640x640x3 (Größe beim Start aus dem HEF gelesen) |
| Ausgabe | On-Chip-NMS-Tensor, Post-NMS-Form 80x5x100 |
| Klassen | 80 (COCO, ab 0 indiziert via meta_arch=yolov8) |
| HEF | Hailo Model Zoo v5.4.0, Hailo-10H (7.9 MB) |
Hardware- und Host-Setup
| Punkt | Wert |
|---|---|
| Board | reComputer R Series mit Raspberry Pi CM5 |
| Beschleuniger | Hailo-10H über PCIe, als /dev/hailo0 verfügbar |
| Host-Treiber | apt-Paket hailo-h10-all |
| Runtime | HailoRT 5.1.1 |
| Python im Container | 3.13, aarch64 |
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot
# After reboot
hailortcli fw-control identify
ls /dev/hailo0Mit Demo-Video ausführen
sudo docker run --rm \
--name cm5-hailo10h-nanodet-repvgg-a1-640 \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo10h-cv/nanodet_repvgg_a1_640:latest \
python web_detection.py --model_path model/nanodet_repvgg_a1_640.hef --video_path video/test.mp4Öffnen Sie http://<Board_IP>:8000 für die Web-Vorschau. Für eine USB-Kamera /dev/video0 mounten und --video_path video/test.mp4 durch --camera_id 0 ersetzen.
REST API
curl -X POST "http://<Board_IP>:8000/api/models/nanodet_repvgg_a1_640/predict" \
-F "file=@test.jpg"| Endpoint | Methode | Beschreibung |
|---|---|---|
/health | GET | Health-Check |
/api/models/nanodet_repvgg_a1_640/predict | POST | Erkennungen (JSON) |
/api/video_feed | GET | MJPEG-Vorschau-Stream |
Implementierungshinweise
- Das HEF führt NMS on-chip aus; die App analysiert nur den Post-NMS-Tensor,
daher wird
nms_threshignoriert (nur API-Parität). - Post-NMS-Zeilen sind
[ymin, xmin, ymax, xmax, score], normalisiert auf [0,1] der Letterbox-Eingabe; die App skaliert auf Pixel und hebt das Letterbox auf. - Normalisierung/Farbkonvertierung ist in das HEF kompiliert; die App macht das Letterbox und liefert rohe uint8-Pixel.
- HailoRT kann den NMS-vstream als Ragged-Liste pro Klasse (NMS-by-score) zurückgeben; der Parser unterstützt zusätzlich Object/Dense-Layouts. Die erste Inferenz protokolliert Typ/Form roh zur Verifikation.
- Ausgaben werden als
FormatType.FLOAT32angefordert (vom SDK dequantisiert); das Lesen roher quantisierter Puffer ergibt Werte in Zehntausenden und null gültige Erkennungen. - Klassen-Mapping:
cls_id(0..79) → Standard-COCO-80-Klassenliste direkt.
Modellquelle
nanodet_repvgg_a1_640.hef ist der Hailo-10H-Build von Hailo Model Zoo
v5.4.0 — URL, SHA256 und Größe sind im Repository
(src/hailo10h_nanodet_repvgg_a1_640/model/README.md) verzeichnet.
Eingaben und Ausgaben
Input: image, video, or USB camera frame. Output: COCO 80-class detection boxes with confidences, plus an annotated MJPEG preview.