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.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Erste Schritte
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.mp4Modelldetails
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
| Variante | Eingabe | Gepacktes HEF | Container-Image |
|---|---|---|---|
| YOLOv8n-seg | 640×640×3 RGB | 6.1 MB | yolov8n_seg |
| YOLOv8s-seg | 640×640×3 RGB | 18.6 MB | yolov8s_seg |
| YOLOv8m-seg | 640×640×3 RGB | 28.9 MB | yolov8m_seg |
Hardware- und Host-Setup
| Punkt | Wert |
|---|---|
| Board | Raspberry Pi CM5 |
| Beschleuniger | Hailo-10H, /dev/hailo0 |
| Runtime | HailoRT 5.1.1 |
| OS | Raspberry Pi OS Bookworm, aarch64 |
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot
# After reboot
hailortcli fw-control identify
ls /dev/hailo0Mit Demo-Video ausführen
Wählen Sie den Befehl passend zur Modellvariante.
YOLOv8n-seg
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.mp4YOLOv8s-seg
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.mp4YOLOv8m-seg
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:
| Variante | Endpoint |
|---|---|
| YOLOv8n-seg | POST /api/models/yolov8n_seg/predict |
| YOLOv8s-seg | POST /api/models/yolov8s_seg/predict |
| YOLOv8m-seg | POST /api/models/yolov8m_seg/predict |
Beispiel:
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.
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
unexpected output layout im Log | Andere HEF-Kompilierung | Prüfen Sie die ausgegebenen Formen gegen die obige Liste; raten Sie das Layout nicht |
HailoRT-Versionsfehler beim Start | Host-Bibliothek nicht 5.1.1 | Installieren Sie hailo-h10-all auf dem Host und halten Sie den Container-Mount auf libhailort.so.5.1.1 |
docker: container name already in use | Ein vorheriger Container wurde nicht entfernt | docker rm -f cm5-hailo10h-yolov8n-seg, oder ändern Sie --name |
Kein /dev/hailo0 im Container | Fehlendes --device /dev/hailo0:/dev/hailo0 | Fügen Sie das Device-Mapping und --privileged --net=host hinzu |
Entwicklung
| Variante | Quelle | Dockerfile |
|---|---|---|
| YOLOv8n-seg | src/hailo10h_yolov8n_seg/ | docker/hailo10h/yolov8n_seg.dockerfile |
| YOLOv8s-seg | src/hailo10h_yolov8s_seg/ | docker/hailo10h/yolov8s_seg.dockerfile |
| YOLOv8m-seg | src/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.