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.
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-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.mp4API REST
Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.
curl -X POST "http://<Board_IP>:8000/api/models/yolo26n/predict" \
-F "file=@test.jpg"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ément | Valeur |
|---|---|
| Carte | reComputer R Series avec Raspberry Pi CM5 |
| Accélérateur | Hailo-8 via PCIe, exposé comme /dev/hailo0 |
| Runtime | HailoRT 4.23.x |
| Python dans le conteneur | 3.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 :
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/hailo0La version HailoRT attendue pour ces images est 4.23.x.
Exécution avec la vidéo de démonstration
YOLO26n:
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.mp4YOLO26s:
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.mp4YOLO26m:
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.mp4Ouvrez http://<BOARD_IP>:8000 pour afficher l'aperçu web.
Mode caméra USB
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 0Remplacez yolo26n par yolo26s ou yolo26m pour une autre variante.
Fichiers HEF
| Modèle | Taille | Remarques |
|---|---|---|
yolo26n.hef | 8,755,512 (8.3 MB) | paramètres 2.4M, ops 5.5G |
yolo26s.hef | 20,307,365 (19.4 MB) | paramètres 9.5M, ops 20.9G |
yolo26m.hef | 29,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
POST http://<Board_IP>:8000/api/models/yolo26n/predictcurl -X POST "http://<Board_IP>:8000/api/models/yolo26n/predict" \
-F "file=@test.jpg"| Endpoint | Méthode | Rôle |
|---|---|---|
/ | GET | Interface d'aperçu web |
/api/models/yolo26{n,s,m}/predict | POST | Détections (JSON) |
/api/video_feed | GET | Flux d'aperçu MJPEG |
Notes d'implémentation
- Le Model Zoo
base/yolo26.yamlutilisenms=false,sigmoid=false,hpp=falseetmeta_arch=yolo26, avecpost_nms_topk=300hérité debase/yolov8.yaml;info.output_shapedocumente 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) etpadding_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) ousrc/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).