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 ein Beispiel für das Format der Beschriftung für eine Aufgabe zur Schätzung der Körperhaltung:

Format mit 2D-Keypoints

<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>

Format mit 3D-Keypoints (einschließlich Sichtbarkeit pro Punkt)

<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 die normierten Koordinaten der Begrenzungsrahmenund <px1> <py1> <px2> <py2> ... <pxn> <pyn> sind die normalisierten Keypoint-Koordinaten. Der Sichtbarkeitskanal ist optional, aber nützlich für Datensätze, die Verdeckungen annotieren.

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:

ultralyticsyaml

# 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.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

  • Beschreibung: COCO ist ein umfangreicher Datensatz zur Objekterkennung, Segmentierung und Posenschätzung. Er ist eine Teilmenge des beliebten COCO und konzentriert sich auf die Schätzung der menschlichen Körperhaltung. COCO 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.
  • Lesen Sie mehr über COCO

COCO8

  • Beschreibung: Ultralytics COCO8 ist ein kleiner, aber vielseitiger Posenerkennungsdatensatz, der aus den ersten 8 Bildern des COCO train 2017-Satzes 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.
  • Lesen Sie mehr über COCO8

Dog-Pose

  • Beschreibung: Der Dog Pose-Datensatz enthält 6.773 Trainings- und 1.703 Testbilder und stellt damit eine vielfältige und umfangreiche Ressource für die Schätzung von Hundeknotenpunkten dar.
  • 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

Hand Keypoints

  • Beschreibung: Der Hand Keypoints Pose-Datensatz umfasst fast 26.000 Bilder, wobei 18.776 Bilder für das Training und 7.992 für die Validierung vorgesehen sind.
  • Etikett-Format: Dasselbe wie das oben beschriebene Ultralytics YOLO , aber mit 21 Tasten für eine menschliche Hand und einer Sichtbarkeitsdimension.
  • 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

Tiger-Pose

  • Beschreibung: Die 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: 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

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 für die Umwandlung von Etiketten aus dem beliebten COCO in das YOLO :

Beispiel

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)

Dieses Konvertierungstool kann zur Konvertierung des COCO oder jedes anderen Datensatzes im COCO in das Ultralytics YOLO verwendet werden. Die Website 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 kann ich den COCO mit Ultralytics YOLO verwenden?

Zur Verwendung des COCO mit Ultralytics YOLO:

  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 Bereichen COCO und Zug.

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

# 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.zip

Erfahren Sie mehr über das Erstellen von YAML-Konfigurationsdateien im Dataset-YAML-Format.

Wie kann ich COCO in das Ultralytics YOLO für die Posenschätzung konvertieren?

Ultralytics bietet ein Konvertierungstool zur Konvertierung von COCO in das YOLO , 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 bei der nahtlosen Integration von COCO in YOLO . Einzelheiten finden Sie im Abschnitt Konvertierungstool und in der Anleitung zur Datenvorverarbeitung.



📅 Vor 2 Jahren erstellt ✏️ Vor 1 Tag aktualisiert
glenn-jocherRizwanMunawarUltralyticsAssistantLaughing-qY-T-GMatthewNoycejk4e

Kommentare