Ultralytics YOLO27 :
Get Started

Estimation de pose avec Ultralytics YOLO#

Ultralytics YOLO pose estimation with human body keypoint detection

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 🕺
Conseil

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èletaille
(pixels)
mAPpose
50-95(e2e)
mAPpose
50(e2e)
Vitesse
CPU ONNX
(ms)
Vitesse
T4 TensorRT10
(ms)
paramètres
(M)
FLOPs
(B)
YOLO26n-pose64057.283.340.3 ± 0.51.8 ± 0.02.97.6
YOLO26s-pose64063.086.685.3 ± 0.92.7 ± 0.010.424.1
YOLO26m-pose64068.889.6218.0 ± 1.55.0 ± 0.121.573.3
YOLO26l-pose64070.490.5275.4 ± 2.46.5 ± 0.125.991.7
YOLO26x-pose64071.691.6565.4 ± 3.012.2 ± 0.257.6202.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 avec yolo 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 avec yolo 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.

Exemple
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.

Exemple
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 FN

Prédiction#

Utilise un modèle YOLO26n-pose entraîné pour effectuer des prédictions sur des images.

Exemple
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.

AttributTypeFormeDescription
result.keypointsKeypoints(N)Points clés.
result.keypoints.datatorch.float32(N,K,2/3)x,y avec visibilité/confiance facultative.
result.keypoints.xytorch.float32(N,K,2)Points clés en pixels.
result.keypoints.xyntorch.float32(N,K,2)Points clés normalisés.
result.boxesBoxes(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 à :

  1. Nez
  2. Œil gauche
  3. Œil droit
  4. Oreille gauche
  5. Oreille droite
  6. Épaule gauche
  7. Épaule droite
  8. Coude gauche
  9. Coude droit
  10. Poignet gauche
  11. Poignet droit
  12. Hanche gauche
  13. Hanche droite
  14. Genou gauche
  15. Genou droit
  16. Cheville gauche
  17. Cheville droite

Export#

Exporte un modèle YOLO26n-pose vers un autre format, comme ONNX, CoreML, etc.

Exemple
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.

FormatArgument formatModèleMétadonnéesArguments
PyTorch-yolo26n-pose.pt✅-
TorchScripttorchscriptyolo26n-pose.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-pose.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-pose_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-pose.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-pose.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n-pose.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n-pose_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-pose.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-pose_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n-pose.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-pose_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n-pose.mnn✅imgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-pose_ncnn_model/✅imgsz, quantize, batch, device
IMX500imxyolo26n-pose_imx_model/✅imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-pose_rknn_model/✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-pose_executorch_model/✅imgsz, batch, device
Axeleraaxelerayolo26n-pose_axelera_model/✅imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-pose_deepx_model/✅imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-pose_qnn.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n-pose_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n-pose_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n-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 exemple yolo26n-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.

    Exemple
    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)
    
    # 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 :

    Exemple
    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

    Pour 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).

    Exemple
    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")

    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.

Commentaires