Ultralytics YOLO27:

Posenschätzung mit Ultralytics YOLO#

Ultralytics YOLO pose estimation with human body keypoint detection

Die Posenschätzung ist eine Aufgabe, bei der die Position bestimmter Punkte in einem Bild ermittelt wird, die üblicherweise als Keypoints bezeichnet werden. Die Keypoints können verschiedene Teile des Objekts darstellen, z. B. Gelenke, Orientierungspunkte oder andere markante Merkmale. Die Positionen der Keypoints werden üblicherweise als eine Menge von 2D-[x, y]-Koordinaten dargestellt, optional mit einem Sichtbarkeits-Flag [x, y, visible].

Die Ausgabe eines Posenschätzungsmodells ist eine Menge von Punkten, die die Keypoints eines Objekts im Bild darstellen, üblicherweise zusammen mit den Konfidenzwerten für jeden Punkt. Die Posenschätzung ist eine gute Wahl, wenn du bestimmte Teile eines Objekts in einer Szene sowie deren Position zueinander ermitteln musst.



Watch: How to Run Real-Time Pose Estimation with Ultralytics YOLO26 | Tracking & Keypoints Extraction 🕺
Tipp

YOLO26-pose-Modelle verwenden das Suffix -pose, also yolo26n-pose.pt. Diese Modelle werden mit dem Datensatz COCO keypoints trainiert und eignen sich für eine Vielzahl von Posenschätzungsaufgaben.

Im standardmäßigen YOLO26-Posemodell gibt es 17 Keypoints, die jeweils einen anderen Teil des menschlichen Körpers darstellen. Hier ist die Zuordnung jedes Index zum jeweiligen Körpergelenk:

  1. Nase
  2. Linkes Auge
  3. Rechtes Auge
  4. Linkes Ohr
  5. Rechtes Ohr
  6. Linke Schulter
  7. Rechte Schulter
  8. Linker Ellbogen
  9. Rechter Ellbogen
  10. Linkes Handgelenk
  11. Rechtes Handgelenk
  12. Linke Hüfte
  13. Rechte Hüfte
  14. Linkes Knie
  15. Rechtes Knie
  16. Linker Knöchel
  17. Rechter Knöchel

Modelle#

Hier werden vortrainierte Ultralytics-YOLO26-Posemodelle gezeigt. Detect-, Segment- und Posemodelle werden mit dem Datensatz COCO vortrainiert, Semantic-Modelle mit Cityscapes und Classify-Modelle mit dem Datensatz ImageNet.

Modelle werden bei der ersten Verwendung automatisch aus dem neuesten Ultralytics-Release heruntergeladen.

ModellGröße
(Pixel)
mAPpose
50-95(e2e)
mAPpose
50(e2e)
Geschwindigkeit
CPU ONNX
(ms)
Geschwindigkeit
T4 TensorRT10
(ms)
Parameter
(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
  • Die Werte mAPval gelten für ein einzelnes Modell mit einer einzelnen Skalierung auf dem Datensatz COCO Keypoints val2017.
    Reproduzieren mit yolo val pose data=coco-pose.yaml device=0 nms=False
  • Geschwindigkeit, gemittelt über COCO-val-Bilder unter Verwendung einer Amazon-EC2-P4d-Instanz.
    Reproduziere sie mit yolo val pose data=coco-pose.yaml batch=1 device=0|cpu nms=False
  • Params- und FLOPs-Werte beziehen sich auf fusionierte Modelle nach der Conv/BatchNorm-Faltung und dem Entfernen des nicht verwendeten Erkennungszweigs. Vortrainierte Checkpoints behalten die vollständige Trainingsarchitektur bei und können höhere Anzahlen aufweisen.

Sieh dir die unreleased YOLO27 preview für vorläufige COCO-Keypoint-Ergebnisse an.

Trainieren#

Trainiere ein YOLO26-Posemodell mit dem Datensatz COCO8-pose. Der Datensatz COCO8-pose ist ein kleiner Beispieldatensatz, der sich ideal zum Testen und Debuggen deiner Posenschätzungsmodelle eignet.

Beispiel
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)

Ausführliche Details zum Modus train findest du auf der Seite Train. Posemodelle können auch mit dem Cloud-Training der Ultralytics Platform trainiert werden.

Datensatzformat#

Das YOLO-Pose-Datensatzformat findest du im Detail im Dataset Guide. Um einen bestehenden COCO keypoints-JSON-Datensatz in das YOLO-Format zu konvertieren, nutze die integrierte convert_coco-Funktion mit use_keypoints=True, wie im COCO to YOLO guide beschrieben. Die Ultralytics Platform annotation unterstützt außerdem Pose-Label mit integrierten Skelettvorlagen für Personen, Hände, Gesichter und benutzerdefinierte Keypoint-Layouts.

Für benutzerdefinierte Posenschätzungsaufgaben kannst du auch spezielle Datensätze wie Tiger-Pose für die Posenschätzung bei Tieren, Hand Keypoints für die Handverfolgung oder Dog-Pose für die Posenanalyse von Hunden ausprobieren.

Validierung#

