CV / YOLOv8

YOLOv8-seg

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

400 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 rk3588-yolov8n-seg \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  -e RKNN_LOG_LEVEL=0 \
  --device /dev/video1:/dev/video1 \
  --device /dev/dri/renderD129:/dev/dri/renderD129 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov8_seg:latest \
  python web_detection.py --model_path model/yolov8n_seg.rknn --video video/test.mp4

Modelldetails

reComputer R Series (CM5 + Hailo-8)

YOLOv8-seg auf reComputer R Series (CM5 + Hailo-8)

YOLOv8n/s/m-seg läuft auf dem Hailo-8 über HailoRT 4.23. Das HEF legt rohe Heads offen (kein On-Chip-NMS): Der Host dekodiert die DFL-Boxen, wendet Sigmoid und 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 RGB5.3 MByolov8n_seg
YOLOv8s-seg640×640×3 RGB17.3 MByolov8s_seg
YOLOv8m-seg640×640×3 RGB32.9 MByolov8m_seg

Hardware- und Host-Setup

PunktWert
BoardreComputer R Series mit Raspberry Pi CM5
BeschleunigerHailo-8 über PCIe, als /dev/hailo0 verfügbar
RuntimeHailoRT 4.23.x (Host / Container müssen major.minor teilen)
Python im Container3.11, aarch64
bash
sudo apt update
sudo apt install hailort hailort-pcie-driver python3-hailort
sudo reboot

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

# Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
sudo systemctl enable docker
sudo systemctl start docker

Mit Demo-Video ausführen

Wählen Sie den Befehl passend zur Modellvariante.

YOLOv8n-seg

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

Öffnen Sie http://<Board_IP>:8000, um die Web-Vorschau zu sehen (Instanzmasken pro Klasse überlagert + Erkennungsboxen).

USB-Kameramodus

bash
sudo docker run --rm \
  --name cm5-hailo8-yolov8n-seg \
  --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/yolov8n_seg:latest \
  python web_detection.py --model_path model/yolov8n_seg.hef --camera_id 0

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). Instanzmasken werden in der MJPEG-Vorschau dargestellt; /api/video_feed liefert den annotierten Stream.

Implementierungshinweise

  • Das HEF legt 10 rohe Tensoren offen: pro Stride (32/16/8) ein 64-Kanal-DFL-Box-Head, ein 80-Kanal-Klassen-Head und ein 32-Kanal-Maskenkoeffizienten-Head, plus ein 160×160×32-Prototyp. Die erste Inferenz protokolliert jeden Tensornamen, jede Form und jeden Wertebereich.
  • Die Box-Dekodierung verwendet die DFL-Softmax-Erwartung (16 Bins) über der Zellmitte; eine Kompilierung, die das DFL wegklappt (4-Kanal-Head), wird direkt dekodiert.
  • Die Klassen-Heads können auf dem Gerät bereits sigmoid-aktiviert sein (Model Zoo alls script); das Modul wendet Sigmoid nur an, wenn die Werte rohe Logits sind.
  • Die one2many-Vorhersagen durchlaufen ein NMS pro Klasse, gesteuert durch die Konfidenz- und IoU-Slider; Masken sind sigmoid(coeffs @ proto), auf die Eingabe hochskaliert und auf jede Box zugeschnitten (Schwelle 0.5).
  • Letterbox-Padding ist 114 (Model Zoo base/yolo.yaml); die Normalisierung Mittelwert 0 / Std 255 ist in das HEF kompiliert.

Entwicklungshinweise

VarianteQuelleDockerfileContainer
YOLOv8n-segsrc/rpi5_hailo8_yolov8n_seg/docker/hailo8/yolov8n_seg.dockerfileghcr.io/seeed-projects/recomputer-hailo8-cv/yolov8n_seg:latest
YOLOv8s-segsrc/rpi5_hailo8_yolov8s_seg/docker/hailo8/yolov8s_seg.dockerfileghcr.io/seeed-projects/recomputer-hailo8-cv/yolov8s_seg:latest
YOLOv8m-segsrc/rpi5_hailo8_yolov8m_seg/docker/hailo8/yolov8m_seg.dockerfileghcr.io/seeed-projects/recomputer-hailo8-cv/yolov8m_seg:latest
  • Der Executor ist der HailoRT-4.23-InferVStreams-Wrapper (Python 3.11 + das mitgelieferte cp311-Wheel); das native libhailort.so kommt vom Host.
  • HEFs: Hailo-Model-Zoo-v2.19.0-Hailo-8-Builds.
  • Die referenzierten mAP-Werte (COCO-Instanzsegmentierung) sind die Full-Precision-Angaben des Model Zoo, keine Messungen auf diesem Board.