CV / YOLOv8
YOLOv8s_pose
YOLOv8s Pose estime les points clés de personne sur la plateforme reComputer série R CM5 + Hailo.
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-hailo-yolov8s-pose \
--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-r20-cv/yolov8_pose:latest \
python web_detection.py --model_path model/yolov8s_pose.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://<R20_IP>:8000/api/models/yolov8_pose/predict" \
-F "file=@test.jpg"import requests
resp = requests.post(
"http://<R20_IP>:8000/api/models/yolov8_pose/predict",
files={"file": open("test.jpg", "rb")},
timeout=30,
)
print(resp.json())Détails du modèle
YOLOv8 Pose sur reComputer série R (CM5 + Hailo)
Estimation de points clés de personne YOLOv8 Pose packagée pour reComputer série R avec Hailo-8.
Cette page est adaptée de rpi5_hailo8_yolov8_pose/README.md dans reComputer-R20-CV. Elle cible reComputer série R (CM5 + Hailo) avec un accélérateur PCIe Hailo-8.
Configuration matérielle et hôte
| Élément | Valeur |
|---|---|
| Carte | reComputer série R avec Raspberry Pi CM5 |
| Accélérateur | Hailo-8 M.2 sur PCIe, exposé comme /dev/hailo0 |
| OS | Raspberry Pi OS Bookworm, aarch64 |
| Pilote hôte | Paquet apt hailo-all |
| HailoRT validé | 4.23.x ; le pilote hôte, le firmware, la bibliothèque native et le wheel Python doivent partager la même version majeure.mineure |
sudo apt update
sudo apt install hailo-all
sudo reboot
# Après redémarrage
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 dockerExécuter avec une vidéo de démonstration
sudo docker run --rm --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-r20-cv/yolov8_pose:latest \
python web_detection.py --model_path model/yolov8s_pose.hef --video_path video/test.mp4Ouvrez http://<R20_IP>:8000 pour visualiser l'aperçu web. L'image inclut le code source du module, la vidéo de démonstration, le wheel Python HailoRT et les fichiers HEF listés ci-dessous.
Les montages bind libhailort.so proviennent intentionnellement de l'hôte. Si votre firmware n'est pas 4.23.0, remplacez les deux chemins par la version rapportée par hailortcli fw-control identify ; reconstruisez l'image si la version majeure.mineure diffère.
Mode caméra USB
sudo docker run --rm --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-r20-cv/yolov8_pose:latest \
python web_detection.py --model_path model/yolov8s_pose.hef --camera_id 0Changer de variante HEF
Remplacez la valeur par défaut de l'image en passant un --model_path différent :
sudo docker run --rm --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-r20-cv/yolov8_pose:latest \
python web_detection.py --model_path model/yolov8m_pose.hef --video_path video/test.mp4Fichiers HEF
| HEF | Taille | Notes |
|---|---|---|
yolov8s_pose.hef | 9.22 Mo | Détecteur de pose small |
yolov8m_pose.hef | 28.81 Mo | Détecteur de pose medium |
API REST
Point de terminaison de prédiction :
POST http://<R20_IP>:8000/api/models/yolov8_pose/predictExemple de requête image :
curl -X POST "http://<R20_IP>:8000/api/models/yolov8_pose/predict" \
-F "file=@test.jpg"Points de terminaison courants du service :
| Point de terminaison | Méthode | Objectif |
|---|---|---|
/ | GET | Interface d'aperçu web |
/api/models/yolov8_pose/predict | POST | Inférence image unique à partir d'une image/vidéo téléchargée ou de la trame actuelle |
/api/video_feed | GET | Flux d'aperçu MJPEG |
/api/config | GET / POST | Lire ou mettre à jour les seuils d'exécution |
/api/video/upload | POST | Télécharger une vidéo pour analyse hors ligne |
/api/video/analyze | POST | Démarrer l'analyse hors ligne |
/api/video/status | GET | Interroger la progression de l'analyse |
/api/video/list | GET | Lister les vidéos téléchargées et traitées |
/api/video/download/{filename} | GET | Télécharger la sortie traitée |
Notes de développement
- Module source :
src/rpi5_hailo8_yolov8_pose/ - Dockerfile :
docker/hailo8/yolov8_pose.dockerfile - Service principal :
web_detection.pyenveloppe l'inférence HailoRT, le post-traitement, l'aperçu MJPEG, la prédiction REST et l'analyse vidéo hors ligne. - Lors du remplacement par un HEF personnalisé, gardez la disposition de sortie compatible avec le code de post-traitement du module ou mettez à jour
post_process_hailo().
Entrées et sorties
Entrée : image, vidéo ou flux caméra USB. Sortie : boîtes de personne, confiances, points clés et aperçu MJPEG annoté.