Aller au contenu

Estimation de Pose

Estimation de pose exemples

L'estimation de pose est une tâche qui consiste à identifier l'emplacement de points spécifiques dans une image, souvent appelés points clés. Ces points clés peuvent représenter différentes parties de l'objet telles que les articulations, les repères ou d'autres caractéristiques distinctives. L'emplacement des points clés est généralement représenté par un ensemble de coordonnées 2D [x, y] ou 3D [x, y, visible].

La sortie d'un modèle d'estimation de pose est un ensemble de points représentant les points clés sur un objet dans l'image, généralement accompagnés des scores de confiance pour chaque point. L'estimation de pose est un bon choix lorsque vous avez besoin d'identifier des parties spécifiques d'un objet dans une scène, et leur emplacement les uns par rapport aux autres.

Regardez : Estimation de Pose avec Ultralytics YOLOv8

Conseil

Les modèles YOLOv8 pose utilisent le suffixe -pose, c'est-à-dire yolov8n-pose.pt. Ces modèles sont entraînés sur le jeu de données COCO keypoints et conviennent à une variété de tâches d'estimation de pose.

Modèles

Les modèles Pose pré-entraînés YOLOv8 sont montrés ici. Les modèles Detect, Segment et Pose sont pré-entraînés sur le jeu de données COCO, tandis que les modèles Classify sont pré-entraînés sur le jeu de données ImageNet.

Les Modèles se téléchargent automatiquement à partir de la dernière version d'Ultralytics release lors de la première utilisation.

Modèle taille
(pixels)
mAPpose
50-95
mAPpose
50
Vitesse
CPU ONNX
(ms)
Vitesse
A100 TensorRT
(ms)
params
(M)
FLOPs
(B)
YOLOv8n-pose 640 50.4 80.1 131.8 1.18 3.3 9.2
YOLOv8s-pose 640 60.0 86.2 233.2 1.42 11.6 30.2
YOLOv8m-pose 640 65.0 88.8 456.3 2.00 26.4 81.0
YOLOv8l-pose 640 67.6 90.0 784.5 2.59 44.4 168.6
YOLOv8x-pose 640 69.2 90.2 1607.1 3.73 69.4 263.2
YOLOv8x-pose-p6 1280 71.6 91.2 4088.7 10.04 99.1 1066.4
  • Les valeurs de mAPval sont pour un seul modèle à une seule échelle sur le jeu de données COCO Keypoints val2017.
    Reproduire avec yolo val pose data=coco-pose.yaml device=0
  • La vitesse moyenne sur les images de validation COCO en utilisant une instance Amazon EC2 P4d.
    Reproduire avec yolo val pose data=coco8-pose.yaml batch=1 device=0|cpu

Entraînement

Entraînez un modèle YOLOv8-pose sur le jeu de données COCO128-pose.

Exemple

from ultralytics import YOLO

# Charger un modèle
model = YOLO('yolov8n-pose.yaml')  # construire un nouveau modèle à partir du YAML
model = YOLO('yolov8n-pose.pt')    # charger un modèle pré-entraîné (recommandé pour l'entraînement)
model = YOLO('yolov8n-pose.yaml').load('yolov8n-pose.pt')  # construire à partir du YAML et transférer les poids

# Entraîner le modèle
résultats = model.train(data='coco8-pose.yaml', epochs=100, imgsz=640)
# Construire un nouveau modèle à partir du YAML et commencer l'entraînement à partir de zéro
yolo pose train data=coco8-pose.yaml model=yolov8n-pose.yaml epochs=100 imgsz=640

# Commencer l'entraînement à partir d'un modèle *.pt pré-entraîné
yolo pose train data=coco8-pose.yaml model=yolov8n-pose.pt epochs=100 imgsz=640

# Construire un nouveau modèle à partir du YAML, transférer les poids pré-entraînés et commencer l'entraînement
yolo pose train data=coco8-pose.yaml model=yolov8n-pose.yaml pretrained=yolov8n-pose.pt epochs=100 imgsz=640

Format du jeu de données

