CV / YOLOv10

YOLOv10

reComputer R Series (CM5 + Hailo-10H)

YOLOv10n/s/b/x objectdetectiemodellen voor reComputer RK3588/RK3576 (RKNN) en reComputer R Series met Hailo-8 of Hailo-10H.

91 downloads
Grootte
7.36 MB
Geheugen
4GB+
Precisie
RKNN / Hailo HEF

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

Aan de slag

Implementeren
sudo docker run --rm \
  --name cm5-hailo10h-yolov10n \
  --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/yolov10n:latest \
  python web_detection.py --model_path model/yolov10n.hef --video_path video/test.mp4

Modeldetails

reComputer R Series (CM5 + Hailo-10H)

YOLOv10 on reComputer R Series (CM5 + Hailo-10H)

YOLOv10n / YOLOv10s / YOLOv10b / YOLOv10x voeren COCO-objectdetectie (80 klassen) uit op Hailo-10H via HailoRT. De gecompileerde HEF voert NMS on-chip uit (HPP) met de one2one-kop, dus de host parseert alleen het post-NMS-resultaat en hoeft zelf nooit boxes te decoderen of NMS te draaien.

Deze pagina is gericht op reComputer R Series (CM5 + Hailo-10H) met een PCIe Hailo-10H-versneller.

Hardware en hostinstellingen

OnderdeelWaarde
BoardreComputer R Series met Raspberry Pi CM5
VersnellerHailo-10H via PCIe, beschikbaar als /dev/hailo0
RuntimeHailoRT 5.1.1
Python in de container3.13, aarch64

Installeer de Hailo-10H-pakketten op de host en controleer of stuurprogramma en apparaat gereed zijn voordat u de container start:

bash
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot

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

De verwachte HailoRT-versie voor deze images is 5.1.1.

Uitvoeren met de demo-video

YOLOv10n:

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov10n \
  --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/yolov10n:latest \
  python web_detection.py --model_path model/yolov10n.hef --video_path video/test.mp4

YOLOv10s:

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov10s \
  --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/yolov10s:latest \
  python web_detection.py --model_path model/yolov10s.hef --video_path video/test.mp4

YOLOv10b:

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov10b \
  --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/yolov10b:latest \
  python web_detection.py --model_path model/yolov10b.hef --video_path video/test.mp4

YOLOv10x:

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov10x \
  --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/yolov10x:latest \
  python web_detection.py --model_path model/yolov10x.hef --video_path video/test.mp4

Open http://<Board_IP>:8000 voor de webpreview.

USB-cameramodus

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov10n \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  --device /dev/video0:/dev/video0 \
  -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/yolov10n:latest \
  python web_detection.py --model_path model/yolov10n.hef --camera_id 0

Vervang yolov10n door yolov10s, yolov10b of yolov10x voor een andere variant.

HEF-bestanden

ModelGrootteOpmerkingen
yolov10n.hef5,230,592 (5.0 MB)parameters 2.3M, ops 6.8G, 38.5 mAP (volledige precisie)
yolov10s.hef10,182,656 (9.7 MB)parameters 7.2M, ops 21.7G, 45.85 mAP (volledige precisie)
yolov10b.hef19,619,840 (18.7 MB)parameters 20.15M, ops 92.09G, 52.0 mAP (volledige precisie)
yolov10x.hef26,251,264 (25.0 MB)parameters 31.72M, ops 160.56G, 53.7 mAP (volledige precisie)

Alle vier varianten zijn Hailo-10H-builds uit Hailo Model Zoo v5.4.0 van dezelfde THU-MIG YOLOv10-familie.

Source: https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v5.4.0/hailo10h/yolov10n.hef (yolov10s.hef, yolov10b.hef, yolov10x.hef in the same directory).

REST API

text
POST http://<Board_IP>:8000/api/models/yolov10n/predict
bash
curl -X POST "http://<Board_IP>:8000/api/models/yolov10n/predict" \
  -F "file=@test.jpg"
EndpointMethodeDoel
/GETWebvoorbeeld-interface
/api/models/yolov10{n,s,b,x}/predictPOSTDetecties (JSON)
/api/video_feedGETMJPEG-previewstream

Implementatienotities

  • De Model Zoo base/yolov10.yaml gebruikt hpp=true en device_pre_post_layers.nms=true met meta_arch=yolov8, past sigmoid toe op de drie one2one-klassenconvoluties en documenteert info.output_shape: 80x5x100 (80 klassen, maximaal 100 boxes per klasse).
  • De parsernodes zijn de one2one-kop (/model.23/one2one_cv2.{0,1,2}/Conv voor de box, /model.23/one2one_cv3.{0,1,2}/Conv voor de klasse): één voorspelling per cel, geen ankers. Er wordt niets gedecodeerd en er draait geen NMS op de host.
  • HailoRT 5.1.1 retourneert de ruwe NMS-by-class-buffer als een platte 1-D FLOAT32-array in compacte indeling: per klasse eerst een detectieaantal als geheel getal, gevolgd door alleen dat aantal [ymin, xmin, ymax, xmax, score]-rijen, genormaliseerd naar [0, 1]. De parser stopt bij de eerste onwaarschijnlijke klassenkop, zodat de opvulstaart in het slechtste geval niet als data wordt gelezen; ragged NMS-by-score en dichte (1,C,5,D) / (1,C,D,5)-indelingen blijven ook ondersteund.
  • De IOU-schuif heeft geen effect (NMS draait on-chip); de confidence-schuif filtert de geparseerde detecties.
  • De HEF bevat normalize_in_net (mean 0 / std 255) en padding_color=114: de applicatie letterboxt met grijs (114) en stuurt ruwe uint8 RGB-pixels — geen handmatige normalisatie.
  • Klasse-ID's 0..79 indexeren direct de standaard COCO-lijst.
  • Diagnostiek voor de eerste inferentie is uitgeschakeld in productie (_OUTPUT_LOGGED = True); zet deze op False in web_detection.py om bij het valideren van een nieuwe HEF het ruwe uitvoertype, de vorm, het waardenbereik en de rijen per klasse te dumpen.

Ontwikkelnotities

  • Bronmodules: src/hailo10h_yolov10{n,s,b,x}/ in de reComputer-Hailo10H-CV-repository
  • Containers: ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov10{n,s,b,x}:latest
  • Op Hailo-8 (R20-demo) zijn alleen n/b/x gepubliceerd; de Hailo-10H-builds dekken alle vier varianten.
  • Modellicentie: AGPL-3.0 (upstream THU-MIG/yolov10).

Invoer en uitvoer

Invoer: afbeelding, video of USB-cameraframe. Uitvoer: detectieboxen, klassen, betrouwbaarheidsscores en geannoteerde MJPEG-preview.