CV / YOLOv6
YOLOv6
Détection d'objets COCO YOLOv6 sur reComputer RK3576/RK3588 (RKNN) et reComputer R Series avec Hailo-8 ou 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 --privileged --net=host --device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolov6:latest \
python3 web_detection.py --platform rk3576 --model_path model/yolov6n.rknn --video_path video/test.mp4API REST
Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "yolov6",
"messages": [{"role": "user", "content": "Hello"}]
}'import requests
resp = requests.post(
"http://localhost:8080/v1/chat/completions",
json={"model": "yolov6", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())Détails du modèle
reComputer R Series (CM5 + Hailo-8)YOLOv6n on reComputer R Series (CM5 + Hailo-8)
YOLOv6n effectue la détection d'objets COCO (80 classes) sur Hailo-8 via HailoRT. Le HEF compilé renvoie soit le résultat NMS embarqué (HPP), soit les neuf têtes fractionnées brutes ; l'application gère les deux et journalise celle que le HEF a produite.
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 cette image est 4.23.x.
Exécution avec la vidéo de démonstration
sudo docker run --rm \
--name cm5-hailo8-yolov6n \
--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/yolov6n:latest \
python web_detection.py --model_path model/yolov6n.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-yolov6n \
--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/yolov6n:latest \
python web_detection.py --model_path model/yolov6n.hef --camera_id 0Fichier HEF
| HEF | Taille | Remarques |
|---|---|---|
yolov6n.hef | 5,774,047 (5.5 MB) | Le HEF provient du build v2.19.0 du Hailo Model Zoo pour Hailo-8 ; paramètres 4.32M, opérations 11.12G. |
Source: https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v2.19.0/hailo8/yolov6n.hef.
REST API
POST http://<Board_IP>:8000/api/models/yolov6n/predictcurl -X POST "http://<Board_IP>:8000/api/models/yolov6n/predict" \
-F "file=@test.jpg"| Endpoint | Méthode | Rôle |
|---|---|---|
/ | GET | Interface d'aperçu web |
/api/models/yolov6n/predict | POST | Détections (JSON) |
/api/video_feed | GET | Flux d'aperçu MJPEG |
Notes d'implémentation
- Le Model Zoo
base/yolov6.yamlutilisehpp=true,meta_arch=yolo_v6,score_threshold=0.03etnms_iou_thresh=0.65;info.output_shapedocumente les neuf têtes fractionnées brutes (4 boîtes, 1 objectness, 80 classes par stride 32/16/8). - Le module gère les deux formats de compilation : si le HEF a déjà appliqué le NMS (HPP) il analyse le tenseur post-NMS (tampon compact par classe, formes denses
Cx5xD/CxDx5, liste ragged NMS-by-score) ; s'il renvoie les têtes brutes il décode les distances autour du centre de cellule (unités de stride), multiplie sigmoid(classes) par sigmoid(objectness) et applique un NMS par classe avec la valeur du curseur IOU. [YOLOv6n] layout=...est journalisé une fois à la première inférence pour confirmer le format sur le matériel.- 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 (l'évaluation du Model Zoo utilise
labels_offset=1). - Valeurs par défaut : confiance 0,25 ; avec le NMS embarqué le curseur IOU est sans effet, avec les têtes brutes il pilote le NMS de l'hôte.
Notes de développement
- Module source :
src/hailo10h_yolov6n/(Hailo-10H) ousrc/rpi5_hailo8_yolov6n/(Hailo-8) dans le dépôt de modèles correspondant - Conteneur :
ghcr.io/seeed-projects/recomputer-hailo8-cv/yolov6n:latest - Le Hailo Model Zoo ne publie que YOLOv6n ; YOLOv6s/m/l n'ont pas de HEF Hailo.
- Licence du modèle : GPL-3.0 (amont meituan/YOLOv6).
Entrées et sorties
Input: image, video frame, or camera frame. Output: COCO classes, confidence scores, and boxes.