Ultralytics YOLO27:
Get Started

Posenschätzung mit Ultralytics YOLO#

Ultralytics YOLO pose estimation with human body keypoint detection

Bei der Posenschätzung werden bestimmte Punkte in einem Bild lokalisiert, die üblicherweise als Keypoints bezeichnet werden. Die Keypoints können verschiedene Teile des Objekts darstellen, etwa Gelenke, Landmarken oder andere charakteristische Merkmale. Die Positionen der Keypoints werden üblicherweise als Satz von 2D-Koordinaten [x, y] dargestellt, optional mit einem Sichtbarkeitsindikator [x, y, visible].

Das Ergebnis eines Posenschätzungsmodells ist eine Reihe von Punkten, die die Keypoints eines Objekts im Bild darstellen, normalerweise zusammen mit den Konfidenzwerten für jeden Punkt. Posenschätzung eignet sich gut, wenn du bestimmte Teile eines Objekts in einer Szene und ihre relative Position zueinander erkennen musst.



Ansehen: So führst du mit Ultralytics YOLO26 eine Posenschätzung in Echtzeit aus | Verfolgung und Extraktion von Schlüsselpunkten 🕺
Tipp

YOLO26-Pose-Modelle verwenden das Suffix -pose, z. B. yolo26n-pose.pt, und werden mit COCO-Keypoints vortrainiert.

Modelle#

Die mit dem Datensatz COCO-Keypoints vortrainierten YOLO26-Pose-Modelle sind unten aufgeführt.

Modelle werden bei der ersten Verwendung automatisch aus der neuesten Ultralytics-Version 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.
    Mit yolo pose val data=coco-pose.yaml device=0 nms=False reproduzieren
  • Geschwindigkeit: Durchschnitt über COCO-val-Bilder mit ONNX auf einer CPU und TensorRT10 auf einer NVIDIA-T4-GPU.
    Mit yolo pose val data=coco-pose.yaml batch=1 device=0|cpu nms=False reproduzieren
  • Die Werte für Parameter und FLOPs gelten für zusammengeführte Modelle nach dem Zusammenführen von Conv/BatchNorm und dem Entfernen des ungenutzten Erkennungszweigs. Vortrainierte Prüfpunkte behalten die vollständige Trainingsarchitektur bei und können daher höhere Werte aufweisen.

Vorläufige Ergebnisse für COCO-Keypoints findest du in der unveröffentlichten YOLO27-Vorschau.

Trainieren#

Trainiere YOLO26n-pose 100 Epochen lang mit einer Bildgröße von 640 auf dem Datensatz COCO8-pose. Eine vollständige Liste der verfügbaren Argumente findest du auf der Seite Konfiguration.

Beispiel
from ultralytics import YOLO

# Ein Modell laden
model = YOLO("yolo26n-pose.yaml")  # ein neues Modell aus YAML erstellen
model = YOLO("yolo26n-pose.pt")  # ein vortrainiertes Modell laden (für das Training empfohlen)
model = YOLO("yolo26n-pose.yaml").load("yolo26n-pose.pt")  # aus YAML erstellen und Gewichte übertragen

# Das Modell trainieren
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

Ausführliche Informationen zum Modus train findest du auf der Seite Trainieren. Pose-Modelle lassen sich auch mit dem Cloud-Training der Ultralytics Platform trainieren.

Datensatzformat#

Ausführliche Informationen zum YOLO-Pose-Datensatzformat findest du im Datensatzleitfaden. Um einen vorhandenen JSON-Datensatz mit COCO-Keypoints in das YOLO-Format umzuwandeln, verwende die integrierte Funktion convert_coco mit use_keypoints=True, wie im Leitfaden zur Umwandlung von COCO in YOLO beschrieben. Die Annotation in der Ultralytics Platform unterstützt ebenfalls Pose-Labels mit integrierten Skelettvorlagen für Personen, Hände, Gesichter und benutzerdefinierte Keypoint-Anordnungen.

