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.
Choisissez l'appareil que vous utilisez. Le guide de configuration et la documentation seront mis à jour en conséquence.
Pour commencer
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.mp4Dé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
| Variante | Entrée | HEF empaqueté | Image de conteneur |
|---|---|---|---|
| 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 |
Matériel et configuration de l'hôte
| Élément | Valeur |
|---|---|
| Carte | Raspberry Pi CM5 |
| Accélérateur | Hailo-10H, /dev/hailo0 |
| Runtime | HailoRT 5.1.1 |
| OS | 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/hailo0Exécuter avec la vidéo de démonstration
Sélectionnez la commande correspondant à la variante du modèle.
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.mp4Ouvrez 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 :
| 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 |
Exemple :
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ôme | Cause probable | Correction |
|---|---|---|
unexpected output layout dans le journal | Compilation HEF différente | Vérifiez les formes affichées par rapport à la liste ci-dessus ; ne devinez pas la disposition |
Erreur de version HailoRT au démarrage | Bibliothèque de l'hôte pas en 5.1.1 | Installez hailo-h10-all sur l'hôte et gardez le montage du conteneur sur libhailort.so.5.1.1 |
docker: container name already in use | Un 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 manquant | Ajoutez le mappage du périphérique et --privileged --net=host |
Développement
| Variante | Source | 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 |
- 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.