Link to this sectionÜbersicht zu Datensätzen für die Pose-Schätzung#
Link to this sectionUnterstützte Datensatzformate#
Link to this sectionUltralytics YOLO-Format#
Das für das Training von YOLO-Pose-Modellen verwendete Datensatz-Label-Format sieht wie folgt aus:
- Eine Textdatei pro Bild: Jedes Bild im Datensatz hat eine entsprechende Textdatei mit dem gleichen Namen wie die Bilddatei und der Endung ".txt".
- Eine Zeile pro Objekt: Jede Zeile in der Textdatei entspricht einer Objektinstanz im Bild.
- Objektinformationen pro Zeile: Jede Zeile enthält die folgenden Informationen über die Objektinstanz:
- Objektklassenindex: Eine Ganzzahl, die die Klasse des Objekts darstellt (z. B. 0 für Person, 1 für Auto usw.).
- Objekt-Mittelpunktskoordinaten: Die x- und y-Koordinaten des Mittelpunkts des Objekts, normalisiert auf einen Wert zwischen 0 und 1.
- Objektbreite und -höhe: Die Breite und Höhe des Objekts, normalisiert auf einen Wert zwischen 0 und 1.
- Objekt-Keypoint-Koordinaten: Die Keypoints des Objekts, normalisiert auf einen Wert zwischen 0 und 1.
Hier ist ein Beispiel für das Label-Format für eine Pose-Schätzungsaufgabe:
Format mit 2D-Keypoints
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>Format mit Keypoint-Sichtbarkeit (beinhaltet Sichtbarkeit pro Punkt)
<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> <pxn> <pyn> <pn-visibility>In diesem Format ist <class-index> der Index der Klasse für das Objekt, <x> <y> <width> <height> sind die normalisierten Koordinaten der bounding box und <px1> <py1> <px2> <py2> ... <pxn> <pyn> sind die normalisierten Keypoint-Koordinaten. Der Sichtbarkeitskanal ist optional, aber nützlich für Datensätze, die Okklusion annotieren.
Link to this sectionDatensatz-YAML-Format#
Das Ultralytics-Framework verwendet ein YAML-Dateiformat, um die Datensatz- und Modellkonfiguration für das Training von Pose-Schätzungsmodellen zu definieren. Hier ist ein Beispiel des YAML-Formats für die Definition eines Pose-Datensatzes:
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose
# Example usage: yolo train data=coco8-pose.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8-pose ← downloads here (1 MB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8-pose # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)
# Keypoints
kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
# Classes
names:
0: person
# Keypoint names per class
kpt_names:
0:
- nose
- left_eye
- right_eye
- left_ear
- right_ear
- left_shoulder
- right_shoulder
- left_elbow
- right_elbow
- left_wrist
- right_wrist
- left_hip
- right_hip
- left_knee
- right_knee
- left_ankle
- right_ankle
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zipDie Felder train, val und test verweisen auf die Trainings-, Validierungs- und Testbilder. Jedes akzeptiert ein Verzeichnis, eine Liste von Verzeichnissen oder eine *.txt-Datei, die pro Zeile einen Bildpfad auflistet (Pfade, die mit ./ beginnen, werden relativ zur *.txt-Datei aufgelöst). Eine *.txt-Datei ist nützlich, um auf einer Teilmenge eines Verzeichnisses zu trainieren, nicht beschriftete Bilder zu überspringen oder Bilder aus mehreren Quellen in einem Split zu kombinieren.
path: datasets/coco8-pose # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
0: personnames ist ein Wörterbuch der Klassennamen. Die Reihenfolge der Namen sollte der Reihenfolge der Objektklassenindizes in den YOLO-Datensatzdateien entsprechen.
(Optional) flip_idx ordnet jeden Keypoint seinem Spiegelbild zu, sodass die horizontal-flip Augmentierung bei symmetrischen Skeletten wie einem menschlichen Körper oder Gesicht links und rechts konsistent hält. Für fünf Gesichts-Landmarks, indexiert als [linkes Auge, rechtes Auge, Nase, linker Mundwinkel, rechter Mundwinkel] = [0, 1, 2, 3, 4], ist flip_idx [1, 0, 2, 4, 3]: Die Links-Rechts-Paare 0-1 und 3-4 vertauschen sich, und die Nase behält ihren eigenen Index.
(Optional) kpt_oks_sigmas legt benutzerdefinierte Sigmas pro Keypoint für OKS fest, die während der Validierung verwendet werden, z. B. [0.26, 0.25, 0.25, ...]. Die Länge der Liste muss der Anzahl der Keypoints N aus kpt_shape entsprechen, und jeder Wert muss positiv sein. Wenn dieser Parameter weggelassen wird, werden die COCO 17-Keypoint-Sigmas für kpt_shape: [17, 3] und andernfalls ein einheitlicher Wert von 1/N verwendet.
Link to this sectionVerwendung#
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-pose.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)Link to this sectionUnterstützte Datensätze#
Dieser Abschnitt beschreibt die Datensätze, die mit dem Ultralytics YOLO-Format kompatibel sind und zum Trainieren von Pose Estimation-Modellen verwendet werden können:
Link to this sectionCOCO-Pose#
- Beschreibung: COCO-Pose ist ein großskaliger Human-Pose-Estimation-Datensatz, der die COCO 2017 Bilder abdeckt, welche mit Keypoints annotierte Personen enthalten.
- Label-Format: Dasselbe wie das Ultralytics YOLO-Format wie oben beschrieben, mit Keypoints für menschliche Posen.
- Anzahl der Klassen: 1 (Person).
- Keypoints: 17 Keypoint-Typen, darunter Nase, Augen, Ohren, Schultern, Ellbogen, Handgelenke, Hüften, Knie und Knöchel, jeweils mit einer Sichtbarkeits-Dimension.
- Verwendung: Geeignet für das Training von Modellen zur menschlichen Pose-Schätzung.
- Zusätzliche Hinweise: Der Datensatz baut auf der COCO Keypoints 2017 Challenge auf: 58.945 Bilder, annotiert mit 156.165 Personen.
- Mehr über COCO-Pose lesen
Link to this sectionCOCO8-Pose#
- Beschreibung: Ultralytics COCO8-Pose ist ein kleiner, aber vielseitiger Pose-Estimation-Datensatz, bestehend aus den ersten 8 Bildern des COCO train 2017 Sets, 4 für das Training und 4 für die Validierung.
- Label-Format: Dasselbe wie das Ultralytics YOLO-Format wie oben beschrieben, mit Keypoints für menschliche Posen.
- Anzahl der Klassen: 1 (Person).
- Keypoints: 17 Keypoint-Typen, darunter Nase, Augen, Ohren, Schultern, Ellbogen, Handgelenke, Hüften, Knie und Knöchel, jeweils mit einer Sichtbarkeits-Dimension.
- Verwendung: Geeignet zum Testen und Debuggen von Pose-Estimation-Modellen oder zum Experimentieren mit neuen Ansätzen zur Keypoint-Detektion.
- Zusätzliche Hinweise: COCO8-Pose ist ideal für Plausibilitätsprüfungen und CI-Checks.
- Mehr über COCO8-Pose lesen
Link to this sectionDog-Pose#
- Beschreibung: Der Ultralytics Dog-Pose-Datensatz enthält 6.773 Trainings- und 1.703 Validierungsbilder für die Keypoint-Schätzung bei Hunden.
- Label-Format: Folgt dem Ultralytics YOLO-Format mit Annotationen für mehrere spezifische Keypoints der Hundeanatomie.
- Anzahl der Klassen: 1 (Hund).
- Keypoints: 24 Keypoints, jeweils mit einer Sichtbarkeits-Dimension, die auf Hundeposen wie Gliedmaßen, Gelenke und Kopfpositionen zugeschnitten sind.
- Verwendung: Ideal für das Training von Modellen zur Schätzung von Hundeposen in verschiedenen Szenarien, von der Forschung bis zu realen Anwendungen.
- Zusätzliche Hinweise: Die Quellbilder stammen aus dem Stanford Dogs Dataset.
- Mehr über Dog-Pose lesen
Link to this sectionHand-Keypoints#
- Beschreibung: Der Ultralytics Hand Keypoints-Datensatz umfasst 26.768 Bilder, davon 18.776 für das Training und 7.992 für die Validierung.
- Label-Format: Dasselbe wie das oben beschriebene Ultralytics YOLO-Format, aber mit 21 Keypoints für eine menschliche Hand und einer Sichtbarkeitsdimension.
- Anzahl der Klassen: 1 (Hand).
- Keypoints: 21 Keypoints.
- Verwendung: Großartig für die Schätzung menschlicher Handposen und Gestensteuerung.
- Zusätzliche Hinweise: Die Keypoint-Annotationen werden mit Google MediaPipe für eine konsistente Kennzeichnung generiert.
- Mehr über Hand-Keypoints lesen
Link to this sectionTiger-Pose#
- Beschreibung: Der Ultralytics Tiger-Pose-Datensatz umfasst 263 Bilder, die aus einem YouTube-Video stammen, wobei 210 Bilder für das Training und 53 für die Validierung vorgesehen sind.
- Label-Format: Gleich wie das Ultralytics YOLO-Format, wie oben beschrieben, mit 12 Keypoints für Tierposen und ohne Sichtbarkeits-Dimension.
- Anzahl der Klassen: 1 (Tiger).
- Keypoints: 12 Keypoints.
- Verwendung: Großartig für Tierposen oder jede andere Pose, die nicht auf Menschen basiert.
- Zusätzliche Hinweise: Veröffentlicht unter der AGPL-3.0 License.
- Mehr über Tiger-Pose lesen
Link to this sectionEigenen Datensatz hinzufügen#
Wenn du deinen eigenen Datensatz hast und diesen für das Training von Pose-Schätzungsmodellen mit dem Ultralytics YOLO-Format verwenden möchtest, stelle sicher, dass er dem oben unter "Ultralytics YOLO format" angegebenen Format entspricht. Konvertiere deine Annotationen in das erforderliche Format und gib die Pfade, die Anzahl der Klassen und die Klassennamen in der YAML-Konfigurationsdatei an.
Um den Konvertierungsschritt komplett zu überspringen, kannst du mit der Ultralytics Platform Rohbilder hochladen, Keypoints direkt im Browser annotieren und das Modell mit dem resultierenden Datensatz trainieren.
Link to this sectionKonvertierungstool#
Ultralytics bietet ein praktisches Konvertierungstool an, um Labels vom bekannten COCO-Datensatz-Format in das YOLO-Format umzuwandeln:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)Dieses Konvertierungstool kann verwendet werden, um den COCO-Datensatz oder jeden Datensatz im COCO-Format in das Ultralytics YOLO-Format zu konvertieren. Der Parameter use_keypoints gibt an, ob Keypoints (für die Pose-Schätzung) in die konvertierten Labels einbezogen werden sollen.
Link to this sectionFAQ#
Link to this sectionWas ist das Ultralytics YOLO-Format für die Pose-Schätzung?#
Das Ultralytics YOLO-Format für Pose-Schätzungsdatensätze beinhaltet die Kennzeichnung jedes Bildes mit einer entsprechenden Textdatei. Jede Zeile der Textdatei speichert Informationen über eine Objektinstanz:
- Objektklassenindex
- Objekt-Mittelpunktskoordinaten (normalisiertes x und y)
- Objektbreite und -höhe (normalisiert)
- Objekt-Keypoint-Koordinaten (normalisiertes pxn und pyn)
Für 2D-Posen beinhalten Keypoints normalisierte x- und y-Koordinaten. Mit einer Sichtbarkeitsdimension hat jeder Keypoint auch ein Sichtbarkeits-Flag. Weitere Details findest du unter Ultralytics YOLO format.
Link to this sectionWie verwende ich den COCO-Pose-Datensatz mit Ultralytics YOLO?#
coco-pose.yaml wird mit dem Paket ausgeliefert und lädt die Bilder und Labels bei der ersten Verwendung herunter, daher ist keine manuelle Vorbereitung erforderlich:
from ultralytics import YOLO
model = YOLO("yolo26n-pose.pt") # load pretrained model
results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)Für Details zum Datensatz siehe COCO-Pose und für die vollständige Argumentenliste die Train Seite.
Link to this sectionWie kann ich meinen eigenen Datensatz für die Pose-Schätzung in Ultralytics YOLO hinzufügen?#
Um deinen Datensatz hinzuzufügen:
-
Konvertiere deine Annotationen in das Ultralytics YOLO-Format.
-
Erstelle eine YAML-Konfigurationsdatei, in der die Datensatzpfade, die Anzahl der Klassen und die Klassennamen angegeben sind.
-
Verwende die Konfigurationsdatei, um dein Modell zu trainieren:
from ultralytics import YOLO model = YOLO("yolo26n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Die vollständigen Schritte findest du im Abschnitt Adding your own dataset.
Link to this sectionWas ist der Zweck der Datensatz-YAML-Datei in Ultralytics YOLO?#
Die Datensatz-YAML-Datei in Ultralytics YOLO definiert die Datensatz- und Modellkonfiguration für das Training. Sie spezifiziert Pfade zu Trainings-, Validierungs- und Testbildern, Keypoint-Formen, Klassennamen und andere Konfigurationsoptionen. Dieses strukturierte Format hilft, das Datensatzmanagement und das Modelltraining zu optimieren. Hier ist ein Beispiel-YAML-Format:
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose
# Example usage: yolo train data=coco8-pose.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8-pose ← downloads here (1 MB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8-pose # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)
# Keypoints
kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
# Classes
names:
0: person
# Keypoint names per class
kpt_names:
0:
- nose
- left_eye
- right_eye
- left_ear
- right_ear
- left_shoulder
- right_shoulder
- left_elbow
- right_elbow
- left_wrist
- right_wrist
- left_hip
- right_hip
- left_knee
- right_knee
- left_ankle
- right_ankle
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zipLies mehr über das Erstellen von YAML-Konfigurationsdateien unter Dataset YAML format.
Link to this sectionWie kann ich COCO-Datensatz-Labels für die Pose-Schätzung in das Ultralytics YOLO-Format konvertieren?#
Ultralytics bietet ein Konvertierungstool an, um COCO-Datensatz-Labels in das YOLO-Format zu konvertieren, einschließlich Keypoint-Informationen:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)Dieses Tool hilft dabei, COCO-Datensätze nahtlos in YOLO-Projekte zu integrieren. Details findest du im Abschnitt Konvertierungstool sowie im Leitfaden zur Datenvorverarbeitung.