Für spezielle Posenschätzungsaufgaben kannst du auch spezialisierte Datensätze erkunden, etwa Tiger-Pose zur Posenschätzung bei Tieren, Hand Keypoints zur Handverfolgung oder Dog-Pose zur Analyse der Körperhaltung von Hunden.

Validieren#

Validiere die Genauigkeit eines trainierten YOLO26n-pose-Modells. Es sind keine Argumente erforderlich, da das model die Trainings-data und Argumente als Modellattribute speichert: path/to/best.pt aus dem Beispiel zum Trainieren validiert anhand von COCO8-pose. Die offiziellen Gewichte speichern einen Trainingsdatensatzpfad, der auf deinem Rechner nicht vorhanden ist. Deshalb greifen sie mit einer Warnung auf den Standarddatensatz für die Aufgabe coco8-pose.yaml zurück. Übergib data, um anhand eines anderen Datensatzes zu validieren.

Beispiel
from ultralytics import YOLO

# Ein Modell laden
model = YOLO("yolo26n-pose.pt")  # Ein offizielles Modell laden
model = YOLO("path/to/best.pt")  # Ein benutzerdefiniertes Modell laden

# Das Modell validieren
metrics = model.val()  # Keine Argumente erforderlich, Datensatz und Einstellungen werden gespeichert
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # Eine Liste mit mAP50-95-Werten für jede Kategorie
metrics.box.image_metrics  # Metrikwörterbuch pro Bild für die Box mit Präzision, Trefferquote, F1, TP, FP und FN
metrics.pose.map  # map50-95(P)
metrics.pose.map50  # map50(P)
metrics.pose.map75  # map75(P)
metrics.pose.maps  # eine Liste mit mAP50-95(P) für jede Kategorie
metrics.pose.image_metrics  # Metrikwörterbuch pro Bild für die Pose mit Präzision, Trefferquote, F1, TP, FP und FN

Vorhersagen#

Verwende ein trainiertes YOLO26n-pose-Modell, um Vorhersagen für Bilder zu treffen.

Beispiel
from ultralytics import YOLO

# Ein Modell laden
model = YOLO("yolo26n-pose.pt")  # Ein offizielles Modell laden
model = YOLO("path/to/best.pt")  # Ein benutzerdefiniertes Modell laden

# Mit dem Modell Vorhersagen erstellen
results = model("https://ultralytics.com/images/bus.jpg")  # Eine Vorhersage für ein Bild erstellen

# Auf die Ergebnisse zugreifen
for result in results:
    xy = result.keypoints.xy  # x- und y-Koordinaten
    xyn = result.keypoints.xyn  # normalized
    kpts = result.keypoints.data  # x, y, Sichtbarkeit (falls verfügbar)

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

Ausgabe der Ergebnisse#

Die Posenschätzung gibt pro Bild ein Results-Objekt zurück. Die wichtigsten Vorhersagefelder sind result.keypoints für Posekoordinaten 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 optional Sichtbarkeit/Konfidenz.
result.keypoints.xytorch.float32(N,K,2)Schlüsselpunkte in Pixelkoordinaten.
result.keypoints.xyntorch.float32(N,K,2)Normalisierte Schlüsselpunkte.
result.boxesBoxes(N)Instanzboxen.

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

Keypoint-Indexzuordnung#

Die Standardmodelle YOLO26 Pose sagen die 17 COCO-Keypoints voraus. Der Index k in result.keypoints.xy[:, k] steht daher für:

  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

Exportieren#

Ein YOLO26n-pose-Modell in ein anderes Format wie ONNX, CoreML usw. exportieren.

Beispiel
from ultralytics import YOLO

# Ein Modell laden
model = YOLO("yolo26n-pose.pt")  # Ein offizielles Modell laden
model = YOLO("path/to/best.pt")  # Ein benutzerdefiniertes Modell laden

# Modell exportieren
model.export(format="onnx")

