CV / NanoDet

NanoDet-RepVGG-a1-640

reComputer R Series (CM5 + Hailo-10H)

COCO-objectdetectie met 80 klassen met nanodet_repvgg_a1_640 (on-chip-NMS) op reComputer R Series met Hailo-8 of Hailo-10H.

90 downloads
Grootte
9.8 MB
Geheugen
4GB+
Precisie
Hailo HEF / HailoRT

Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.

Aan de slag

Implementeren
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

REST API

Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.

Curl
curl -X POST "http://<Board_IP>:8000/api/models/nanodet_repvgg_a1_640/predict" \
  -F "file=@test.jpg"
Python
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())

Modeldetails

reComputer R Series (CM5 + Hailo-10H)

NanoDet-RepVGG-a1-640 op reComputer CM5 + Hailo-10H

NanoDet-RepVGG-a1-640 voert objectdetectie van 80 COCO-klassen uit op de Hailo-10H met on-chip-NMS (Hailo HPP). Zelfde basis (base/nanodet.yaml) als nanodet_repvgg, maar met een grotere RepVGG-A1-backbone en 640x640-invoer voor hogere nauwkeurigheid. Het HEF levert al gedecodeerde detecties en de app analyseert alleen de post-NMS-tensor. Geporteerd uit het gevalideerde Hailo-8-module rpi5_hailo8_nanodet_repvgg_a1_640; de executor gebruikt de multi-uitvoer-create_infer_model-wrapper van HailoRT 5.1.1 met FLOAT32- uitvoer.

Modelinformatie

EigenschapWaarde
ArchitectuurNanoDet + RepVGG-A1 (base/nanodet.yaml)
TaakObjectdetectie
Invoer640x640x3 (grootte bij start uit het HEF gelezen)
UitvoerOn-chip-NMS-tensor, post-NMS-vorm 80x5x100
Klassen80 (COCO, geïndexeerd vanaf 0 via meta_arch=yolov8)
HEFHailo Model Zoo v5.4.0, Hailo-10H (7.9 MB)

Hardware- en hostconfiguratie

OnderdeelWaarde
BoardreComputer R Series met Raspberry Pi CM5
AcceleratorHailo-10H via PCIe, beschikbaar als /dev/hailo0
Hostdriverapt-pakket hailo-h10-all
RuntimeHailoRT 5.1.1
Python in container3.13, aarch64
bash
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot

# After reboot
hailortcli fw-control identify
ls /dev/hailo0

Uitvoeren met demovideo

bash
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

Open http://<Board_IP>:8000 voor de webvoorbeeld. Voor een USB-camera /dev/video0 mounten en --video_path video/test.mp4 vervangen door --camera_id 0.

REST API

bash
curl -X POST "http://<Board_IP>:8000/api/models/nanodet_repvgg_a1_640/predict" \
  -F "file=@test.jpg"
EndpointMethodeBeschrijving
/healthGETHealthcheck
/api/models/nanodet_repvgg_a1_640/predictPOSTDetecties (JSON)
/api/video_feedGETMJPEG-voorbeeldstream

Implementatieopmerkingen

  • Het HEF voert NMS on-chip uit; de app analyseert alleen de post-NMS-tensor, dus nms_thresh wordt genegeerd (alleen API-pariteit).
  • Post-NMS-rijen zijn [ymin, xmin, ymax, xmax, score], genormaliseerd naar [0,1] van de letterbox-invoer; de app schaalt naar pixels en heft het letterbox op.
  • Normalisatie/kleurconversie is in het HEF gecompileerd; de app doet het letterbox en levert ruwe uint8-pixels.
  • HailoRT kan de NMS-vstream als ragged-lijst per klasse (NMS-by-score) teruggeven; de parser ondersteunt ook object/dense-layouts. De eerste inferentie logt het ruwe type/vorm voor verificatie.
  • Uitvoer wordt aangevraagd als FormatType.FLOAT32 (gedequantiseerd door de SDK); het lezen van ruwe gekwantiseerde buffers levert waarden in de tienduizenden en nul geldige detecties.
  • Klassenmapping: cls_id (0..79) → standaard COCO-80-klassenlijst direct.

Modelbron

nanodet_repvgg_a1_640.hef is de Hailo-10H-build van Hailo Model Zoo v5.4.0 — URL, SHA256 en grootte staan in de repository (src/hailo10h_nanodet_repvgg_a1_640/model/README.md).

Invoer en uitvoer

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