Zum Inhalt springen

Ü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:

  1. Eine Textdatei pro Bild: Jedes Bild im Datensatz hat eine entsprechende Textdatei mit dem gleichen Namen wie die Bilddatei und der Erweiterung ".txt".
  2. Eine Zeile pro Objekt: Jede Zeile in der Textdatei entspricht einer Objektinstanz im Bild.
  3. 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:

  1. Laden Sie den Datensatz herunter und bereiten Sie Ihre Label-Dateien im YOLO-Format vor.
  2. Erstellen Sie eine YAML-Konfigurationsdatei, die Pfade zu Trainings- und Validierungsbildern, Keypoint-Form und Klassennamen angibt.
  3. 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:

  1. Konvertieren Sie Ihre Anmerkungen in das Ultralytics YOLO-Format.
  2. Erstellen Sie eine YAML-Konfigurationsdatei, die die Datensatzpfade, die Anzahl der Klassen und die Klassennamen angibt.
  3. 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.



📅 Vor 1 Jahr erstellt ✏️ Vor 10 Tagen aktualisiert

Kommentare