Die verfügbaren Exportformate für YOLO26-pose sind in der Tabelle unten aufgeführt. Du kannst mit dem Argument format in jedes Format exportieren, zum Beispiel mit format='onnx' oder format='engine'. Du kannst direkt mit exportierten Modellen Vorhersagen treffen oder sie validieren, zum Beispiel mit yolo predict model=yolo26n-pose.onnx. Nach Abschluss des Exports werden Beispiele zur Verwendung deines Modells angezeigt.

FormatArgument formatModellMetadatenArgumente
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 gibt standardmäßig Rohdaten für die externe NMS aus. Lege nms=False fest, um einen verfügbaren Kopf ohne NMS auszuwählen; nicht unterstützte Formate greifen auf ihren nativen Ausgabepfad zurück. Die obigen Einträge nms kennzeichnen Formate, die NMS mit nms=True integrieren können.

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

Häufig gestellte Fragen#

  • Bei der Posenschätzung mit Ultralytics YOLO26 werden bestimmte Punkte in einem Bild erkannt, die als Keypoints bezeichnet werden. Diese Keypoints stellen in der Regel Gelenke oder andere wichtige Merkmale des Objekts dar. Die Ausgabe umfasst die [x, y]-Koordinaten und Konfidenzwerte für jeden Punkt. YOLO26-pose-Modelle wurden speziell für diese Aufgabe entwickelt und verwenden das Suffix -pose, zum Beispiel 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.

  • Um ein YOLO26-pose-Modell mit einem benutzerdefinierten Datensatz zu trainieren, musst du zunächst ein Modell laden – entweder ein neues, in einer YAML-Datei definiertes Modell oder ein vortrainiertes Modell. Anschließend kannst du den Trainingsprozess mit deinem angegebenen Datensatz und deinen Parametern starten.

    Beispiel
    from ultralytics import YOLO
    
    # Ein Modell laden
    model = YOLO("yolo26n-pose.yaml")  # ein neues Modell aus YAML erstellen
    model = YOLO("yolo26n-pose.pt")  # ein vortrainiertes Modell laden (für das Training empfohlen)
    
    # Das Modell trainieren
    results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

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

  • Bei der Validierung eines YOLO26-pose-Modells wird seine Genauigkeit anhand derselben Datensatzparameter bewertet, die beim Training gespeichert wurden. Hier ein Beispiel:

    Beispiel
    from ultralytics import YOLO
    
    # Ein Modell laden
    model = YOLO("yolo26n-pose.pt")  # Ein offizielles Modell laden
    model = YOLO("path/to/best.pt")  # Ein benutzerdefiniertes Modell laden
    
    # Das Modell validieren
    metrics = model.val()  # Keine Argumente erforderlich, Datensatz und Einstellungen werden gespeichert

    Weitere Informationen findest du im Abschnitt Val.

  • Ja, du kannst ein YOLO26-pose-Modell in verschiedene Formate wie ONNX, CoreML, TensorRT und weitere exportieren. Das geht mit Python oder über die Befehlszeilenschnittstelle (CLI).

    Beispiel
    from ultralytics import YOLO
    
    # Ein Modell laden
    model = YOLO("yolo26n-pose.pt")  # Ein offizielles Modell laden
    model = YOLO("path/to/best.pt")  # Ein benutzerdefiniertes Modell laden
    
    # Modell exportieren
    model.export(format="onnx")

    Weitere Informationen findest du im Abschnitt Export. Exportierte Modelle lassen sich auf Edge-Geräten für Echtzeitanwendungen wie Fitness-Tracking, Sportanalysen oder Robotik einsetzen.

  • Ultralytics YOLO26 bietet verschiedene vortrainierte Pose-Modelle, darunter YOLO26n-pose, YOLO26s-pose und YOLO26m-pose. Diese Modelle unterscheiden sich in Größe, Genauigkeit (mAP) und Geschwindigkeit. Die vollständige Liste mit mAP für COCO-Keypoints, Geschwindigkeit, Parametern und FLOPs pro Modell findest du im Abschnitt Modelle.

Kommentare