CV / NanoDet

NanoDet-RepVGG-a12

reComputer R Series (CM5 + Hailo-8)

COCO-Objekterkennung mit 80 Klassen mit nanodet_repvgg_a12 (YOLOX-basiert, On-Chip-NMS) auf reComputer R Series mit Hailo-8 oder Hailo-10H.

21 Downloads
Größe
7.5 MB
Speicher
4GB+
Präzision
Hailo HEF / HailoRT

Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.

Erste Schritte

Bereitstellen
sudo docker run --rm \
  --name cm5-hailo8-nanodet-repvgg-a12 \
  --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_a12:latest \
  python web_detection.py --model_path model/nanodet_repvgg_a12.hef --video_path video/test.mp4

REST API

Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.

Curl
curl -X POST "http://<Board_IP>:8000/api/models/nanodet_repvgg_a12/predict" \
  -F "file=@test.jpg"
Python
import requests

response = requests.post(
    "http://<Board_IP>:8000/api/models/nanodet_repvgg_a12/predict",
    files={"file": open("test.jpg", "rb")},
    timeout=30,
)
print(response.json())

Modelldetails

reComputer R Series (CM5 + Hailo-8)

NanoDet-RepVGG-a12 auf reComputer R Series (CM5 + Hailo-8)

nanodet_repvgg_a12 erkennt über HailoRT auf Hailo-8 Objekte der 80 COCO-Klassen. Trotz des Namens „nanodet“ basiert diese Variante auf YOLOX (base/yolox.yaml) mit 640x640-Eingabe. NMS läuft auf dem Chip (Hailo HPP, meta_arch=yolox); 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

EigenschaftWert
ArchitekturYOLOX-basiert (base/yolox.yaml) + RepVGG-A12-Backbone
AufgabeObjekterkennung
Eingabe640x640x3 BGR (input_conversion bgr_to_rgb + normalize_in_net ohne Transformation)
AusgabeNMS-Tensor auf dem Chip, Post-NMS-Form 80x5x100
Klassen80 (COCO, 0-basiert; labels_offset=1 nur für Evaluation)
Parameter5.13M
Operationen28.23G
NachverarbeitungNMS auf dem Chip (HPP); Host analysiert Post-NMS-Tensor
HEFHailo Model Zoo v2.19.0, Hailo-8

Der Genauigkeitswert ist eine Referenz aus Hailo Model Zoo, kein auf CM5 gemessener Benchmark.

Hardware- und Hosteinrichtung

EintragWert
BoardreComputer R Series mit Raspberry Pi CM5
BeschleunigerHailo-8 über PCIe, verfügbar als /dev/hailo0
LaufzeitHailoRT 4.23.x
Python im Container3.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:

bash
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/hailo0

Die für dieses Image erwartete HailoRT-Version ist 4.23.x.

Mit Demovideo ausführen

bash
sudo docker run --rm \
  --name cm5-hailo8-nanodet-repvgg-a12 \
  --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_a12:latest \
  python web_detection.py --model_path model/nanodet_repvgg_a12.hef --video_path video/test.mp4

Öffnen Sie http://<Board_IP>:8000 für die Webvorschau.

USB-Kameramodus

bash
sudo docker run --rm \
  --name cm5-hailo8-nanodet-repvgg-a12 \
  --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_a12:latest \
  python web_detection.py --model_path model/nanodet_repvgg_a12.hef --camera_id 0

REST-API

Vorhersage-Endpunkt:

text
POST http://<Board_IP>:8000/api/models/nanodet_repvgg_a12/predict

Beispiel einer Bildanfrage:

bash
curl -X POST "http://<Board_IP>:8000/api/models/nanodet_repvgg_a12/predict" \
  -F "file=@test.jpg"
EndpunktMethodeZweck
/GETWebvorschau-Oberfläche
/api/models/nanodet_repvgg_a12/predictPOSTErkennungen (JSON)
/api/video_feedGETMJPEG-Vorschaustream

Implementierungshinweise

  • Gleiche NMS-Nachverarbeitung auf dem Chip (HPP) wie nanodet_repvgg (80-Klassen-HPP-Analyse), aber diese Variante verwendet base/yolox.yaml: meta_arch=yolox, 640x640-Eingabe und padding_color=114 (grau, YOLOX-Konvention).
  • Das HEF führt NMS auf dem Chip aus (device_pre_post_layers: nms=true, hpp=true); die Anwendung analysiert nur den Post-NMS-Tensor (gemäß offiziellem tf_postproc_nms). nms_thresh wird 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 führt keine Transformation aus (mean=0/std=1) + input_conversion(bgr_to_rgb) auf dem Chip: Die Anwendung verwendet graues (114) 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 (labels_offset=1 nur für Evaluation; bei verschobenen Labels aus dem ersten Inferenzprotokoll neu ableiten).
  • Standardwerte: Konfidenz 0.25, IOU 0.45 (ohne Wirkung, da NMS auf dem Chip läuft). Model-Zoo-Evaluation verwendet 0.01 / 0.65; senken Sie den Konfidenzregler für mehr Ergebnisse.

Entwicklungshinweise

  • Quellmodul: src/rpi5_hailo8_nanodet_repvgg_a12/
  • Dockerfile: docker/hailo8/nanodet_repvgg_a12.dockerfile
  • Container: ghcr.io/seeed-projects/recomputer-hailo8-cv/nanodet_repvgg_a12: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_a12-Build.

Eingaben und Ausgaben

Input: image, video, or USB camera frame. Output: COCO 80-class detection boxes with confidences, plus an annotated MJPEG preview.