CV / NanoDet
NanoDet-RepVGG-a1-640
reComputer R Series (CM5 + Hailo-8)
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-hailo8-nanodet-repvgg-a1-640 \
--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_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-8)NanoDet-RepVGG-a1-640 auf reComputer R Series (CM5 + Hailo-8)
nanodet_repvgg_a1_640 erkennt über HailoRT auf Hailo-8 Objekte der 80 COCO-Klassen. Gleiche Basis (base/nanodet.yaml) wie nanodet_repvgg, jedoch mit größerem RepVGG-A1-Backbone und 640x640-Eingabe für höhere Genauigkeit. NMS läuft auf dem Chip (Hailo HPP, meta_arch=yolov8); der Host analysiert nur den Post-NMS-Tensor.
Diese Seite richtet sich an reComputer R Series (CM5 + Hailo-8) mit einem PCIe-Hailo-8-Beschleuniger.
Modellinformationen
| Eigenschaft | Wert |
|---|---|
| Architektur | NanoDet + RepVGG-A1 (base/nanodet.yaml) |
| Aufgabe | Objekterkennung |
| Eingabe | 640x640x3 BGR (input_conversion bgr_to_rgb + normalize_in_net) |
| Ausgabe | NMS-Tensor auf dem Chip, Post-NMS-Form 80x5x100 |
| Klassen | 80 (COCO, 0-basiert über meta_arch=yolov8) |
| Parameter | 10.79M |
| Operationen | 42.8G |
| Nachverarbeitung | NMS auf dem Chip (HPP); Host analysiert Post-NMS-Tensor |
| HEF | Hailo Model Zoo v2.19.0, Hailo-8 |
Der Genauigkeitswert ist eine Referenz aus Hailo Model Zoo, kein auf CM5 gemessener Benchmark.
Hardware- und Hosteinrichtung
| Eintrag | Wert |
|---|---|
| Board | reComputer R Series mit Raspberry Pi CM5 |
| Beschleuniger | Hailo-8 über PCIe, verfügbar als /dev/hailo0 |
| Laufzeit | HailoRT 4.23.x |
| Python im Container | 3.11, aarch64 |
Installieren Sie die Hailo-8-Pakete auf dem Host und prüfen Sie vor dem Containerstart, ob Treiber und Gerät bereit sind:
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/hailo0Die für dieses Image erwartete HailoRT-Version ist 4.23.x.
Mit Demovideo ausführen
sudo docker run --rm \
--name cm5-hailo8-nanodet-repvgg-a1-640 \
--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_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 Webvorschau.
USB-Kameramodus
sudo docker run --rm \
--name cm5-hailo8-nanodet-repvgg-a1-640 \
--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_a1_640:latest \
python web_detection.py --model_path model/nanodet_repvgg_a1_640.hef --camera_id 0REST-API
Vorhersage-Endpunkt:
POST http://<Board_IP>:8000/api/models/nanodet_repvgg_a1_640/predictBeispiel einer Bildanfrage:
curl -X POST "http://<Board_IP>:8000/api/models/nanodet_repvgg_a1_640/predict" \
-F "file=@test.jpg"| Endpunkt | Methode | Zweck |
|---|---|---|
/ | GET | Webvorschau-Oberfläche |
/api/models/nanodet_repvgg_a1_640/predict | POST | Erkennungen (JSON) |
/api/video_feed | GET | MJPEG-Vorschaustream |
Implementierungshinweise
- Gleiche Basis (base/nanodet.yaml) und NMS-Nachverarbeitung auf dem Chip (HPP) wie nanodet_repvgg; nur Backbone (RepVGG-A1) und Eingabegröße (640x640) unterscheiden sich.
- Das HEF führt NMS auf dem Chip aus (
device_pre_post_layers: nms=true, hpp=true,meta_arch=yolov8); die Anwendung analysiert nur den Post-NMS-Tensor.nms_threshwird deshalb ignoriert (nur API-Kompatibilität). - Post-NMS-Zeilen sind
[ymin, xmin, ymax, xmax, score], normalisiert auf [0,1] der 640x640-Letterbox-Eingabe; die Anwendung skaliert zu Pixeln und entfernt die Letterbox-Transformation. normalize_in_net+input_conversion(bgr_to_rgb)auf dem Chip: Die Anwendung verwendet schwarzes (0) Letterbox-Padding und liefert rohe uint8-BGR-Pixel, ohne manuelle Normalisierung oder cvtColor.- HailoRT liefert den NMS-vstream als unterschiedlich lange Liste je Klasse (NMS-by-score); der Parser unterstützt auch object/dense-Layouts. Die erste Inferenz protokolliert Rohtyp und Form zur Prüfung auf der Hardware.
- Klassenzuordnung:
cls_id(0..79) → direkt die standardmäßige Liste der 80 COCO-Klassen. - Standardwerte: Konfidenz 0.25, IOU 0.45 (ohne Wirkung, da NMS auf dem Chip läuft). Model-Zoo-Evaluation verwendet 0.05 / 0.6; senken Sie den Konfidenzregler für mehr Ergebnisse.
Entwicklungshinweise
- Quellmodul:
src/rpi5_hailo8_nanodet_repvgg_a1_640/ - Dockerfile:
docker/hailo8/nanodet_repvgg_a1_640.dockerfile - Container:
ghcr.io/seeed-projects/recomputer-hailo8-cv/nanodet_repvgg_a1_640:latest - Das Modul verwendet die HailoRT-4.23-VStreams-API und ein Hailo-8-spezifisches HEF.
- Familie: nanodet (Varianten nanodet_repvgg / nanodet_repvgg_a12 / nanodet_repvgg_a1_640); dies ist der nanodet_repvgg_a1_640-Build.
Eingaben und Ausgaben
Input: image, video, or USB camera frame. Output: COCO 80-class detection boxes with confidences, plus an annotated MJPEG preview.