Estimation de pose avec Ultralytics YOLO#
L’estimation de pose consiste à repérer dans une image l’emplacement de points spécifiques, généralement appelés points clés. Ces points clés peuvent représenter différentes parties de l’objet, telles que des articulations, des repères ou d’autres caractéristiques distinctives. Les emplacements des points clés sont généralement représentés sous la forme d’un ensemble de coordonnées 2D [x, y], éventuellement accompagné d’un indicateur de visibilité [x, y, visible].
La sortie d’un modèle d’estimation de pose est un ensemble de points représentant les points clés d’un objet dans l’image, généralement accompagné des scores de confiance de chaque point. L’estimation de pose est un bon choix lorsque tu dois repérer des parties spécifiques d’un objet dans une scène et déterminer leur emplacement les unes par rapport aux autres.
Regarder : Comment effectuer une estimation de pose en temps réel avec Ultralytics YOLO26 | Suivi et extraction des points clés 🕺
Les modèles YOLO26 Pose utilisent le suffixe -pose, par exemple yolo26n-pose.pt, et sont préentraînés sur les points clés COCO.
Modèles#
Les modèles YOLO26 Pose préentraînés sur le jeu de données des points clés COCO sont présentés ci-dessous.
Les modèles sont automatiquement téléchargés depuis la dernière version d’Ultralytics lors de leur première utilisation.
| Modèle | taille (pixels) | mAPpose 50-95(e2e) | mAPpose 50(e2e) | Vitesse CPU ONNX (ms) | Vitesse T4 TensorRT10 (ms) | paramètres (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-pose | 640 | 57.2 | 83.3 | 40.3 ± 0.5 | 1.8 ± 0.0 | 2.9 | 7.6 |
| YOLO26s-pose | 640 | 63.0 | 86.6 | 85.3 ± 0.9 | 2.7 ± 0.0 | 10.4 | 24.1 |
| YOLO26m-pose | 640 | 68.8 | 89.6 | 218.0 ± 1.5 | 5.0 ± 0.1 | 21.5 | 73.3 |
| YOLO26l-pose | 640 | 70.4 | 90.5 | 275.4 ± 2.4 | 6.5 ± 0.1 | 25.9 | 91.7 |
| YOLO26x-pose | 640 | 71.6 | 91.6 | 565.4 ± 3.0 | 12.2 ± 0.2 | 57.6 | 202.3 |
- Les valeurs mAPval correspondent à une évaluation à une seule échelle avec un seul modèle sur le jeu de données COCO Keypoints val2017.
Reproduis ces résultats avecyolo pose val data=coco-pose.yaml device=0 nms=False - Vitesse moyenne calculée sur les images COCO val avec ONNX sur CPU et TensorRT10 sur un GPU NVIDIA T4.
Reproduis-la avecyolo pose val data=coco-pose.yaml batch=1 device=0|cpu nms=False - Les valeurs Params et FLOPs correspondent aux modèles fusionnés après la fusion Conv/BatchNorm et la suppression de la branche de détection inutilisée. Les checkpoints préentraînés conservent l’architecture d’entraînement complète et peuvent afficher des valeurs plus élevées.
Consulte l’aperçu de YOLO27 non encore publié pour découvrir les résultats préliminaires sur les points clés COCO.
Entraînement#
Entraîne YOLO26n-pose sur le jeu de données COCO8-pose pendant 100 époques, avec une taille d’image de 640. Pour obtenir la liste complète des arguments disponibles, consulte la page Configuration.
from ultralytics import YOLO
# Charger un modèle
model = YOLO("yolo26n-pose.yaml") # créer un nouveau modèle à partir du fichier YAML
model = YOLO("yolo26n-pose.pt") # charger un modèle préentraîné (recommandé pour l’entraînement)
model = YOLO("yolo26n-pose.yaml").load("yolo26n-pose.pt") # créer à partir du fichier YAML et transférer les poids
# Entraîner le modèle
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)Consulte la page Entraînement pour découvrir tous les détails du mode train. Tu peux aussi entraîner des modèles de pose avec l’entraînement cloud d’Ultralytics Platform.
Format du jeu de données#
Tu trouveras une description détaillée du format des jeux de données de pose YOLO dans le Guide des jeux de données. Pour convertir un jeu de données JSON existant de points clés COCO au format YOLO, utilise la fonction intégrée convert_coco avec use_keypoints=True, comme indiqué dans le guide de conversion de COCO vers YOLO. L’annotation avec Ultralytics Platform prend aussi en charge les étiquettes de pose et propose des modèles de squelette intégrés pour les personnes, les mains, les visages et les configurations de points clés personnalisées.
Pour les tâches personnalisées d’estimation de pose, tu peux aussi explorer des jeux de données spécialisés comme Tiger-Pose pour estimer la pose des animaux, Hand Keypoints pour le suivi des mains ou Dog-Pose pour l’analyse de la pose des chiens.
Validation#
Valide la précision d’un modèle YOLO26n-pose entraîné. Aucun argument n’est nécessaire, car model conserve les paramètres data et les arguments de l’entraînement comme attributs du modèle : path/to/best.pt de l’exemple d’entraînement effectue la validation sur COCO8-pose. Les poids officiels indiquent un chemin vers le jeu de données d’entraînement qui n’existe pas sur ta machine ; le modèle utilise donc le jeu de données par défaut de la tâche coco8-pose.yaml et affiche un avertissement. Transmets data pour valider le modèle sur un autre jeu de données.
from ultralytics import YOLO
# Charger un modèle
model = YOLO("yolo26n-pose.pt") # charger un modèle officiel
model = YOLO("path/to/best.pt") # charger un modèle personnalisé
# Valider le modèle
metrics = model.val() # aucun argument nécessaire, le jeu de données et les paramètres sont mémorisés
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # une liste contenant mAP50-95 pour chaque catégorie
metrics.box.image_metrics # dictionnaire de métriques par image pour les boîtes, avec la précision, le rappel, le score F1, TP, FP et FN
metrics.pose.map # map50-95(P)
metrics.pose.map50 # map50(P)
metrics.pose.map75 # map75(P)
metrics.pose.maps # liste contenant le mAP50-95(P) pour chaque catégorie
metrics.pose.image_metrics # dictionnaire de métriques par image pour la pose, avec la précision, le rappel, le score F1, TP, FP et FNPrédiction#
Utilise un modèle YOLO26n-pose entraîné pour effectuer des prédictions sur des images.
from ultralytics import YOLO
# Charger un modèle
model = YOLO("yolo26n-pose.pt") # charger un modèle officiel
model = YOLO("path/to/best.pt") # charger un modèle personnalisé
# Effectuer des prédictions avec le modèle
results = model("https://ultralytics.com/images/bus.jpg") # effectuer une prédiction sur une image
# Accéder aux résultats
for result in results:
xy = result.keypoints.xy # coordonnées x et y
xyn = result.keypoints.xyn # normalized
kpts = result.keypoints.data # x, y, visibilité (si disponible)Consulte les détails complets du mode predict sur la page Predict.
Sortie des résultats#
L’estimation de pose renvoie un objet Results par image. Les principaux champs de prédiction sont result.keypoints pour les coordonnées de pose et result.boxes pour les instances détectées auxquelles ces points clés appartiennent.
| Attribut | Type | Forme | Description |
|---|---|---|---|
result.keypoints | Keypoints | (N) | Points clés. |
result.keypoints.data | torch.float32 | (N,K,2/3) | x,y avec visibilité/confiance facultative. |
result.keypoints.xy | torch.float32 | (N,K,2) | Points clés en pixels. |
result.keypoints.xyn | torch.float32 | (N,K,2) | Points clés normalisés. |
result.boxes | Boxes | (N) | Boîtes d’instance. |
Pour connaître les champs Results propres à chaque tâche, consulte la section Résultats des prédictions par tâche.
Table de correspondance des indices des points clés#
Les modèles YOLO26 Pose par défaut prédisent les 17 points clés COCO ; l’indice k dans result.keypoints.xy[:, k] correspond donc à :
- Nez
- Œil gauche
- Œil droit
- Oreille gauche
- Oreille droite
- Épaule gauche
- Épaule droite
- Coude gauche
- Coude droit
- Poignet gauche
- Poignet droit
- Hanche gauche
- Hanche droite
- Genou gauche
- Genou droit
- Cheville gauche
- Cheville droite
Export#
Exporte un modèle YOLO26n-pose vers un autre format, comme ONNX, CoreML, etc.
from ultralytics import YOLO
# Charger un modèle
model = YOLO("yolo26n-pose.pt") # charger un modèle officiel
model = YOLO("path/to/best.pt") # charger un modèle personnalisé
# Exporter le modèle
model.export(format="onnx")Les formats d’exportation disponibles pour YOLO26-pose sont indiqués dans le tableau ci-dessous. Tu peux exporter vers n’importe quel format à l’aide de l’argument format, par exemple format='onnx' ou format='engine'. Tu peux effectuer des prédictions ou valider directement les modèles exportés, par exemple avec yolo predict model=yolo26n-pose.onnx. Une fois l’exportation terminée, des exemples d’utilisation de ton modèle s’affichent.
| Format | Argument format | Modèle | Métadonnées | Arguments |
|---|---|---|---|---|
| PyTorch | - | yolo26n-pose.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-pose.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n-pose.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-pose_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-pose.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-pose.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| Apple Core AI | coreai | yolo26n-pose.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n-pose_saved_model/ | ✅ | imgsz, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-pose.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n-pose_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| LiteRT | litert | yolo26n-pose.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-pose_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-pose.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n-pose_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-pose_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-pose_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n-pose_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-pose_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-pose_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-pose_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| Hailo | hailo | yolo26n-pose_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n-pose_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n-pose_xilinx_model/ | ✅ | imgsz, name, quantize, data, fraction, opset, simplify, device |
nms=None produit par défaut des sorties brutes pour la NMS externe. Définis nms=False pour sélectionner une tête disponible sans NMS ; les formats non pris en charge utilisent leur voie de sortie native. Les entrées nms ci-dessus désignent les formats qui peuvent intégrer la NMS avec nms=True.
Consulte tous les détails de export sur la page Exportation.
FAQ#
L’estimation de pose avec Ultralytics YOLO26 consiste à repérer dans une image des points spécifiques appelés points clés. Ces points clés représentent généralement des articulations ou d’autres caractéristiques importantes de l’objet. La sortie comprend les coordonnées
[x, y]et les scores de confiance de chaque point. Les modèles YOLO26-pose sont spécialement conçus pour cette tâche et utilisent le suffixe-pose, par exempleyolo26n-pose.pt. Ces modèles sont préentraînés sur des jeux de données comme les points clés COCO et peuvent servir à diverses tâches d’estimation de pose. Pour en savoir plus, consulte la page consacrée à l’estimation de pose.Pour entraîner un modèle YOLO26-pose sur un jeu de données personnalisé, tu dois charger un modèle, soit un nouveau modèle défini par un fichier YAML, soit un modèle préentraîné. Tu peux ensuite lancer l’entraînement avec le jeu de données et les paramètres spécifiés.
Exemplefrom ultralytics import YOLO # Charger un modèle model = YOLO("yolo26n-pose.yaml") # créer un nouveau modèle à partir du fichier YAML model = YOLO("yolo26n-pose.pt") # charger un modèle préentraîné (recommandé pour l’entraînement) # Entraîner le modèle results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Pour obtenir des informations détaillées sur l’entraînement, consulte la section Entraînement. Tu peux aussi utiliser l’entraînement cloud d’Ultralytics Platform pour entraîner des modèles d’estimation de pose personnalisés sans écrire de code.
La validation d’un modèle YOLO26-pose consiste à évaluer sa précision à l’aide des mêmes paramètres de jeu de données que ceux conservés lors de l’entraînement. Voici un exemple :
Exemplefrom ultralytics import YOLO # Charger un modèle model = YOLO("yolo26n-pose.pt") # charger un modèle officiel model = YOLO("path/to/best.pt") # charger un modèle personnalisé # Valider le modèle metrics = model.val() # aucun argument nécessaire, le jeu de données et les paramètres sont mémorisésPour en savoir plus, consulte la section Validation.
Oui, tu peux exporter un modèle YOLO26-pose vers différents formats, comme ONNX, CoreML, TensorRT, etc. Pour ce faire, utilise Python ou l’interface en ligne de commande (CLI).
Exemplefrom ultralytics import YOLO # Charger un modèle model = YOLO("yolo26n-pose.pt") # charger un modèle officiel model = YOLO("path/to/best.pt") # charger un modèle personnalisé # Exporter le modèle model.export(format="onnx")Pour en savoir plus, consulte la section Exportation. Les modèles exportés peuvent être déployés sur des appareils périphériques pour des applications en temps réel, comme le suivi de la condition physique, l’analyse sportive ou la robotique.
Ultralytics YOLO26 propose différents modèles de pose préentraînés, notamment YOLO26n-pose, YOLO26s-pose et YOLO26m-pose. Ces modèles diffèrent par leur taille, leur précision (mAP) et leur vitesse. Pour consulter la liste complète, avec le mAP des points clés COCO, la vitesse, le nombre de paramètres et les FLOPs de chaque modèle, rends-toi dans la section Modèles.