CV / YOLO11

YOLO11-seg

reComputer R Series (CM5 + Hailo-8)

Modèles de segmentation YOLO11 (n/s/m/l/x-seg) pour reComputer série R avec Hailo-8.

10 téléchargements
Taille
7.9 MB
Mémoire
4GB+
Précision
Hailo HEF

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 pi5-hailo8-yolov11n-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/yolov11n_seg:latest \
  python web_detection.py --model_path model/yolov11n_seg.hef --video_path video/test.mp4

Détails du modèle

YOLO11-seg sur reComputer R Series (CM5 + Hailo-8)

YOLO11n/s/m/l/x-seg s'exécutent sur Hailo-8 via HailoRT 4.23. Le HEF expose dix têtes brutes ; l'hôte décode les boîtes DFL, les scores de classe et les coefficients de masque, assemble les masques d'instance sigmoid(coeffs @ proto) et les rend pour les 80 classes COCO.

Informations sur le modèle

VarianteEntréeHEF empaquetéImage de conteneur
YOLO11n-seg640×640×3 RGB7.9 MByolov11n_seg
YOLO11s-seg640×640×3 RGB19.7 MByolov11s_seg
YOLO11m-seg640×640×3 RGB39.6 MByolov11m_seg
YOLO11l-seg640×640×3 RGB40.6 MByolov11l_seg
YOLO11x-seg640×640×3 RGB68.0 MByolov11x_seg

Matériel et configuration de l'hôte

ÉlémentValeur
CartereComputer R Series avec Raspberry Pi CM5
AccélérateurHailo-8 via PCIe, exposé comme /dev/hailo0
RuntimeHailoRT 4.23.x (l'hôte et le conteneur doivent partager majeur.mineur)
Python dans le conteneur3.11, aarch64
bash
sudo apt update
sudo apt install hailo-all -y
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

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

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

YOLO11n-seg

bash
sudo docker run --rm \
  --name pi5-hailo8-yolov11n-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/yolov11n_seg:latest \
  python web_detection.py --model_path model/yolov11n_seg.hef --video_path video/test.mp4

YOLO11s-seg

bash
sudo docker run --rm \
  --name pi5-hailo8-yolov11s-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/yolov11s_seg:latest \
  python web_detection.py --model_path model/yolov11s_seg.hef --video_path video/test.mp4

YOLO11m-seg

bash
sudo docker run --rm \
  --name pi5-hailo8-yolov11m-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/yolov11m_seg:latest \
  python web_detection.py --model_path model/yolov11m_seg.hef --video_path video/test.mp4

YOLO11l-seg

bash
sudo docker run --rm \
  --name pi5-hailo8-yolov11l-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/yolov11l_seg:latest \
  python web_detection.py --model_path model/yolov11l_seg.hef --video_path video/test.mp4

YOLO11x-seg

bash
sudo docker run --rm \
  --name pi5-hailo8-yolov11x-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/yolov11x_seg:latest \
  python web_detection.py --model_path model/yolov11x_seg.hef --video_path video/test.mp4

Ouvrez http://<Board_IP>:8000 pour voir l'aperçu web (masques d'instances superposés par classe + boîtes de détection).

Mode caméra USB

bash
sudo docker run --rm \
  --name pi5-hailo8-yolov11n-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/yolov11n_seg:latest \
  python web_detection.py --model_path model/yolov11n_seg.hef --camera_id 0

REST API

Chaque variante possède son propre endpoint :

VarianteEndpoint
YOLO11n-segPOST /api/models/yolov11n_seg/predict
YOLO11s-segPOST /api/models/yolov11s_seg/predict
YOLO11m-segPOST /api/models/yolov11m_seg/predict
YOLO11l-segPOST /api/models/yolov11l_seg/predict
YOLO11x-segPOST /api/models/yolov11x_seg/predict
bash
curl -X POST "http://<Board_IP>:8000/api/models/yolov11n_seg/predict" \
  -F "file=@test.jpg"

Notes d'implémentation

  • Le HEF expose 10 vstreams bruts et aucun NMS sur puce : par stride (20×20, 40×40, 80×80), une tête de boîte DFL à 64 canaux, une tête de classe à 80 canaux et une tête de coefficients de masque à 32 canaux, plus un prototype 160×160×32.
  • L'hôte exécute l'espérance softmax DFL (16 bins), la sigmoïde sur les têtes de classe brutes, le NMS par classe (100 détections dans l'aperçu) et l'assemblage des masques sigmoid(coeffs @ proto) recadrés sur chaque boîte (seuil 0.5).
  • Le padding letterbox est de 114 ; la normalisation moyenne 0 / écart-type 255 est compilée dans le HEF. Les boîtes et les masques sont ramenés au cadre d'origine avant le dessin.
  • La taille d'entrée du HEF est lue au démarrage (640×640). Le décodage CPU est le goulot d'étranglement de l'aperçu sur les variantes les plus grandes.

Notes de développement

  • Sources : src/rpi5_hailo8_yolov11{n,s,m,l,x}_seg/
  • Dockerfiles : docker/hailo8/yolov11{n,s,m,l,x}_seg.dockerfile
  • Conteneurs : ghcr.io/seeed-projects/recomputer-hailo8-cv/yolov11{n,s,m,l,x}_seg:latest
  • HEF : Hailo Model Zoo v2.20.0 (hailo8), tailles et SHA256 consignés dans le model/README.md de chaque module
  • Famille : YOLO11-seg (Ultralytics, AGPL-3.0)

Entrées et sorties

Entrée : image, vidéo ou flux caméra USB. Sortie : boîtes de classes COCO avec masques d’instance et aperçu MJPEG annoté.