Überblick über die Datensätze zur Posenabschätzung
Unterstützte Datensatzformate
Ultralytics YOLO Format
Das Format der Datensatzbeschriftung, das für das Training der YOLO Posenmodelle verwendet wird, ist wie folgt:
- Eine Textdatei pro Bild: Zu jedem Bild im Datensatz gibt es eine entsprechende Textdatei mit demselben Namen wie die Bilddatei und der Erweiterung ".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 ganze Zahl, die die Klasse des Objekts angibt (z.B. 0 für eine Person, 1 für ein Auto, etc.).
- Koordinaten des Objektmittelpunkts: Die x- und y-Koordinaten des Objektmittelpunkts, normiert auf einen Wert zwischen 0 und 1.
- Breite und Höhe des Objekts: Die Breite und Höhe des Objekts, normalisiert auf einen Wert zwischen 0 und 1.
- Objekt-Keypunktkoordinaten: Die Keypoints des Objekts, normalisiert auf einen Wert zwischen 0 und 1.
Hier ist ein Beispiel für das Etikettenformat für die Posenschätzung:
Format mit Dim = 2
Format mit Dim = 3
<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> <pxn> <pyn> <p2-visibility>
In diesem Format, <class-index>
ist der Index der Klasse für das Objekt,<x> <y> <width> <height>
are coordinates of bounding box, und <px1> <py1> <px2> <py2> ... <pxn> <pyn>
sind die Pixelkoordinaten der Keypoints. Die Koordinaten sind durch Leerzeichen getrennt.
Datensatz YAML-Format
Das Ultralytics Framework verwendet ein YAML-Dateiformat, um den Datensatz und die Modellkonfiguration für das Training der Erkennungsmodelle zu definieren. Hier ist ein Beispiel für das YAML-Format, das für die Definition eines Erkennungsdatensatzes verwendet wird:
# 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: ../datasets/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 dictionary
names:
0: person
Die train
und val
Felder geben die Pfade zu den Verzeichnissen an, die die Trainings- bzw. Validierungsbilder enthalten.
names
ist ein Wörterbuch mit Klassennamen. Die Reihenfolge der Namen sollte mit der Reihenfolge der Objektklassenindizes in den YOLO Dataset-Dateien übereinstimmen.
(Optional) Wenn die Punkte symmetrisch sind, brauchst du flip_idx, z. B. die linke und rechte Seite eines Menschen oder Gesichts. Nehmen wir zum Beispiel an, dass es fünf Schlüsselpunkte im Gesicht gibt: [linkes Auge, rechtes Auge, Nase, linker Mund, rechter Mund], und der ursprüngliche Index ist [0, 1, 2, 3, 4], dann ist flip_idx [1, 0, 2, 4, 3] (tausche nur den Links-Rechts-Index aus, d.h. 0-1 und 3-4, und ändere andere Punkte wie die Nase in diesem Beispiel nicht).
Verwendung
Beispiel
Unterstützte Datensätze
In diesem Abschnitt werden die Datensätze vorgestellt, die mit dem Format Ultralytics YOLO kompatibel sind und für das Training von Modellen zur Posenschätzung verwendet werden können:
COCO-Pose
- Description: COCO-Pose is a large-scale object detection, segmentation, and pose estimation dataset. It is a subset of the popular COCO dataset and focuses on human pose estimation. COCO-Pose includes multiple keypoints for each human instance.
- Label-Format: Gleiches Format wie Ultralytics YOLO wie oben beschrieben, mit Keypoints für menschliche Posen.
- Anzahl der Klassen: 1 (Mensch).
- Keypoints: 17 Keypoints, darunter Nase, Augen, Ohren, Schultern, Ellbogen, Handgelenke, Hüften, Knie und Knöchel.
- Verwendung: Geeignet für das Training von Modellen zur Schätzung der menschlichen Pose.
- Zusätzliche Hinweise: Der Datensatz ist reichhaltig und vielfältig und enthält über 200.000 beschriftete Bilder.
- Lies mehr über COCO-Pose
COCO8-Pose
- Beschreibung: Ultralytics COCO8-Pose ist ein kleiner, aber vielseitiger Datensatz für die Posenerkennung, der aus den ersten 8 Bildern des COCO train 2017 Sets besteht, 4 für das Training und 4 für die Validierung.
- Label-Format: Gleiches Format wie Ultralytics YOLO wie oben beschrieben, mit Keypoints für menschliche Posen.
- Anzahl der Klassen: 1 (Mensch).
- Keypoints: 17 Keypoints, darunter Nase, Augen, Ohren, Schultern, Ellbogen, Handgelenke, Hüften, Knie und Knöchel.
- Verwendung: Geeignet zum Testen und Debuggen von Objekterkennungsmodellen oder zum Experimentieren mit neuen Erkennungsansätzen.
- Zusätzliche Hinweise: Die COCO8-Pose ist ideal für Sanity Checks und CI Checks.
- Lies mehr über COCO8-Pose
Tiger-Pose
- Beschreibung: Ultralytics Der Datensatz für die Tierhaltung umfasst 263 Bilder aus einem YouTube-Video, von denen 210 Bilder für das Training und 53 für die Validierung verwendet werden.
- Etikettenformat: Dasselbe Format wie Ultralytics YOLO wie oben beschrieben, mit 12 Keypoints für die Tierhaltung und ohne sichtbare Dimension.
- Anzahl der Klassen: 1 (Tiger).
- Keypoints: 12 Keypoints.
- Verwendung: Ideal für Tierposen oder jede andere Pose, die nicht auf den Menschen bezogen ist.
- Lies mehr über Tiger-Pose
Hand Keypoints
- Description: Hand keypoints pose dataset comprises nearly 26K images, with 18776 images allocated for training and 7992 for validation.
- Label Format: Same as Ultralytics YOLO format as described above, but with 21 keypoints for human hand and visible dimension.
- Number of Classes: 1 (Hand).
- Keypoints: 21 keypoints.
- Usage: Great for human hand pose estimation.
- Read more about Hand Keypoints
Hinzufügen deines eigenen Datensatzes
Wenn du deinen eigenen Datensatz hast und ihn für das Training von Modellen zur Posenschätzung im Format Ultralytics YOLO verwenden möchtest, stelle sicher, dass er dem oben unter "Ultralytics YOLO format" angegebenen Format entspricht. Konvertiere deine Annotationen in das gewünschte Format und gib die Pfade, die Anzahl der Klassen und die Klassennamen in der YAML-Konfigurationsdatei an.
Konvertierungstool
Ultralytics bietet ein praktisches Konvertierungstool, um Etiketten aus dem beliebten COCO-Datensatzformat in das Format YOLO zu konvertieren:
Beispiel
Mit diesem Konvertierungstool kannst du den COCO-Datensatz oder jeden anderen Datensatz im COCO-Format in das Format Ultralytics YOLO umwandeln. Das use_keypoints
gibt an, ob Keypoints (für die Posenschätzung) in die umgewandelten Labels aufgenommen werden sollen.
FAQ
Was ist das Ultralytics YOLO Format für die Pose-Schätzung?
Das Format Ultralytics YOLO für Datensätze zur Posenschätzung sieht vor, dass jedes Bild mit einer entsprechenden Textdatei beschriftet wird. Jede Zeile der Textdatei enthält Informationen über ein Objekt:
- Objektklassenindex
- Koordinaten des Objektmittelpunkts (normalisiert x und y)
- Objektbreite und -höhe (normalisiert)
- Objekt-Keypunktkoordinaten (normalisierte pxn und pyn)
Bei 2D-Posen enthalten die Keypoints Pixelkoordinaten. Für 3D hat jeder Keypoint auch ein Sichtbarkeitsflag. Weitere Informationen findest du unter Ultralytics YOLO .
Wie verwende ich den COCO-Pose-Datensatz mit Ultralytics YOLO ?
To use the COCO-Pose dataset with Ultralytics YOLO:
- Download the dataset and prepare your label files in the YOLO format.
- Create a YAML configuration file specifying paths to training and validation images, keypoint shape, and class names.
-
Use the configuration file for training:
Wie kann ich meinen eigenen Datensatz für die Pose-Schätzung in Ultralytics YOLO hinzufügen?
To add your dataset:
- Convert your annotations to the Ultralytics YOLO format.
- Create a YAML configuration file specifying the dataset paths, number of classes, and class names.
-
Use the configuration file to train your model:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
For complete steps, check the Adding your own dataset section.
Welchen Zweck erfüllt die YAML-Datei für Datensätze in Ultralytics YOLO ?
Die YAML-Datei des Datensatzes auf 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 Keypoints, die Klassennamen und andere Konfigurationsoptionen an. Dieses strukturierte Format hilft dabei, die Datensatzverwaltung und die Modellschulung zu optimieren. Hier ist ein Beispiel für das YAML-Format:
Lies mehr über das Erstellen von YAML-Konfigurationsdateien im Dataset YAML-Format.
Wie kann ich die COCO-Datensatzbeschriftungen in das Format Ultralytics YOLO konvertieren, um die Pose zu schätzen?
Ultralytics bietet ein Konvertierungstool, um COCO-Datensatzbeschriftungen in das Format YOLO zu konvertieren, einschließlich der 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 Informationen findest du im Abschnitt Konvertierungstool.