Le format du jeu de données YOLO pose peut être trouvé en détail dans le Guide des jeux de données. Pour convertir votre jeu de données existant à partir d'autres formats (comme COCO, etc.) vers le format YOLO, veuillez utiliser l'outil JSON2YOLO d'Ultralytics.

Val

Validez la précision du modèle YOLOv8n-pose entraîné sur le jeu de données COCO128-pose. Aucun argument n'est nécessaire car le modèle conserve ses données d'entraînement et arguments en tant qu'attributs du modèle.

Exemple

from ultralytics import YOLO

# Charger un modèle
model = YOLO('yolov8n-pose.pt')     # charger un modèle officiel
model = YOLO('chemin/vers/best.pt')  # charger un modèle personnalisé

# Valider le modèle
métriques = model.val()  # aucun argument nécessaire, jeu de données et paramètres mémorisés
métriques.box.map    # map50-95
métriques.box.map50  # map50
métriques.box.map75  # map75
métriques.box.maps   # une liste contenant map50-95 de chaque catégorie
yolo pose val model=yolov8n-pose.pt  # val modèle officiel
yolo pose val model=chemin/vers/best.pt  # val modèle personnalisé

Prédiction

Utilisez un modèle YOLOv8n-pose entraîné pour exécuter des prédictions sur des images.

Exemple

from ultralytics import YOLO

# Charger un modèle
model = YOLO('yolov8n-pose.pt')     # charger un modèle officiel
model = YOLO('chemin/vers/best.pt')  # charger un modèle personnalisé

# Prédire avec le modèle
résultats = model('https://ultralytics.com/images/bus.jpg')  # prédire sur une image
yolo pose predict model=yolov8n-pose.pt source='https://ultralytics.com/images/bus.jpg'  # prédire avec modèle officiel
yolo pose predict model=chemin/vers/best.pt source='https://ultralytics.com/images/bus.jpg'  # prédire avec modèle personnalisé

Consultez les détails complets du mode predict sur la page Prédire.

Exportation

Exportez un modèle YOLOv8n Pose dans un autre format tel que ONNX, CoreML, etc.

Exemple

from ultralytics import YOLO

# Charger un modèle
model = YOLO('yolov8n-pose.pt')      # charger un modèle officiel
model = YOLO('chemin/vers/best.pt')   # charger un modèle personnalisé entraîné

# Exporter le modèle
model.export(format='onnx')
yolo export model=yolov8n-pose.pt format=onnx  # exporter modèle officiel
yolo export model=chemin/vers/best.pt format=onnx  # exporter modèle personnalisé entraîné

Les formats d'exportation YOLOv8-pose disponibles sont dans le tableau ci-dessous. Vous pouvez prédire ou valider directement sur des modèles exportés, par exemple yolo predict model=yolov8n-pose.onnx. Des exemples d'utilisation sont montrés pour votre modèle après la fin de l'exportation.

Format Argument format Modèle Métadonnées Arguments
PyTorch - yolov8n-pose.pt -
TorchScript torchscript yolov8n-pose.torchscript imgsz, optimize
ONNX onnx yolov8n-pose.onnx imgsz, half, dynamic, simplify, opset
OpenVINO openvino yolov8n-pose_openvino_model/ imgsz, half
TensorRT engine yolov8n-pose.engine imgsz, half, dynamic, simplify, workspace
CoreML coreml yolov8n-pose.mlpackage imgsz, half, int8, nms
TF SavedModel saved_model yolov8n-pose_saved_model/ imgsz, keras
TF GraphDef pb yolov8n-pose.pb imgsz
TF Lite tflite yolov8n-pose.tflite imgsz, half, int8
TF Edge TPU edgetpu yolov8n-pose_edgetpu.tflite imgsz
TF.js tfjs yolov8n-pose_web_model/ imgsz
PaddlePaddle paddle yolov8n-pose_paddle_model/ imgsz
ncnn ncnn yolov8n-pose_ncnn_model/ imgsz, half

Consultez les détails complets de export sur la page Exporter.


Created 2023-11-13, Updated 2023-11-18
Authors: glenn-jocher (3)

Commentaires