CV / YOLOv8

YOLOv8-seg

Segmentación de instancias YOLOv8n/s/m en reComputer RK3588/RK3576 (RKNN) y en reComputer R Series con Hailo-8 o Hailo-10H mediante HailoRT.

400 descargas
Tamaño
~7.2MB
Memoria
1GB+
Precisión
INT8

Elige el dispositivo que estás usando. La guía de configuración y la documentación se actualizarán en consecuencia.

Primeros pasos

Desplegar
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

Detalles del modelo

reComputer R Series (CM5 + Hailo-8)

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

YOLOv8n/s/m-seg se ejecuta en Hailo-8 a través de HailoRT 4.23. El HEF expone cabezas sin procesar (sin NMS en el chip): el host decodifica las cajas DFL, aplica sigmoide y NMS por clase, y ensambla las máscaras prototipo (32 coeficientes × 160×160×32 prototipo, recortadas a cada caja) para 80 clases COCO.

Información del modelo

VarianteEntradaHEF empaquetadoImagen de contenedor
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 y configuración del host

ElementoValor
PlacareComputer R Series con Raspberry Pi CM5
AceleradorHailo-8 vía PCIe, expuesto como /dev/hailo0
RuntimeHailoRT 4.23.x (el host / contenedor deben compartir major.minor)
Python en contenedor3.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

Ejecutar con vídeo de demostración

Seleccione el comando que corresponda a la variante del modelo.

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

Abra http://<Board_IP>:8000 para ver la vista previa web (máscaras de instancia superpuestas por clase + cajas de detección).

Modo cámara USB

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

Cada variante tiene su propio endpoint:

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

Ejemplo:

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

La respuesta contiene entradas predictions con los campos class, confidence y box (box está en x1/y1/x2/y2 en píxeles del fotograma original). Las máscaras de instancia se renderizan en la vista previa MJPEG; /api/video_feed sirve el flujo anotado.

Notas de implementación

  • El HEF expone 10 tensores sin procesar: por stride (32/16/8) una cabeza de caja DFL de 64 canales, una cabeza de clases de 80 canales y una cabeza de coeficientes de máscara de 32 canales, más un prototipo 160×160×32. La primera inferencia registra en el log el nombre, la forma y el rango de valores de cada tensor.
  • La decodificación de cajas usa la expectativa softmax del DFL (16 bins) sobre el centro de la celda; una compilación que pliega el DFL (cabeza de 4 canales) se decodifica directamente.
  • Las cabezas de clase pueden estar ya activadas por sigmoide en el dispositivo (script alls del Model Zoo); el módulo solo aplica sigmoide cuando los valores son logits sin procesar.
  • Las predicciones one2many pasan por NMS por clase controlado por los deslizadores de confianza e IoU; las máscaras son sigmoid(coeffs @ proto), redimensionadas a la entrada y recortadas a cada caja (umbral 0.5).
  • El padding del letterbox es 114 (Model Zoo base/yolo.yaml); la normalización mean 0 / std 255 está compilada en el HEF.

Notas de desarrollo

VarianteOrigenDockerfileContenedor
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
  • El ejecutor es el envoltorio InferVStreams de HailoRT 4.23 (Python 3.11 + la wheel cp311 incluida); el libhailort.so nativo proviene del host.
  • HEFs: compilaciones Hailo-8 de Hailo Model Zoo v2.19.0.
  • Los valores de mAP referenciados (segmentación de instancias COCO) son las cifras de precisión completa del Model Zoo, no mediciones en esta placa.