Estimation de pose avec Ultralytics YOLO#
L’estimation de pose est une tâche qui consiste à identifier l’emplacement de points spécifiques dans une image, généralement appelés points clés. Les points clés peuvent représenter différentes parties de l’objet, comme des articulations, des repères ou d’autres caractéristiques distinctives. Les emplacements des points clés sont généralement représentés par 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 identifier des parties spécifiques d’un objet dans une scène, ainsi que leur position les unes par rapport aux autres.
Watch: How to Run Real-Time Pose Estimation with Ultralytics YOLO26 | Tracking & Keypoints Extraction 🕺
Les modèles pose YOLO26 utilisent le suffixe -pose, c’est-à-dire yolo26n-pose.pt. Ces modèles sont entraînés sur le jeu de données COCO keypoints et conviennent à diverses tâches d’estimation de pose.
Le modèle de pose YOLO26 par défaut comporte 17 points clés, chacun représentant une partie différente du corps humain. Voici la correspondance entre chaque indice et l’articulation correspondante :
- 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
Modèles#
Les modèles de pose préentraînés Ultralytics YOLO26 sont présentés ici. Les modèles Detect, Segment et Pose sont préentraînés sur le jeu de données COCO, les modèles Semantic sont préentraînés sur Cityscapes, et les modèles Classify sont préentraînés sur le jeu de données ImageNet.
Les modèles sont automatiquement téléchargés depuis la dernière version d’Ultralytics lors de la 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 à un modèle unique et une seule échelle sur le jeu de données COCO Keypoints val2017.
Reproduis-les avecyolo val pose data=coco-pose.yaml device=0 nms=False - La vitesse est calculée comme la moyenne sur les images COCO val à l’aide d’une instance Amazon EC2 P4d.
Reproduis-la avecyolo val pose data=coco-pose.yaml batch=1 device=0|cpu nms=False - Params and FLOPs values are for fused models after Conv/BatchNorm folding and removal of the unused detection branch. Pretrained checkpoints retain the full training architecture and may show higher counts.
Consulte l'aperçu non publié de YOLO27 pour voir les résultats préliminaires des points clés sur COCO.
Entraîner#
Entraîne un modèle YOLO26-pose sur le jeu de données COCO8-pose. Le jeu de données COCO8-pose est un petit échantillon de données, idéal pour tester et déboguer tes modèles d’estimation de pose.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-pose.yaml") # build a new model from YAML
model = YOLO("yolo26n-pose.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-pose.yaml").load("yolo26n-pose.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)Consulte les détails complets du mode train sur la page Train. Les modèles de pose peuvent également être entraînés avec l’entraînement cloud d’Ultralytics Platform.
Format du dataset#
Le format de jeu de données de pose YOLO peut être consulté en détail dans le Dataset Guide. Pour convertir un jeu de données JSON COCO keypoints existant au format YOLO, utilise la fonction intégrée convert_coco avec use_keypoints=True, comme décrit dans le COCO to YOLO guide. L'Ultralytics Platform annotation prend également en charge les étiquettes de pose avec des modèles de squelette intégrés pour les dispositions de personne, de main, de visage et de points clés personnalisés.
Pour les tâches d’estimation de pose personnalisées, tu peux également explorer des jeux de données spécialisés comme Tiger-Pose pour l’estimation de pose animale, Hand Keypoints pour le suivi des mains ou Dog-Pose pour l’analyse de la pose canine.
Validation#
Évalue l’exactitude d’un modèle YOLO26n-pose entraîné sur le jeu de données COCO8-pose. Aucun argument n’est nécessaire, car le model conserve ses data et ses arguments d’entraînement comme attributs du modèle.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-pose.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # a list containing mAP50-95 for each category
metrics.box.image_metrics # per-image metrics dictionary for box with precision, recall, F1, TP, FP, and FN
metrics.pose.map # map50-95(P)
metrics.pose.map50 # map50(P)
metrics.pose.map75 # map75(P)
metrics.pose.maps # a list containing mAP50-95(P) for each category
metrics.pose.image_metrics # per-image metrics dictionary for pose with precision, recall, F1, TP, FP, and FNPrédiction#
Utilise un modèle YOLO26n-pose entraîné pour effectuer des prédictions sur des images. Le mode predict te permet d’effectuer des inférences sur des images, des vidéos ou des flux en temps réel.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-pose.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg") # predict on an image
# Access the results
for result in results:
xy = result.keypoints.xy # x and y coordinates
xyn = result.keypoints.xyn # normalized
kpts = result.keypoints.data # x, y, visibility (if available)Consulte les détails complets du mode predict dans la page Prédiction.
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 appartiennent ces points clés.
| Attribut | Type | Forme | Description |
|---|---|---|---|
result.keypoints | Keypoints | (N) | Points clés. |
result.keypoints.data | torch.float32 | (N,K,2/3) | x,y plus 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’instances. |
Pour connaître les champs Results spécifiques à chaque tâche, consulte la section Résultats des prédictions par tâche.
Exportation#
Exporte un modèle YOLO26n Pose vers un autre format, comme ONNX ou CoreML. Cela te permet de déployer ton modèle sur différentes plateformes et différents appareils pour l’inférence en temps réel.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-pose.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")Les formats d’exportation disponibles pour YOLO26-pose sont présentés dans le tableau ci-dessous. Tu peux exporter vers n’importe quel format à l’aide de l’argument format, c’est-à-dire format='onnx' ou format='engine'. Tu peux effectuer directement des prédictions ou des validations sur les modèles exportés, par exemple avec yolo predict model=yolo26n-pose.onnx. Des exemples d’utilisation sont affichés pour ton modèle une fois l’exportation terminée.
| 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 |
| TF SavedModel | saved_model | yolo26n-pose_saved_model/ | ✅ | imgsz, keras, 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 |
| 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 |
| LiteRT | litert | yolo26n-pose.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n-pose_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n-pose_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n-pose.aimodel | ✅ | imgsz, batch, quantize |
nms=None utilise par défaut des sorties brutes pour NMS externe. Définis nms=False pour sélectionner une tête sans NMS disponible ; les formats non pris en charge reviennent à leur chemin de sortie natif. Les entrées nms ci-dessus identifient les formats capables d'intégrer NMS avec nms=True.
Consulte les détails complets du mode export dans la page Exportation.
FAQ#
L’estimation de pose avec Ultralytics YOLO26 consiste à identifier des points spécifiques, appelés points clés, dans une image. 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, commeyolo26n-pose.pt. Ces modèles sont préentraînés sur des jeux de données tels que COCO keypoints et peuvent être utilisés pour diverses tâches d’estimation de pose. Pour plus d’informations, consulte la page consacrée à l’estimation de pose.La validation d’un modèle YOLO26-pose consiste à évaluer son exactitude à l’aide des mêmes paramètres de jeu de données conservés pendant l’entraînement. Voici un exemple :
from ultralytics import YOLO # Load a model model = YOLO("yolo26n-pose.pt") # load an official model model = YOLO("path/to/best.pt") # load a custom model # Validate the model metrics = model.val() # no arguments needed, dataset and settings rememberedPour plus d’informations, consulte la section Val.
Oui, tu peux exporter un modèle YOLO26-pose vers différents formats comme ONNX, CoreML, TensorRT, etc. Cette opération peut être effectuée avec Python ou l’interface de ligne de commande (CLI).
from ultralytics import YOLO # Load a model model = YOLO("yolo26n-pose.pt") # load an official model model = YOLO("path/to/best.pt") # load a custom-trained model # Export the model model.export(format="onnx")Consulte la section Export pour plus d’informations. Les modèles exportés peuvent être déployés sur des appareils edge 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, tels que YOLO26n-pose, YOLO26s-pose et YOLO26m-pose, entre autres. Ces modèles diffèrent par leur taille, leur exactitude (mAP) et leur vitesse. Par exemple, le modèle YOLO26n-pose atteint une valeur mAPpose50-95 de 57,2 et une valeur mAPpose50 de 83,3. Pour obtenir la liste complète et les détails des performances, consulte la section Modèles.
L’entraînement d’un modèle YOLO26-pose sur un jeu de données personnalisé consiste à charger un modèle, qu’il s’agisse d’un nouveau modèle défini par un fichier YAML ou d’un modèle préentraîné. Tu peux ensuite lancer le processus d’entraînement avec le jeu de données et les paramètres spécifiés.
Pour obtenir des informations détaillées sur l’entraînement, consulte la section Train. Tu peux également utiliser l’entraînement cloud d’Ultralytics Platform pour entraîner des modèles d’estimation de pose personnalisés sans écrire de code.