CV / YOLOv8

YOLOv8-seg

reComputer R Series (CM5 + Hailo-10H)

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.

599 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 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

Detalles del modelo

reComputer R Series (CM5 + Hailo-10H)

YOLOv8-seg en reComputer CM5 + Hailo-10H

Los modelos YOLOv8n/s/m-seg se ejecutan en Hailo-10H a través de HailoRT 5.1.1. El HEF expone cabezas sin procesar (sin NMS en el chip): el host decodifica las cabezas de caja (DFL o diseño plegado), aplica sigmoide + 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 RGB6.1 MByolov8n_seg
YOLOv8s-seg640×640×3 RGB18.6 MByolov8s_seg
YOLOv8m-seg640×640×3 RGB28.9 MByolov8m_seg

Hardware y configuración del host

ElementoValor
PlacaRaspberry Pi CM5
AceleradorHailo-10H, /dev/hailo0
RuntimeHailoRT 5.1.1
SORaspberry 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

Ejecutar con vídeo de demostración

Seleccione el comando que corresponda a la variante del modelo.

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

Abra http://<Board_IP>:8000 para la vista previa web. Use /api/video_feed para el flujo MJPEG con máscaras de instancia y cajas superpuestas.

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).

Resultado esperado y errores comunes

En la primera inferencia, el módulo imprime la lista de vstreams cargados más una línea de diseño por tipo de inferencia: los 10 tensores de salida, sus rangos de valores y si se aplicó un sigmoide. Esperado: tres cabezas de caja, tres cabezas de puntuación de 80 canales, tres cabezas de coeficientes de máscara de 32 canales y un prototipo 160×160×32; una vista previa donde las máscaras se adhieren a las instancias.

SíntomaCausa probableSolución
unexpected output layout en el logCompilación HEF diferenteCompruebe las formas impresas contra la lista anterior; no adivine el diseño
Error de versión de HailoRT al iniciarLa librería del host no es 5.1.1Instale hailo-h10-all en el host y mantenga el montaje del contenedor en libhailort.so.5.1.1
docker: container name already in useNo se eliminó un contenedor anteriordocker rm -f cm5-hailo10h-yolov8n-seg, o cambie --name
No hay /dev/hailo0 dentro del contenedorFalta --device /dev/hailo0:/dev/hailo0Añada el mapeo de dispositivo y --privileged --net=host

Desarrollo

VarianteOrigenDockerfile
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
  • Ejecutor: envoltorio InferModel de HailoRT 5.1.1 (Python 3.13 + la wheel cp313 incluida); las pruebas de regresión están en tests/ de cada módulo.
  • HEFs: compilaciones Hailo-10H de Hailo Model Zoo v5.4.0.
  • El padding del letterbox es 114 (Model Zoo base/yolo.yaml); la normalización está compilada en el HEF. Los valores de mAP referenciados son las cifras de precisión completa del Model Zoo, no mediciones en esta placa.