CV / NanoDet

NanoDet-RepVGG-a1-640

reComputer R Series (CM5 + Hailo-8)

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

95 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-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

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-8)

NanoDet-RepVGG-a1-640 op reComputer R Series (CM5 + Hailo-8)

nanodet_repvgg_a1_640 detecteert objecten van de 80 COCO-klassen op Hailo-8 via HailoRT. Dezelfde basis (base/nanodet.yaml) als nanodet_repvgg, maar met een grotere RepVGG-A1-backbone en 640x640-invoer voor hogere nauwkeurigheid. NMS draait op de chip (Hailo HPP, meta_arch=yolov8); de host verwerkt alleen de tensor na NMS.

Deze pagina is bedoeld voor reComputer R Series (CM5 + Hailo-8) met een PCIe-Hailo-8-versneller.

Modelinformatie

EigenschapWaarde
ArchitectuurNanoDet + RepVGG-A1 (base/nanodet.yaml)
TaakObjectdetectie
Invoer640x640x3 BGR (input_conversion bgr_to_rgb + normalize_in_net)
UitvoerNMS-tensor op de chip, vorm na NMS 80x5x100
Klassen80 (COCO, index vanaf 0 via meta_arch=yolov8)
Parameters10.79M
Bewerkingen42.8G
NabewerkingNMS op de chip (HPP); host verwerkt tensor na NMS
HEFHailo Model Zoo v2.19.0, Hailo-8

De nauwkeurigheid is een referentiewaarde uit Hailo Model Zoo, geen op CM5 gemeten benchmark.

Hardware- en hostinstellingen

OnderdeelWaarde
BordreComputer R Series met Raspberry Pi CM5
VersnellerHailo-8 via PCIe, beschikbaar als /dev/hailo0
RuntimeHailoRT 4.23.x
Python in container3.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:

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

De verwachte HailoRT-versie voor dit image is 4.23.x.

Uitvoeren met demovideo

bash
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

Open http://<Board_IP>:8000 voor het webvoorbeeld.

USB-cameramodus

bash
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 0

REST-API

Voorspellingsendpoint:

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

Voorbeeld van een afbeeldingsverzoek:

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

Implementatienotities

  • Dezelfde basis (base/nanodet.yaml) en NMS-nabewerking op de chip (HPP) als nanodet_repvgg; alleen de backbone (RepVGG-A1) en invoergrootte (640x640) verschillen.
  • 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 en negeert daarom nms_thresh (alleen voor API-compatibiliteit).
  • Rijen na NMS zijn [ymin, xmin, ymax, xmax, score], genormaliseerd naar [0,1] van de 640x640-letterboxinvoer; de toepassing schaalt naar pixels en maakt de letterboxtransformatie ongedaan.
  • normalize_in_net + 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.
  • 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.
  • 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_a1_640/
  • Dockerfile: docker/hailo8/nanodet_repvgg_a1_640.dockerfile
  • Container: ghcr.io/seeed-projects/recomputer-hailo8-cv/nanodet_repvgg_a1_640: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); dit is de nanodet_repvgg_a1_640-build.

Invoer en uitvoer

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