CV / YOLOv8

YOLOv8-seg

reComputer R Series (CM5 + Hailo-10H)

YOLOv8n/s/m Instanzsegmentierung auf reComputer RK3588/RK3576 (RKNN) sowie auf reComputer R Series mit Hailo-8 oder Hailo-10H über HailoRT.

575 Downloads
Größe
~7.2MB
Speicher
1GB+
Präzision
INT8

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

Erste Schritte

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

Modelldetails

reComputer R Series (CM5 + Hailo-10H)

YOLOv8-seg auf reComputer CM5 + Hailo-10H

Die Modelle YOLOv8n/s/m-seg laufen auf dem Hailo-10H über HailoRT 5.1.1. Das HEF legt rohe Heads offen (kein On-Chip-NMS): Der Host dekodiert die Box-Heads (DFL- oder gefaltetes Layout), wendet Sigmoid + NMS pro Klasse an und setzt die Prototyp-Masken zusammen (32 Koeffizienten × 160×160×32-Prototyp, auf jede Box zugeschnitten) für 80 COCO-Klassen.

Modellinformationen

VarianteEingabeGepacktes HEFContainer-Image
YOLOv8n-seg640×640×3 RGB6.1 MByolov8n_seg
YOLOv8s-seg640×640×3 RGB18.6 MByolov8s_seg
YOLOv8m-seg640×640×3 RGB28.9 MByolov8m_seg

Hardware- und Host-Setup

PunktWert
BoardRaspberry Pi CM5
BeschleunigerHailo-10H, /dev/hailo0
RuntimeHailoRT 5.1.1
OSRaspberry Pi OS Bookworm, aarch64
bash
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot

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

Mit Demo-Video ausführen

Wählen Sie den Befehl passend zur Modellvariante.

YOLOv8n-seg

bash
sudo docker run --rm --privileged --net=host \
  --name cm5-hailo10h-yolov8n-seg \
  -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/yolov8n_seg:latest \
  python web_detection.py --model_path model/yolov8n_seg.hef --video_path video/test.mp4

YOLOv8s-seg

bash
sudo docker run --rm --privileged --net=host \
  --name cm5-hailo10h-yolov8s-seg \
  -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/yolov8s_seg:latest \
  python web_detection.py --model_path model/yolov8s_seg.hef --video_path video/test.mp4

YOLOv8m-seg

bash
sudo docker run --rm --privileged --net=host \
  --name cm5-hailo10h-yolov8m-seg \
  -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/yolov8m_seg:latest \
  python web_detection.py --model_path model/yolov8m_seg.hef --video_path video/test.mp4

Öffnen Sie http://<Board_IP>:8000 für die Web-Vorschau. Verwenden Sie /api/video_feed für den MJPEG-Stream mit überlagerten Instanzmasken und Boxen.

REST API

Jede Variante hat ihren eigenen Endpoint:

VarianteEndpoint
YOLOv8n-segPOST /api/models/yolov8n_seg/predict
YOLOv8s-segPOST /api/models/yolov8s_seg/predict
YOLOv8m-segPOST /api/models/yolov8m_seg/predict

Beispiel:

bash
curl -X POST "http://<Board_IP>:8000/api/models/yolov8n_seg/predict" \
  -F "file=@test.jpg"

Die Antwort enthält predictions-Einträge mit den Feldern class, confidence und box (box ist x1/y1/x2/y2 in Pixeln des Originalbilds).

Erwartetes Ergebnis und häufige Fehler

Bei der ersten Inferenz gibt das Modul die geladene vstream-Liste sowie eine Layout-Zeile pro Inferenztyp aus: die 10 Ausgabe-Tensoren, ihre Wertebereiche und ob ein Sigmoid angewendet wurde. Erwartet: drei Box-Heads, drei 80-Kanal-Score-Heads, drei 32-Kanal-Maskenkoeffizienten-Heads und ein 160×160×32-Prototyp; eine Vorschau, in der die Masken an den Instanzen haften.

SymptomWahrscheinliche UrsacheLösung
unexpected output layout im LogAndere HEF-KompilierungPrüfen Sie die ausgegebenen Formen gegen die obige Liste; raten Sie das Layout nicht
HailoRT-Versionsfehler beim StartHost-Bibliothek nicht 5.1.1Installieren Sie hailo-h10-all auf dem Host und halten Sie den Container-Mount auf libhailort.so.5.1.1
docker: container name already in useEin vorheriger Container wurde nicht entferntdocker rm -f cm5-hailo10h-yolov8n-seg, oder ändern Sie --name
Kein /dev/hailo0 im ContainerFehlendes --device /dev/hailo0:/dev/hailo0Fügen Sie das Device-Mapping und --privileged --net=host hinzu

Entwicklung

VarianteQuelleDockerfile
YOLOv8n-segsrc/hailo10h_yolov8n_seg/docker/hailo10h/yolov8n_seg.dockerfile
YOLOv8s-segsrc/hailo10h_yolov8s_seg/docker/hailo10h/yolov8s_seg.dockerfile
YOLOv8m-segsrc/hailo10h_yolov8m_seg/docker/hailo10h/yolov8m_seg.dockerfile
  • Executor: HailoRT-5.1.1-InferModel-Wrapper (Python 3.13 + das mitgelieferte cp313-Wheel); Regressionstests liegen im tests/ jedes Moduls.
  • HEFs: Hailo-Model-Zoo-v5.4.0-Hailo-10H-Builds.
  • Letterbox-Padding ist 114 (Model Zoo base/yolo.yaml); die Normalisierung ist in das HEF kompiliert. Die referenzierten mAP-Werte sind Full-Precision-Angaben des Model Zoo, keine Messungen auf diesem Board.