Übersicht über Datensätze zur Posenschätzung#
Unterstützte Datensatzformate#
Ultralytics-YOLO-Format#
Das für das Training von YOLO-Posenmodellen verwendete Format der Datensatzbeschriftungen lautet wie folgt:
- Eine Textdatei pro Bild: Zu jedem Bild im Datensatz gehört eine Textdatei mit demselben Namen wie die Bilddatei und der Erweiterung „.txt“.
- Eine Zeile pro Objekt: Jede Zeile in der Textdatei entspricht einer einzelnen Objektinstanz im Bild.
- Objektinformationen pro Zeile: Jede Zeile enthält die folgenden Informationen zur Objektinstanz:
- Objektklassenindex: Eine Ganzzahl, die die Klasse des Objekts angibt (z. B. 0 für eine Person, 1 für ein Auto usw.).
- Mittelpunktskoordinaten des Objekts: Die x- und y-Koordinaten des Objektmittelpunkts, normalisiert auf einen Bereich zwischen 0 und 1.
- Breite und Höhe des Objekts: Die Breite und Höhe des Objekts, normalisiert auf einen Bereich zwischen 0 und 1.
- Schlüsselpunkkoordinaten des Objekts: Die Schlüsselpunkte des Objekts, normalisiert auf einen Bereich zwischen 0 und 1.
Hier ist ein Beispiel für das Beschriftungsformat einer Posenschätzungsaufgabe:
Format mit 2D-Schlüsselpunkten
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>Format mit Sichtbarkeit der Schlüsselpunkte (einschließlich der Sichtbarkeit für jeden 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 Koordinaten der Schlüsselpunkte. Der Sichtbarkeitskanal ist optional, aber für Datensätze nützlich, in denen Verdeckungen annotiert werden.
YAML-Format für Datensätze#
Das Ultralytics-Framework verwendet das YAML-Dateiformat, um den Datensatz und die Modellkonfiguration für das Training von Posenschätzungsmodellen zu definieren. Hier ist ein Beispiel für das YAML-Format zur Definition eines Posendatensatzes:
# 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 Feld akzeptiert ein Verzeichnis, eine Liste von Verzeichnissen oder eine *.txt-Datei, die pro Zeile einen Bildpfad enthält (Pfade, die mit ./ beginnen, werden relativ zur *.txt-Datei aufgelöst). Eine *.txt-Datei ist nützlich, um mit einer Teilmenge eines Verzeichnisses zu trainieren, nicht beschriftete Bilder zu überspringen oder Bilder aus mehreren Quellen zu einem Datensatzabschnitt 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 mit Klassennamen. Die Reihenfolge der Namen sollte mit der Reihenfolge der Objektklassenindizes in den YOLO-Datensatzdateien übereinstimmen.
(Optional) flip_idx ordnet jeden Schlüsselpunk seinem Spiegelbild zu, damit die Augmentierung durch horizontales Spiegeln bei symmetrischen Skeletten wie einem menschlichen Körper oder Gesicht die linke und rechte Seite konsistent hält. Für fünf Gesichtsmerkmale mit den Indizes [linkes Auge, rechtes Auge, Nase, linker Mundwinkel, rechter Mundwinkel] = [0, 1, 2, 3, 4] lautet flip_idx [1, 0, 2, 4, 3]: Die Links-rechts-Paare 0-1 und 3-4 werden vertauscht, während die Nase ihren eigenen Index behält.
(Optional) kpt_oks_sigmas legt benutzerdefinierte Sigmas pro Schlüsselpunk für OKS fest, die während des Trainings und der Validierung verwendet werden, z. B. [0.26, 0.25, 0.25, ...]. Die Länge der Liste muss der Anzahl der Schlüsselpunkte N aus kpt_shape entsprechen, und jeder Wert muss positiv sein. Wenn diese Angabe fehlt, werden die COCO-Sigmas für 17 Schlüsselpunkte für kpt_shape: [17, 3] und andernfalls einheitliche 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. Die meisten dieser Datensätze werden auch auf der Ultralytics Platform gehostet, wo du die Bilder und Annotationen durchsuchen, Datensatzstatistiken einsehen und die Datensätze für das Cloud-Training klonen kannst.
COCO-Pose#
- Beschreibung: COCO-Pose ist ein groß angelegter Datensatz zur Schätzung menschlicher Posen, der die COCO-2017-Bilder mit annotierten Personen und Schlüsselpunkten umfasst.
- Beschriftungsformat: Entspricht dem oben beschriebenen Ultralytics-YOLO-Format und enthält Schlüsselpunkte für menschliche Posen.
- Anzahl der Klassen: 1 (Person).
- Schlüsselpunkte: 17 Schlüsselpunkttypen, darunter Nase, Augen, Ohren, Schultern, Ellbogen, Handgelenke, Hüften, Knie und Knöchel, jeweils mit einer Sichtbarkeitsdimension.
- Verwendung: Geeignet für das Training von Modellen zur Schätzung menschlicher Posen.
- Zusätzliche Hinweise: Der Datensatz baut auf der COCO-Keypoints-2017-Challenge auf: 58.945 Bilder mit 156.165 annotierten Personen.
- Mehr über COCO-Pose erfahren
COCO8-Pose#
- Beschreibung: Ultralytics COCO8-Pose ist ein kleiner, aber vielseitiger Datensatz zur Posenschätzung. Er besteht aus den ersten 8 Bildern des COCO-Trainingsdatensatzes 2017, davon 4 für das Training und 4 für die Validierung.
- Beschriftungsformat: Entspricht dem oben beschriebenen Ultralytics-YOLO-Format und enthält Schlüsselpunkte für menschliche Posen.
- Anzahl der Klassen: 1 (Person).
- Schlüsselpunkte: 17 Schlüsselpunkttypen, darunter Nase, Augen, Ohren, Schultern, Ellbogen, Handgelenke, Hüften, Knie und Knöchel, jeweils mit einer Sichtbarkeitsdimension.
- Verwendung: Geeignet zum Testen und Debuggen von Posenschätzungsmodellen oder zum Experimentieren mit neuen Ansätzen zur Schlüsselpunkterkennung.
- Zusätzliche Hinweise: COCO8-Pose eignet sich ideal für Plausibilitätsprüfungen und CI-Prüfungen.
- Mehr über COCO8-Pose erfahren
Dog-Pose#
- Beschreibung: Der Ultralytics Dog-Pose-Datensatz enthält 6.773 Trainings- und 1.703 Validierungsbilder zur Schätzung von Schlüsselpunkten bei Hunden.
- Beschriftungsformat: Entspricht dem Ultralytics-YOLO-Format und enthält Annotationen für mehrere Schlüsselpunkte, die speziell auf die Anatomie von Hunden zugeschnitten sind.
- Anzahl der Klassen: 1 (Hund).
- Schlüsselpunkte: 24 Schlüsselpunkte, jeweils mit einer Sichtbarkeitsdimension, 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 hin zu Anwendungen in der Praxis.
- Zusätzliche Hinweise: Die Quellbilder stammen aus dem Stanford Dogs Dataset.
- Mehr über Dog-Pose erfahren
Hand-Schlüsselpunkte#
- Beschreibung: Der Ultralytics-Datensatz für Hand-Schlüsselpunkte umfasst 26.768 Bilder, davon 18.776 für das Training und 7.992 für die Validierung.
- Beschriftungsformat: Entspricht dem oben beschriebenen Ultralytics-YOLO-Format, enthält jedoch 21 Schlüsselpunkte für eine menschliche Hand sowie eine Sichtbarkeitsdimension.
- Anzahl der Klassen: 1 (Hand).
- Schlüsselpunkte: 21 Schlüsselpunkte.
- Verwendung: Hervorragend geeignet für die Schätzung menschlicher Handposen und die Gestenerkennung.
- Zusätzliche Hinweise: Die Annotationen der Schlüsselpunkte werden mithilfe von Google MediaPipe erstellt, um eine konsistente Beschriftung zu gewährleisten.
- Mehr über Hand-Schlüsselpunkte erfahren
Tiger-Pose#
- Beschreibung: Der Ultralytics-Datensatz Tiger-Pose umfasst 263 Bilder aus einem YouTube-Video, davon 210 für das Training und 53 für die Validierung.
- Beschriftungsformat: Entspricht dem oben beschriebenen Ultralytics-YOLO-Format und enthält 12 Schlüsselpunkte für Tierposen, jedoch keine Sichtbarkeitsdimension.
- Anzahl der Klassen: 1 (Tiger).
- Schlüsselpunkte: 12 Schlüsselpunkte.
- Verwendung: Hervorragend geeignet für Tierposen oder andere nichtmenschliche Posen.
- Zusätzliche Hinweise: Veröffentlicht unter der AGPL-3.0-Lizenz.
- Mehr über Tiger-Pose erfahren
Eigenen Datensatz hinzufügen#
Wenn du einen eigenen Datensatz hast und ihn zum Training von Posenschätzungsmodellen im 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 vollständig zu überspringen, kannst du mit der Ultralytics Platform Rohbilder hochladen, Schlüsselpunkte im Browser annotieren und direkt mit dem resultierenden Datensatz trainieren.
Konvertierungstool#
Ultralytics stellt ein praktisches Konvertierungstool bereit, mit dem sich Beschriftungen aus dem beliebten COCO-Datensatz in das YOLO-Format konvertieren lassen:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)Mit diesem Konvertierungstool kannst du den COCO-Datensatz oder jeden Datensatz im COCO-Format in das Ultralytics-YOLO-Format konvertieren. Der Parameter use_keypoints legt fest, ob Schlüsselpunkte (für die Posenschätzung) in die konvertierten Beschriftungen aufgenommen werden.
FAQ#
Beim Ultralytics-YOLO-Format für Posenschätzungsdatensätze wird jedes Bild mit einer zugehörigen Textdatei beschriftet. Jede Zeile der Textdatei enthält Informationen zu einer Objektinstanz:
- Klassenindex des Objekts
- Mittelpunktskoordinaten des Objekts (normalisierte x- und y-Werte)
- Breite und Höhe des Objekts (normalisiert)
- Schlüsselpunkkoordinaten des Objekts (normalisierte pxn- und pyn-Werte)
Bei 2D-Posen umfassen die Schlüsselpunkte normalisierte x- und y-Koordinaten. Bei einer Sichtbarkeitsdimension enthält jeder Schlüsselpunk zusätzlich ein Sichtbarkeitsflag. Weitere Informationen findest du unter Ultralytics-YOLO-Format.
coco-pose.yamlist im Paket enthalten und lädt die Bilder und Beschriftungen 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 Seite Training.
So fügst du deinen Datensatz hinzu:
-
Konvertiere deine Annotationen in das Ultralytics-YOLO-Format.
-
Erstelle eine YAML-Konfigurationsdatei, in der du die Datensatzpfade, die Anzahl der Klassen und die Klassennamen angibst.
-
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 Anleitung findest du im Abschnitt Eigenen Datensatz hinzufügen.
-
Die YAML-Datei des Datensatzes in Ultralytics YOLO definiert den Datensatz und die Modellkonfiguration für das Training. Sie gibt die Pfade zu den Trainings-, Validierungs- und Testbildern, die Formen der Schlüsselpunkte, die Klassennamen und weitere Konfigurationsoptionen an. Dieses strukturierte Format erleichtert die Verwaltung von Datensätzen und das Training von Modellen. Hier ist ein Beispiel für das 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.zipWeitere Informationen zum Erstellen von YAML-Konfigurationsdateien findest du unter YAML-Format für Datensätze.
Ultralytics stellt ein Konvertierungstool bereit, mit dem sich Beschriftungen des COCO-Datensatzes einschließlich Schlüsselpunkinformationen in das YOLO-Format konvertieren lassen:
from ultralytics.data.converter import convert_coco convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)Mit diesem Tool lassen sich COCO-Datensätze nahtlos in YOLO-Projekte integrieren. Einzelheiten findest du im Abschnitt Konvertierungstool und im Leitfaden zur Datenvorverarbeitung.