CV / YOLOv8

YOLOv8-seg

YOLOv8n/s/m instantiesegmentatie op reComputer RK3588/RK3576 (RKNN) en op reComputer R Series met Hailo-8 of Hailo-10H via HailoRT.

400 downloads
Grootte
~7.2MB
Geheugen
1GB+
Precisie
INT8

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

Aan de slag

Implementeren
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

Modeldetails

reComputer R Series (CM5 + Hailo-8)

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

YOLOv8n/s/m-seg draait op de Hailo-8 via HailoRT 4.23. Het HEF stelt ruwe heads beschikbaar (geen NMS op de chip): de host decodeert de DFL-boxen, past sigmoid en NMS per klasse toe en stelt de prototypemaskers samen (32 coëfficiënten × 160×160×32-prototype, bijgesneden op elke box) voor 80 COCO-klassen.

Modelinformatie

VariantInvoerVerpakt 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 en hostinstallatie

ItemWaarde
BoardreComputer R Series met Raspberry Pi CM5
AcceleratorHailo-8 via PCIe, beschikbaar als /dev/hailo0
RuntimeHailoRT 4.23.x (host / container moeten major.minor delen)
Python in 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

Uitvoeren met demovideo

Kies de opdracht die bij de modelvariant hoort.

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

Open http://<Board_IP>:8000 voor de webpreview (instantiemaskers per klasse overlaid + detectieboxen).

USB-cameramodus

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

Elke variant heeft een eigen endpoint:

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

Voorbeeld:

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

De respons bevat predictions-items met de velden class, confidence en box (box is x1/y1/x2/y2 in pixels van het originele frame). Instantiemaskers worden weergegeven in de MJPEG-preview; /api/video_feed levert de geannoteerde stream.

Implementatienotities

  • Het HEF stelt 10 ruwe tensors beschikbaar: per stride (32/16/8) een 64-kanaals DFL-boxhead, een 80-kanaals klassehead en een 32-kanaals maskercoëfficiënthead, plus een 160×160×32-prototype. De eerste inferentie logt elke tensornaam, vorm en waardebereik.
  • Het decoderen van boxen gebruikt de DFL-softmax-verwachting (16 bins) rond het celcentrum; een compilatie die de DFL wegvouwt (4-kanaals head) wordt direct gedecodeerd.
  • De klasseheads kunnen op het device al sigmoid-geactiveerd zijn (Model Zoo alls script); de module past alleen sigmoid toe wanneer de waarden ruwe logits zijn.
  • De one2many-voorspellingen gaan door NMS per klasse, aangestuurd door de confidence- en IoU-sliders; maskers zijn sigmoid(coeffs @ proto), opgeschaald naar de invoer en bijgesneden op elke box (drempel 0.5).
  • Letterbox-padding is 114 (Model Zoo base/yolo.yaml); de normalisatie mean 0 / std 255 is in het HEF gecompileerd.

Ontwikkelnotities

VariantBronDockerfileContainer
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
  • De executor is de HailoRT 4.23 InferVStreams-wrapper (Python 3.11 + de meegeleverde cp311-wheel); de native libhailort.so komt van de host.
  • HEFs: Hailo Model Zoo v2.19.0 Hailo-8-builds.
  • De genoemde mAP-waarden (COCO-instantiesegmentatie) zijn de full-precision cijfers van het Model Zoo, niet gemeten op dit board.