CV / YOLO26

YOLO26

Détection d'objets COCO YOLO26 : déploiement en une commande sur NVIDIA Jetson, ou le HEF Hailo sur reComputer R Series avec Hailo-8 / Hailo-10H.

18 téléchargements
Taille
16GB disk
Mémoire
4GB+
Précision
JetPack 5/6/7 / 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 cm5-hailo8-yolo26n \
  --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/yolo26n:latest \
  python web_detection.py --model_path model/yolo26n.hef --video_path video/test.mp4

API REST

Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.

Curl
curl -X POST "http://<Board_IP>:8000/api/models/yolo26n/predict" \
  -F "file=@test.jpg"
Python
import requests

with open("test.jpg", "rb") as image_file:
    response = requests.post(
        "http://<Board_IP>:8000/api/models/yolo26n/predict",
        files={"file": image_file},
        timeout=30,
    )

print(response.json())

Détails du modèle

reComputer R Series (CM5 + Hailo-8)

YOLO26 on reComputer R Series (CM5 + Hailo-8)

YOLO26n / YOLO26s / YOLO26m effectuent la détection d'objets COCO (80 classes) sur Hailo-8 via HailoRT. YOLO26 est une tête one2one (une prédiction par cellule, sans ancres, sans NMS) : l'hôte décode les têtes fractionnées brutes et sélectionne avec le top-k en deux étapes ; une compilation embarquant le NMS sur puce est également gérée et le format utilisé est journalisé à la première inférence.

Cette page cible reComputer R Series (CM5 + Hailo-8) avec un accélérateur PCIe Hailo-8.

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
Python dans le conteneur3.11, aarch64

Installez les paquets Hailo-8 sur l'hôte et vérifiez que le pilote et le périphérique sont prêts avant de démarrer le conteneur :

bash
sudo apt update
sudo apt install hailort hailort-pcie-driver python3-hailort
sudo reboot

# After reboot
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0

La version HailoRT attendue pour ces images est 4.23.x.

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

YOLO26n:

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

YOLO26s:

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

YOLO26m:

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

Ouvrez http://<BOARD_IP>:8000 pour afficher l'aperçu web.

Mode caméra USB

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

Remplacez yolo26n par yolo26s ou yolo26m pour une autre variante.

Fichiers HEF

ModèleTailleRemarques
yolo26n.hef8,755,512 (8.3 MB)paramètres 2.4M, ops 5.5G
yolo26s.hef20,307,365 (19.4 MB)paramètres 9.5M, ops 20.9G
yolo26m.hef29,155,151 (27.8 MB)paramètres 20.4M, ops 68.4G

Les trois variantes sont des builds Hailo-8 de Hailo Model Zoo v2.19.0 issus de la même famille Ultralytics YOLO26.

Source: https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v2.19.0/hailo8/yolo26n.hef (yolo26s.hef, yolo26m.hef in the same directory).

REST API

text
POST http://<Board_IP>:8000/api/models/yolo26n/predict
bash
curl -X POST "http://<Board_IP>:8000/api/models/yolo26n/predict" \
  -F "file=@test.jpg"
EndpointMéthodeRôle
/GETInterface d'aperçu web
/api/models/yolo26{n,s,m}/predictPOSTDétections (JSON)
/api/video_feedGETFlux d'aperçu MJPEG

Notes d'implémentation

  • Le Model Zoo base/yolo26.yaml utilise nms=false, sigmoid=false, hpp=false et meta_arch=yolo26, avec post_nms_topk=300 hérité de base/yolov8.yaml ; info.output_shape documente 3 strides x (4 boîtes, 80 classes).
  • Sélection one2one : aucun NMS n'est exécuté. L'hôte applique le sigmoid, prend les top-k ancres par score de classe maximal, puis les top-k paires (ancre, classe) — plusieurs classes par ancre sont permises — et filtre selon le curseur de confiance.
  • Décodage des boîtes : la tête 4 canaux donne les distances du centre de cellule vers les bords gauche/haut et droit/bas en unités de stride (regression_length=1) ; les compilations DFL 64 canaux passent par l'espérance du softmax.
  • Si une compilation renvoie le résultat NMS embarqué (comme les HEF yolo26-seg), le tenseur post-NMS est analysé (tampon compact par classe, formes denses Cx5xD / CxDx5, liste ragged NMS-by-score) et aucune sélection côté hôte n'est effectuée.
  • Le HEF intègre normalize_in_net (mean 0 / std 255) et padding_color=114 : l'application applique un letterbox gris (114) et transmet des pixels uint8 RGB bruts.
  • Les IDs de classe 0..79 indexent directement la liste COCO standard.
  • La première inférence journalise le format et les plages de boîtes/scores ([YOLO26] layout=..., outputs=[...]).

Notes de développement

  • Modules source : src/hailo10h_yolo26{n,s,m}/ (Hailo-10H) ou src/rpi5_hailo8_yolo26{n,s,m}/ (Hailo-8) dans le dépôt de modèles correspondant
  • Conteneurs : ghcr.io/seeed-projects/recomputer-hailo8-cv/yolo26{n,s,m}:latest
  • La famille détection publie n/s/m ; YOLO26l / YOLO26x n'ont pas encore de HEF Hailo.
  • Licence du modèle : AGPL-3.0 (amont ultralytics/ultralytics).

Entrées et sorties

Entrée : image, vidéo ou caméra. Sortie : boîtes de détection 80 classes COCO (conteneur Ultralytics sur Jetson, HEF Hailo sur la R Series).