Überblick über Datensätze zur Posenschätzung
Unterstützte Datensatzformate
Ultralytics YOLO Format
Das für das Training von YOLO-Pose-Modellen verwendete Datensatz-Labelformat ist wie folgt:
- 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:
- Objektklassenindex: Eine ganze Zahl, die die Klasse des Objekts darstellt (z. B. 0 für Person, 1 für Auto usw.).
- Mittelpunktkoordinaten des Objekts: 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 die Pose-Schätzungsaufgabe:
Format mit Dim = 2
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>
Format mit Dim = 3
<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> <pxn> <pyn> <pn-visibility>
In diesem Format <class-index>
ist der Index der Klasse für das Objekt,<x> <y> <width> <height>
sind Koordinaten von Begrenzungsrahmenund <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 die Datensatz- und Modellkonfiguration für das Training von Pose-Schätzungsmodellen zu definieren. Hier ist ein Beispiel für das YAML-Format, das zum Definieren eines Pose-Datensatzes verwendet wird:
ultralytics/cfg/datasets/coco8-pose.yaml
# 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
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
Die train
und val
Felder geben die Pfade zu den Verzeichnissen an, die die Trainings- bzw. Validierungsbilder enthalten.
names
ist ein Dictionary mit Klassennamen. Die Reihenfolge der Namen sollte mit der Reihenfolge der Objektklassenindizes in den YOLO-Datensatzdateien übereinstimmen.
(Optional) Wenn die Punkte symmetrisch sind, wird flip_idx benötigt, wie z. B. die linke und rechte Seite eines Menschen oder Gesichts. Wenn wir beispielsweise fünf Keypoints eines Gesichtsmerkmals annehmen: [linkes Auge, rechtes Auge, Nase, linker Mund, rechter Mund] und der ursprüngliche Index [0, 1, 2, 3, 4] ist, dann ist flip_idx [1, 0, 2, 4, 3] (tauschen Sie einfach den Links-Rechts-Index aus, d. h. 0-1 und 3-4, und ändern Sie keine anderen wie die Nase in diesem Beispiel).
Nutzung
Beispiel
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-pose.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo pose train data=coco8-pose.yaml model=yolo11n-pose.pt epochs=100 imgsz=640
Unterstützte Datensätze
Dieser Abschnitt umreißt die Datensätze, die mit dem Ultralytics YOLO-Format kompatibel sind und für das Training von Pose-Schätzungsmodellen verwendet werden können:
COCO-Pose
- Beschreibung: COCO-Pose ist ein umfangreiches Dataset für Objekterkennung, Segmentierung und Schätzung der Körperhaltung. Es ist eine Teilmenge des beliebten COCO-Datasets und konzentriert sich auf die Schätzung der menschlichen Körperhaltung. COCO-Pose enthält mehrere Keypoints für jede menschliche Instanz.
- Label Format: Gleiches Ultralytics YOLO Format wie oben beschrieben, 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 Schätzung menschlicher Posen.
- Zusätzliche Hinweise: Der Datensatz ist reichhaltig und vielfältig und enthält über 200.000 beschriftete Bilder.
- Erfahren Sie mehr über COCO-Pose
COCO8-Pose
- Beschreibung: Ultralytics COCO8-Pose ist ein kleines, aber vielseitiges Dataset zur Erkennung von Körperhaltungen, das aus den ersten 8 Bildern des COCO-Trainingssatzes 2017 besteht, 4 für das Training und 4 für die Validierung.
- Label Format: Gleiches Ultralytics YOLO Format wie oben beschrieben, 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.
- Erfahren Sie mehr über COCO8-Pose
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 verwendet werden.
- Label Format: Gleiches Ultralytics YOLO Format wie oben beschrieben, mit 12 Keypoints für Tierposen und keiner sichtbaren Dimension.
- Anzahl der Klassen: 1 (Tiger).
- Keypoints: 12 Keypoints.
- Verwendung: Ideal für Tierposen oder jede andere Pose, die nicht auf dem Menschen basiert.
- Erfahren Sie mehr über Tiger-Pose
Hand Keypoints
- Beschreibung: Das Hand Keypoints Pose Dataset umfasst fast 26.000 Bilder, wobei 18776 Bilder für das Training und 7992 für die Validierung vorgesehen sind.
- Label Format: Gleiches Ultralytics YOLO Format wie oben beschrieben, jedoch mit 21 Keypoints für menschliche Hände und sichtbarer Dimension.
- Anzahl der Klassen: 1 (Hand).
- Keypoints: 21 Keypoints.
- Verwendung: Ideal für die Schätzung der menschlichen Handhaltung und Gestenerkennung.
- Erfahren Sie mehr über Hand Keypoints
Dog-Pose
- Beschreibung: Das Dog Pose Dataset enthält ungefähr 6.000 Bilder und bietet eine vielfältige und umfangreiche Ressource für das Training und die Validierung von Modellen zur Schätzung der Hundepose.
- Label Format: Folgt dem Ultralytics YOLO Format, mit Annotationen für mehrere Keypoints, die spezifisch für die Hundeanatomie 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 Trainieren von Modellen zur Schätzung von Hundeposen in verschiedenen Szenarien, von der Forschung bis hin zu Anwendungen in der realen Welt.
- Erfahren Sie mehr über Dog-Pose
Hinzufügen Ihres eigenen Datensatzes
Wenn Sie Ihr eigenes Dataset haben und es für das Training von Pose-Schätzungsmodellen im Ultralytics YOLO-Format verwenden möchten, stellen Sie sicher, dass es dem oben unter „Ultralytics YOLO-Format“ angegebenen Format entspricht. Konvertieren Sie Ihre Annotationen in das erforderliche Format und geben Sie die Pfade, die Anzahl der Klassen und die Klassennamen in der YAML-Konfigurationsdatei an.
Konvertierungstool
Ultralytics bietet ein praktisches Konvertierungstool, um Labels aus dem beliebten COCO-Datensatz in das YOLO-Format zu konvertieren:
Beispiel
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. Das use_keypoints
Parameter gibt an, ob Schlüsselpunkte (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
- Mittelpunktkoordinaten des Objekts (normalisiertes x und y)
- Objektbreite und -höhe (normalisiert)
- Objekt-Keypoint-Koordinaten (normalisiert pxn und pyn)
Bei 2D-Posen beinhalten die Keypoints Pixelkoordinaten. Bei 3D hat jeder Keypoint auch ein Sichtbarkeitsflag. Weitere Informationen finden Sie unter Ultralytics YOLO Format.
Wie verwende ich den COCO-Pose-Datensatz mit Ultralytics YOLO?
Um den COCO-Pose-Datensatz mit Ultralytics YOLO zu verwenden:
- Laden Sie den Datensatz herunter und bereiten Sie Ihre Label-Dateien im YOLO-Format vor.
- Erstellen Sie eine YAML-Konfigurationsdatei, die Pfade zu Trainings- und Validierungsbildern, Keypoint-Form und Klassennamen angibt.
-
Verwenden Sie die Konfigurationsdatei für das Training:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") # load pretrained model results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
Weitere Informationen finden Sie in den Abschnitten COCO-Pose und train.
Wie kann ich meinen eigenen Datensatz für die Pose-Schätzung in Ultralytics YOLO hinzufügen?
So fügen Sie Ihren Datensatz hinzu:
- Konvertieren Sie Ihre Anmerkungen in das Ultralytics YOLO-Format.
- Erstellen Sie eine YAML-Konfigurationsdatei, die die Datensatzpfade, die Anzahl der Klassen und die Klassennamen angibt.
-
Verwenden Sie die Konfigurationsdatei, um Ihr Modell zu trainieren:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
Die vollständigen Schritte finden Sie im Abschnitt Hinzufügen Ihres eigenen Datensatzes.
Welchen Zweck hat die YAML-Datei des Datensatzes 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 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
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
Erfahren Sie mehr über das Erstellen von YAML-Konfigurationsdateien im 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 zur Konvertierung von COCO-Datensatz-Labels in das YOLO-Format, 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, COCO-Datensätze nahtlos in YOLO-Projekte zu integrieren. Einzelheiten finden Sie im Abschnitt Konvertierungstool und im Leitfaden zur Datenvorverarbeitung.