Link to this sectionÜbersicht zu Datensätzen für die Pose-Schätzung#
Link to this sectionUnterstützte Datensatzformate#
Link to this sectionUltralytics 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 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.
Link to this sectionDatensatz-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 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 der Reihenfolge der Objektklassenindizes in den YOLO-Datensatzdateien entsprechen.
(Optional) Wenn die Punkte symmetrisch sind, wird flip_idx benötigt, wie bei der linken und rechten Seite eines Menschen oder Gesichts. Wenn wir beispielsweise fünf Keypoints für Gesichtsmerkmale 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] (einfach den Links-Rechts-Index tauschen, d. h. 0-1 und 3-4, und andere wie die Nase in diesem Beispiel nicht verändern).
Link to this sectionVerwendung#
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)Link to this sectionUnterstü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ätzungsmodellen verwendet werden können:
Link to this sectionCOCO-Pose#
- Beschreibung: COCO-Pose ist ein groß angelegter Datensatz für Objekterkennung, Segmentierung und Pose-Schätzung. Er ist eine Teilmenge des bekannten COCO-Datensatzes und konzentriert sich auf die menschliche Pose-Schätzung. COCO-Pose enthält mehrere Keypoints für jede menschliche Instanz.
- Label-Format: Dasselbe wie das 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 menschlichen Pose-Schätzung.
- Zusätzliche Anmerkungen: Der Datensatz ist umfangreich und vielfältig und enthält über 200.000 annotierte Bilder.
- Mehr über COCO-Pose lesen
Link to this sectionCOCO8-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: Dasselbe wie das 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 Anmerkungen: COCO8-Pose ist ideal für Plausibilitätsprüfungen und CI-Prüfungen.
- Mehr über COCO8-Pose lesen
Link to this sectionDog-Pose#
- Beschreibung: Der Dog-Pose-Datensatz enthält 6.773 Trainings- und 1.703 Testbilder und bietet eine vielfältige und umfassende Ressource für die Keypoint-Schätzung bei Hunden.
- Label-Format: Folgt dem Ultralytics YOLO-Format mit Annotationen für mehrere spezifische Keypoints der Hundeanatomie.
- Anzahl der Klassen: 1 (Hund).
- Keypoints: Enthält 24 auf Hundeposen zugeschnittene Keypoints, wie 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 zu realen Anwendungen.
- Mehr über Dog-Pose lesen
Link to this sectionHand-Keypoints#
- Beschreibung: Der Datensatz für Hand-Keypoints umfasst fast 26.000 Bilder, mit 18.776 Bildern für das Training und 7.992 für die Validierung.
- 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: Großartig für die Schätzung menschlicher Handposen und Gestensteuerung.
- Mehr über Hand-Keypoints lesen
Link to this sectionTiger-Pose#
- Beschreibung: Das Ultralytics Tiger Pose-Datenset 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: Dasselbe wie das Ultralytics YOLO-Format wie oben beschrieben, 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 lesen
Link to this sectionEigenen 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.
Link to this sectionKonvertierungstool#
Ultralytics bietet ein praktisches Konvertierungstool, um Labels aus dem bekannten 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 einbezogen werden sollen.
Link to this sectionFAQ#
Link to this sectionWas 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-Koordinaten. Mit einer Sichtbarkeitsdimension hat jeder Keypoint auch ein Sichtbarkeits-Flag. Weitere Details findest du unter Ultralytics YOLO format.
Link to this sectionWie 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.
Link to this sectionWie 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)Die vollständigen Schritte findest du im Abschnitt Adding your own dataset.
Link to this sectionWas 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.zipLies mehr über das Erstellen von YAML-Konfigurationsdateien unter Dataset YAML format.
Link to this sectionWie 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. Einzelheiten findest du im Abschnitt Conversion Tool und im Leitfaden zur Datenvorverarbeitung.