Übersicht zu Datensätzen für die Pose-Schätzung#
Unterstützte Datensatzformate#
Ultralytics 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 des 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 Verdeckungen annotieren.
Datensatz-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 einen Bildpfad pro Zeile auflistet (Pfadausrichtungen, die mit ./ beginnen, werden relativ zur *.txt-Datei aufgelöst). Eine *.txt-Datei ist nützlich, um auf einer Teilmenge eines Verzeichnisses zu trainieren, unbeschriftete Bilder zu überspringen oder Bilder aus mehreren Quellen zu einem Split zusammenzuführen.
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 horizontale Spiegelung die linke und rechte Seite bei symmetrischen Skeletten wie einem menschlichen Körper oder Gesicht konsistent hält. Für fünf Gesichtspunkte im Index [linkes Auge, rechtes Auge, Nase, linker Mund, rechter Mund] = [0, 1, 2, 3, 4] ist flip_idx [1, 0, 2, 4, 3]: Die Links-Rechts-Paare 0-1 und 3-4 tauschen den Platz, und die Nase behält ihren eigenen Index.
(Optional) kpt_oks_sigmas legt benutzerdefinierte OKS-Sigmas pro Keypoint fest, die während des Trainings und der Validierung verwendet werden, z. B. [0.26, 0.25, 0.25, ...]. Die Listenlänge muss der Anzahl der Keypoints N aus kpt_shape entsprechen, und jeder Wert muss positiv sein. Wenn sie weggelassen werden, werden die COCO-17-Keypoint-Sigmas für kpt_shape: [17, 3] und andernfalls ein einheitliches 1/N verwendet.
Verwendung#
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)Unterstü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:
COCO-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-Herausforderung auf: 58.945 Bilder mit Annotationen für 156.165 Personen.
- Erfahre mehr über COCO-Pose
COCO8-Pose#
- Beschreibung: Ultralytics COCO8-Pose ist ein kleiner, aber vielseitiger Pose-Estimation-Datensatz, der aus den ersten 8 Bildern des COCO-Train-2017-Satzes besteht, 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.
- Erfahre mehr über COCO8-Pose
Dog-Pose#
- Beschreibung: Der Ultralytics Dog-Pose-Datensatz enthält 6.773 Trainings- und 1.703 Validierungsbilder zur Schätzung von Hunde-Keypoints.
- 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 zum Trainieren von Modellen zur Schätzung von Hundeposen in verschiedenen Szenarien, von der Forschung bis zu real-world applications.
- Zusätzliche Hinweise: Die Quellbilder stammen aus dem Stanford Dogs Dataset.
- Erfahre mehr über Dog-Pose
Hand-Keypoints#
- Beschreibung: Der Ultralytics Hand Keypoints-Datensatz umfasst 26.768 Bilder, wobei 18.776 für das Training und 7.992 für die Validierung vorgesehen sind.
- 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: Hervorragend geeignet für die Schätzung von Handhaltungen und gesture recognition.
- Zusätzliche Hinweise: Keypoint-Annotationen werden mit Google MediaPipe für eine konsistente Kennzeichnung generiert.
- Erfahre mehr über Hand Keypoints
Tiger-Pose#
- Beschreibung: Der Ultralytics Tiger-Pose-Datensatz umfasst 263 Bilder aus einem YouTube video, 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.
- Erfahre mehr über Tiger-Pose
Eigenen 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 rohe Bilder hochladen, Keypoints im Browser annotieren und direkt mit dem resultierenden Datensatz trainieren.
Konvertierungstool#
Ultralytics bietet ein praktisches Konvertierungstool an, um Labels aus dem beliebten COCO dataset-Format in das YOLO-Format zu konvertieren:
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 einen beliebigen Datensatz im COCO-Format in das Ultralytics YOLO-Format zu konvertieren. Der Parameter use_keypoints legt fest, ob Keypoints (für die Pheschätzung) in die konvertierten Labels einbezogen werden sollen.
FAQ#
Was 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-Koordinate. Mit einer Sichtbarkeitsdimension verfügt jeder Keypoint zusätzlich über ein Sichtbarkeitsflag. Weitere Details findest du im Ultralytics YOLO format.
Wie 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, sodass keine manuelle Vorbereitung erforderlich ist:
from ultralytics import YOLO
model = YOLO("yolo26n-pose.pt") # load pretrained model
results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)Details zum Datensatz findest du unter COCO-Pose und die vollständige Liste der Argumente auf der Train-Seite.
Wie 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)Eine vollständige Schritt-für-Schritt-Anleitung findest du im Abschnitt Adding your own dataset.
Was 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.zipErfahre mehr über das Erstellen von YAML-Konfigurationsdateien im Abschnitt Dataset YAML format.
Wie 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. Weitere Details findest du im Abschnitt Conversion Tool sowie im data preprocessing guide.