Überprüfe die Genauigkeit eines trainierten YOLO26n-Posemodells mit dem Datensatz COCO8-pose. Es sind keine Argumente erforderlich, da model seine Trainings-data und Argumente als Modelattribute beibehält.

Beispiel
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

Vorhersage#

Verwende ein trainiertes YOLO26n-Posemodell, um Vorhersagen für Bilder auszuführen. Mit dem Predict-Modus kannst du Inferenz auf Bildern, Videos oder Echtzeitstreams durchführen.

Beispiel
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)

Ausführliche Informationen zum Modus predict findest du auf der Seite Predict.

Ausgabe der Ergebnisse#

Die Posenschätzung gibt für jedes Bild ein Results-Objekt zurück. Die wichtigsten Vorhersagefelder sind result.keypoints für Pose koordinaten und result.boxes für die erkannten Instanzen, zu denen diese Keypoints gehören.

AttributTypFormBeschreibung
result.keypointsKeypoints(N)Schlüsselpunkte.
result.keypoints.datatorch.float32(N,K,2/3)x,y sowie optionale Sichtbarkeit oder Konfidenz.
result.keypoints.xytorch.float32(N,K,2)Pixel-Schlüsselpunkte.
result.keypoints.xyntorch.float32(N,K,2)Normalisierte Schlüsselpunkte.
result.boxesBoxes(N)Instanzboxen.

Task-spezifische Felder Results für alle Tasks findest du im Abschnitt Vorhersageergebnisse nach Task.

Export#

Exportiere ein YOLO26n-Posemodell in ein anderes Format wie ONNX, CoreML usw. Dadurch kannst du dein Modell für Echtzeitinferenz auf verschiedenen Plattformen und Geräten bereitstellen.

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

Die verfügbaren Exportformate für YOLO26-pose findest du in der folgenden Tabelle. Du kannst mit dem Argument format in jedes Format exportieren, also mit format='onnx' oder format='engine'. Auf exportierten Modellen kannst du direkt Vorhersagen ausführen oder sie validieren, also mit yolo predict model=yolo26n-pose.onnx. Nach Abschluss des Exports werden für dein Modell Beispiele zur Verwendung angezeigt.

FormatArgument formatModellMetadatenArgumente
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 verwendet standardmäßig Rohausgaben für externes NMS. Setze nms=False, um einen verfügbaren NMS-freien Kopf auszuwählen; nicht unterstützte Formate greifen auf ihren nativen Ausgabepfad zurück. Die Einträge nms oben identifizieren Formate, die NMS mit nms=True einbetten können.

Ausführliche Informationen zu export findest du auf der Seite Export.

FAQ#

  • Bei der Posenschätzung mit Ultralytics YOLO26 werden bestimmte Punkte in einem Bild ermittelt, die als Keypoints bezeichnet werden. Diese Keypoints stellen typischerweise Gelenke oder andere wichtige Merkmale des Objekts dar. Die Ausgabe umfasst die [x, y]-Koordinaten und Konfidenzwerte für jeden Punkt. YOLO26-Posemodelle wurden speziell für diese Aufgabe entwickelt und verwenden das Suffix -pose, z. B. yolo26n-pose.pt. Diese Modelle werden mit Datensätzen wie COCO keypoints vortrainiert und können für verschiedene Posenschätzungsaufgaben verwendet werden. Weitere Informationen findest du auf der Seite zur Posenschätzung.

  • Beim Trainieren eines YOLO26-Posemodells mit einem benutzerdefinierten Datensatz wird zunächst ein Modell geladen, entweder ein neues, durch eine YAML-Datei definiertes Modell oder ein vortrainiertes Modell. Anschließend kannst du den Trainingsprozess mit dem angegebenen Datensatz und den festgelegten Parametern starten.

    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)

    Ausführliche Informationen zum Training findest du im Abschnitt „Train“. Für einen Ansatz ohne Code kannst du auch das Cloud-Training der Ultralytics Platform verwenden, um benutzerdefinierte Posenschätzungsmodelle zu trainieren.

  • Bei der Validierung eines YOLO26-Posemodells wird seine Genauigkeit anhand derselben während des Trainings beibehaltenen Datensatzparameter bewertet. Hier ist ein Beispiel:

    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

    Weitere Informationen findest du im Abschnitt „Val“.

  • Ja, du kannst ein YOLO26-Posemodell in verschiedene Formate wie ONNX, CoreML, TensorRT und weitere exportieren. Dies ist entweder mit Python oder der Befehlszeilenschnittstelle (CLI) möglich.

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

    Weitere Informationen findest du im Abschnitt „Export“. Exportierte Modelle können für Echtzeitanwendungen wie Fitness-Tracking, Sportanalyse oder Robotik auf Edge-Geräten bereitgestellt werden.

  • Ultralytics YOLO26 bietet verschiedene vortrainierte Posemodelle wie YOLO26n-pose, YOLO26s-pose und YOLO26m-pose sowie weitere. Diese Modelle unterscheiden sich in Größe, Genauigkeit (mAP) und Geschwindigkeit. So erreicht das Modell YOLO26n-pose beispielsweise einen Wert von 57,2 für mAPpose50-95 und 83,3 für mAPpose50. Eine vollständige Liste und Leistungsdetails findest du im Abschnitt „Modelle“.

Kommentare