CV / YOLOv8

YOLOv8-seg

reComputer R Series (CM5 + Hailo-10H)

Segmentation d'instance YOLOv8n/s/m sur reComputer RK3588/RK3576 (RKNN) et sur reComputer R Series avec Hailo-8 ou Hailo-10H via HailoRT.

599 téléchargements
Taille
~7.2MB
Mémoire
1GB+
Précision
INT8

Choisissez l'appareil que vous utilisez. Le guide de configuration et la documentation seront mis à jour en conséquence.

Pour commencer

Déployer
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

Détails du modèle

reComputer R Series (CM5 + Hailo-10H)

YOLOv8-seg sur reComputer CM5 + Hailo-10H

Les modèles YOLOv8n/s/m-seg s'exécutent sur Hailo-10H via HailoRT 5.1.1. Le HEF expose des têtes brutes (pas de NMS sur puce) : l'hôte décode les têtes de boîtes (DFL ou disposition repliée), applique la sigmoïde + le NMS par classe et assemble les masques prototypes (32 coefficients × prototype 160×160×32, recadrés sur chaque boîte) pour les 80 classes COCO.

Informations sur le modèle

VarianteEntréeHEF empaquetéImage de conteneur
YOLOv8n-seg640×640×3 RGB6.1 MByolov8n_seg
YOLOv8s-seg640×640×3 RGB18.6 MByolov8s_seg
YOLOv8m-seg640×640×3 RGB28.9 MByolov8m_seg

Matériel et configuration de l'hôte

ÉlémentValeur
CarteRaspberry Pi CM5
AccélérateurHailo-10H, /dev/hailo0
RuntimeHailoRT 5.1.1
OSRaspberry 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

Exécuter avec la vidéo de démonstration

Sélectionnez la commande correspondant à la variante du modèle.

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

Ouvrez http://<Board_IP>:8000 pour l'aperçu Web. Utilisez /api/video_feed pour le flux MJPEG avec les masques d'instances et les boîtes superposés.

REST API

Chaque variante possède son propre endpoint :

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

Exemple :

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

La réponse contient des entrées predictions avec les champs class, confidence et box (box est x1/y1/x2/y2 en pixels de l'image d'origine).

Résultat attendu et erreurs courantes

À la première inférence, le module affiche la liste des vstreams chargés ainsi qu'une ligne de disposition par type d'inférence : les 10 tenseurs de sortie, leurs plages de valeurs et si une sigmoïde a été appliquée. Attendu : trois têtes de boîtes, trois têtes de score à 80 canaux, trois têtes de coefficients de masque à 32 canaux et un prototype 160×160×32 ; un aperçu où les masques adhèrent aux instances.

SymptômeCause probableCorrection
unexpected output layout dans le journalCompilation HEF différenteVérifiez les formes affichées par rapport à la liste ci-dessus ; ne devinez pas la disposition
Erreur de version HailoRT au démarrageBibliothèque de l'hôte pas en 5.1.1Installez hailo-h10-all sur l'hôte et gardez le montage du conteneur sur libhailort.so.5.1.1
docker: container name already in useUn conteneur précédent n'a pas été supprimédocker rm -f cm5-hailo10h-yolov8n-seg, ou changez --name
Pas de /dev/hailo0 dans le conteneur--device /dev/hailo0:/dev/hailo0 manquantAjoutez le mappage du périphérique et --privileged --net=host

Développement

VarianteSourceDockerfile
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
  • Exécuteur : wrapper InferModel de HailoRT 5.1.1 (Python 3.13 + la wheel cp313 embarquée) ; les tests de régression se trouvent dans le tests/ de chaque module.
  • HEFs : builds Hailo-10H de Hailo Model Zoo v5.4.0.
  • Le padding letterbox est de 114 (Model Zoo base/yolo.yaml) ; la normalisation est compilée dans le HEF. Les valeurs de mAP référencées sont les chiffres de pleine précision du Model Zoo, et non des mesures effectuées sur cette carte.