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.
Elige el dispositivo que estás usando. La guía de configuración y la documentación se actualizarán en consecuencia.
Primeros pasos
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.mp4Detalles 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
| Variante | Entrada | HEF empaquetado | Imagen de contenedor |
|---|---|---|---|
| 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 y configuración del host
| Elemento | Valor |
|---|---|
| Placa | Raspberry Pi CM5 |
| Acelerador | Hailo-10H, /dev/hailo0 |
| Runtime | HailoRT 5.1.1 |
| SO | 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/hailo0Ejecutar con vídeo de demostración
Seleccione el comando que corresponda a la variante del modelo.
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.mp4Abra 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:
| 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 |
Ejemplo:
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íntoma | Causa probable | Solución |
|---|---|---|
unexpected output layout en el log | Compilación HEF diferente | Compruebe las formas impresas contra la lista anterior; no adivine el diseño |
Error de versión de HailoRT al iniciar | La librería del host no es 5.1.1 | Instale hailo-h10-all en el host y mantenga el montaje del contenedor en libhailort.so.5.1.1 |
docker: container name already in use | No se eliminó un contenedor anterior | docker rm -f cm5-hailo10h-yolov8n-seg, o cambie --name |
No hay /dev/hailo0 dentro del contenedor | Falta --device /dev/hailo0:/dev/hailo0 | Añada el mapeo de dispositivo y --privileged --net=host |
Desarrollo
| Variante | Origen | 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 |
- 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.