Ü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 Label-Format für Datensätze 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 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:
- Objektklassen-Index: Eine Ganzzahl, die die Klasse des Objekts darstellt (z. B. 0 für Person, 1 für Auto, etc.).
- Objekt-Mittelpunktskoordinaten: Die x- und y-Koordinaten des Objektmittelpunkts, 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 3D-Keypoints (enthält 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 Klassenindex 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.
Datensatz YAML-Format
Das Ultralytics-Framework verwendet ein YAML-Dateiformat, um den Datensatz und die Modellkonfiguration für das Training von Pose-Schätzungsmodellen zu definieren. Hier ist ein Beispiel für das YAML-Format, das für die Definition eines Pose-Datensatzes verwendet wird:
# 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 und val geben die Pfade zu den Verzeichnissen an, die die Trainings- bzw. Validierungsbilder enthalten.
names ist ein Wörterbuch der Klassennamen. Die Reihenfolge der Namen sollte mit der Reihenfolge der Objektklassen-Indizes in den YOLO-Datensatzdateien übereinstimmen.
(Optional) Wenn die Punkte symmetrisch sind, wird flip_idx benötigt, wie z. B. bei der linken oder rechten Seite eines Menschen oder Gesichts. Wenn wir beispielsweise fünf Keypoints eines Gesichtsmerkmals annehmen: [linkes Auge, rechtes Auge, Nase, linker Mundwinkel, rechter Mundwinkel] und der ursprüngliche Index [0, 1, 2, 3, 4] ist, dann ist flip_idx [1, 0, 2, 4, 3] (tausche einfach den Links-Rechts-Index, d. h. 0-1 und 3-4, und verändere andere wie die Nase in diesem Beispiel nicht).
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 für das Training von Pose-Schätzungs-Modellen verwendet werden können:
COCO-Pose
- Beschreibung: COCO-Pose ist ein groß angelegter Datensatz für Objekterkennung, Segmentierung und Pose-Schätzung. Er ist eine Teilmenge des populären COCO-Datensatzes und konzentriert sich auf die Pose-Schätzung von Menschen. COCO-Pose enthält mehrere Keypoints für jede menschliche Instanz.
- Label-Format: Identisch mit dem oben beschriebenen Ultralytics YOLO-Format, mit Keypoints für menschliche Posen.
- Anzahl der Klassen: 1 (Mensch).
- Keypoints: 17 Keypoints, einschließlich Nase, Augen, Ohren, Schultern, Ellbogen, Handgelenke, Hüften, Knie und Knöchel.
- Verwendung: Geeignet für das Training von Modellen zur menschlichen Pose-Schätzung.
- Zusätzliche Hinweise: Der Datensatz ist reichhaltig und vielfältig und enthält über 200.000 annotierte Bilder.
- Mehr über COCO-Pose erfahren
COCO8-Pose
- Beschreibung: Ultralytics COCO8-Pose ist ein kleiner, aber vielseitiger Pose-Erkennungsdatensatz, der aus den ersten 8 Bildern des COCO-Trainingssatzes 2017 besteht, 4 für das Training und 4 für die Validierung.
- Label-Format: Identisch mit dem oben beschriebenen Ultralytics YOLO-Format, mit Keypoints für menschliche Posen.
- Anzahl der Klassen: 1 (Mensch).
- Keypoints: 17 Keypoints, einschließlich 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: COCO8-Pose ist ideal für Plausibilitätsprüfungen und CI-Prüfungen.
- Mehr über COCO8-Pose erfahren
Dog-Pose
- Beschreibung: Der Dog-Pose-Datensatz enthält 6.773 Trainings- und 1.703 Testbilder und stellt eine vielfältige und umfangreiche Ressource für die Keypoint-Schätzung bei Hunden dar.
- Label-Format: Folgt dem Ultralytics YOLO-Format mit Annotationen für mehrere Keypoints, die spezifisch für die Anatomie von Hunden sind.
- Anzahl der Klassen: 1 (Hund).
- Keypoints: Enthält 24 Keypoints, die auf Hundeposen zugeschnitten sind, wie z. B. Gliedmaßen, Gelenke und Kopfpositionen.
- Verwendung: Ideal für das Training von Modellen zur Schätzung von Hundeposen in verschiedenen Szenarien, von der Forschung bis hin zu realen Anwendungen.
- Mehr über Dog-Pose erfahren
Hand-Keypoints
- Beschreibung: Der Pose-Datensatz für Hand-Keypoints umfasst fast 26.000 Bilder, wobei 18.776 Bilder für das Training und 7.992 für die Validierung vorgesehen sind.
- Label-Format: Identisch mit dem oben beschriebenen Ultralytics YOLO-Format, jedoch 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 menschlicher Handposen und Gestenerkennung.
- Mehr über Hand-Keypoints erfahren
Tiger-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: Identisch mit dem oben beschriebenen Ultralytics YOLO-Format, mit 12 Keypoints für Tierposen und ohne Sichtbarkeitsdimension.
- Anzahl der Klassen: 1 (Tiger).
- Keypoints: 12 Keypoints.
- Verwendung: Großartig für Tierposen oder jede andere Pose, die nicht auf Menschen basiert.
- Mehr über Tiger-Pose erfahren
Hinzufügen deines eigenen Datensatzes
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.
Konvertierungstool
Ultralytics bietet ein praktisches Konvertierungstool, um Labels vom populären COCO-Datensatzformat 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 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 aufgenommen 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 (normalisiert x und y)
- Objektbreite und -höhe (normalisiert)
- Objekt-Keypoint-Koordinaten (normalisiert pxn und pyn)
Bei 2D-Posen beinhalten Keypoints Pixelkoordinaten. Bei 3D-Posen hat jeder Keypoint zusätzlich ein Sichtbarkeits-Flag. Weitere Details findest du unter Ultralytics YOLO format.
Wie verwende ich den COCO-Pose-Datensatz mit Ultralytics YOLO?
Um den COCO-Pose-Datensatz mit Ultralytics YOLO zu verwenden:
-
Lade den Datensatz herunter und bereite deine Label-Dateien im YOLO-Format vor.
-
Erstelle eine YAML-Konfigurationsdatei, in der die Pfade zu Trainings- und Validierungsbildern, die Keypoint-Form und die Klassennamen angegeben sind.
-
Verwende die Konfigurationsdatei für das Training:
from ultralytics import YOLO model = YOLO("yolo26n-pose.pt") # load pretrained model results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)Weitere Informationen findest du in den Abschnitten COCO-Pose und trainieren.
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)Für die vollständigen Schritte, siehe den Abschnitt Hinzufügen deines eigenen Datensatzes.
Was ist der Zweck der Datensatz-YAML-Datei in Ultralytics YOLO?
Die Datensatz-YAML-Datei in Ultralytics YOLO definiert den Datensatz und die Modellkonfiguration für das Training. Sie spezifiziert Pfade zu Trainings-, Validierungs- und Testbildern, Keypoint-Formen, Klassennamen und weitere Konfigurationsoptionen. Dieses strukturierte Format hilft dabei, die Datensatzverwaltung und das Modelltraining zu optimieren. 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.zipMehr über das Erstellen von YAML-Konfigurationsdateien erfährst du unter Datensatz-YAML-Format.
Wie kann ich COCO-Datensatzlabels für die Pose-Schätzung in das Ultralytics YOLO-Format konvertieren?
Ultralytics bietet ein Konvertierungstool an, um COCO-Datensatzlabels 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 und im Leitfaden zur Datenvorverarbeitung.