Zum Inhalt springen

Überblick über die Datensätze zur Posenabschätzung

Unterstützte Datensatzformate

Ultralytics YOLO Format

Das Format der Datensatzbeschriftung, das für das Training der YOLO Posenmodelle verwendet wird, ist wie folgt:

  1. Eine Textdatei pro Bild: Zu jedem Bild im Datensatz gibt es eine entsprechende Textdatei mit demselben 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 angibt (z.B. 0 für eine Person, 1 für ein Auto, etc.).
    • Koordinaten des Objektmittelpunkts: Die x- und y-Koordinaten des Objektmittelpunkts, normiert auf einen Wert zwischen 0 und 1.
    • Breite und Höhe des Objekts: Die Breite und Höhe des Objekts, normalisiert auf einen Wert zwischen 0 und 1.
    • Objekt-Keypunktkoordinaten: Die Keypoints des Objekts, normalisiert auf einen Wert zwischen 0 und 1.

Hier ist ein Beispiel für das Etikettenformat für die Posenschätzung:

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> <p2-visibility>

In diesem Format, <class-index> ist der Index der Klasse für das Objekt,<x> <y> <width> <height> sind die Koordinaten des Begrenzungsrahmens, und <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 den Datensatz und die Modellkonfiguration für das Training der Erkennungsmodelle zu definieren. Hier ist ein Beispiel für das YAML-Format, das für die Definition eines Erkennungsdatensatzes verwendet wird:

# 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: ../datasets/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 dictionary
names:
  0: person

Die train und val Felder geben die Pfade zu den Verzeichnissen an, die die Trainings- bzw. Validierungsbilder enthalten.

names ist ein Wörterbuch mit Klassennamen. Die Reihenfolge der Namen sollte mit der Reihenfolge der Objektklassenindizes in den YOLO Dataset-Dateien übereinstimmen.

(Optional) Wenn die Punkte symmetrisch sind, brauchst du flip_idx, z. B. die linke und rechte Seite eines Menschen oder Gesichts. Nehmen wir zum Beispiel an, dass es fünf Schlüsselpunkte im Gesicht gibt: [linkes Auge, rechtes Auge, Nase, linker Mund, rechter Mund], und der ursprüngliche Index ist [0, 1, 2, 3, 4], dann ist flip_idx [1, 0, 2, 4, 3] (tausche nur den Links-Rechts-Index aus, d.h. 0-1 und 3-4, und ändere andere Punkte wie die Nase in diesem Beispiel nicht).

Verwendung

Beispiel

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-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 detect train data=coco8-pose.yaml model=yolov8n-pose.pt epochs=100 imgsz=640

Unterstützte Datensätze

In diesem Abschnitt werden die Datensätze vorgestellt, die mit dem Format Ultralytics YOLO kompatibel sind und für das Training von Modellen zur Posenschätzung verwendet werden können:

COCO-Pose

  • Beschreibung: COCO-Pose ist ein umfangreicher Datensatz zur Objekterkennung, Segmentierung und Posenschätzung. Er ist eine Teilmenge des beliebten COCO-Datensatzes und konzentriert sich auf die Schätzung der menschlichen Pose. COCO-Pose enthält mehrere Keypoints für jede menschliche Instanz.
  • Label-Format: Gleiches Format wie Ultralytics YOLO wie oben beschrieben, mit Keypoints für menschliche Posen.
  • Anzahl der Klassen: 1 (Mensch).
  • Keypoints: 17 Keypoints, darunter Nase, Augen, Ohren, Schultern, Ellbogen, Handgelenke, Hüften, Knie und Knöchel.
  • Verwendung: Geeignet für das Training von Modellen zur Schätzung der menschlichen Pose.
  • Zusätzliche Hinweise: Der Datensatz ist reichhaltig und vielfältig und enthält über 200.000 beschriftete Bilder.
  • Lies mehr über COCO-Pose

COCO8-Pose

  • Beschreibung: Ultralytics COCO8-Pose ist ein kleiner, aber vielseitiger Datensatz für die Posenerkennung, der aus den ersten 8 Bildern des COCO train 2017 Sets besteht, 4 für das Training und 4 für die Validierung.
  • Label-Format: Gleiches Format wie Ultralytics YOLO wie oben beschrieben, mit Keypoints für menschliche Posen.
  • Anzahl der Klassen: 1 (Mensch).
  • Keypoints: 17 Keypoints, darunter 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: Die COCO8-Pose ist ideal für Sanity Checks und CI Checks.
  • Lies mehr über COCO8-Pose

Tiger-Pose

  • Beschreibung: Ultralytics Der Datensatz für die Tierhaltung umfasst 263 Bilder aus einem YouTube-Video, von denen 210 Bilder für das Training und 53 für die Validierung verwendet werden.
  • Etikettenformat: Dasselbe Format wie Ultralytics YOLO wie oben beschrieben, mit 12 Keypoints für die Tierhaltung und ohne sichtbare Dimension.
  • Anzahl der Klassen: 1 (Tiger).
  • Keypoints: 12 Keypoints.
  • Verwendung: Ideal für Tierposen oder jede andere Pose, die nicht auf den Menschen bezogen ist.
  • Lies mehr über Tiger-Pose

Hinzufügen deines eigenen Datensatzes

Wenn du deinen eigenen Datensatz hast und ihn für das Training von Modellen zur Posenschätzung im Format Ultralytics YOLO verwenden möchtest, stelle sicher, dass er dem oben unter "Ultralytics YOLO format" angegebenen Format entspricht. Konvertiere deine Annotationen in das gewünschte Format und gib die Pfade, die Anzahl der Klassen und die Klassennamen in der YAML-Konfigurationsdatei an.

Konvertierungstool

Ultralytics bietet ein praktisches Konvertierungstool, um Etiketten aus dem beliebten COCO-Datensatzformat in das Format YOLO zu konvertieren:

Beispiel

from ultralytics.data.converter import convert_coco

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

Mit diesem Konvertierungstool kannst du den COCO-Datensatz oder jeden anderen Datensatz im COCO-Format in das Format Ultralytics YOLO umwandeln. Das use_keypoints gibt an, ob Keypoints (für die Posenschätzung) in die umgewandelten Labels aufgenommen werden sollen.



Erstellt am 2023-11-12, Aktualisiert am 2024-04-18
Autoren: glenn-jocher (6)

Kommentare