Ultralytics YOLO27 :

Estimation de pose avec Ultralytics YOLO#

Ultralytics YOLO pose estimation with human body keypoint detection

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

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 :

  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

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è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 à un modèle unique et une seule échelle sur le jeu de données COCO Keypoints val2017.
    Reproduis-les avec yolo 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 avec yolo 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.

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

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

Pré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.

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

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

AttributTypeFormeDescription
result.keypointsKeypoints(N)Points clés.
result.keypoints.datatorch.float32(N,K,2/3)x,y plus 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’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.

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

FormatArgument formatModèleMétadonnéesArguments
PyTorch-yolo26n-pose.pt-
TorchScripttorchscriptyolo26n-pose.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-pose.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-pose_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-pose.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-pose.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-pose_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-pose.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-pose_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-pose_paddle_model/imgsz, batch, device
MNNmnnyolo26n-pose.mnnimgsz, 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.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-pose.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-pose_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-pose_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms
Apple Core AIcoreaiyolo26n-pose.aimodelimgsz, 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, comme yolo26n-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.

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

    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)
    
    # Train the model
    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 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.

  • 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 remembered

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

Commentaires