Overslaan naar inhoud

Overzicht van posisschatting datasets

Ondersteunde datasetformaten

Ultralytics YOLO formaat

Het labelformaat van de dataset dat wordt gebruikt voor het trainen van YOLO pose-modellen is als volgt:

  1. Eén tekstbestand per afbeelding: Elke afbeelding in de dataset heeft een bijbehorend tekstbestand met dezelfde naam als het afbeeldingsbestand en de extensie ".txt".
  2. Eén rij per object: Elke rij in het tekstbestand komt overeen met één object in de afbeelding.
  3. Objectinformatie per rij: Elke rij bevat de volgende informatie over de objectinstantie:
    • Objectklasse-index: Een geheel getal dat de klasse van het object weergeeft (bijv. 0 voor persoon, 1 voor auto, etc.).
    • Coördinaten middelpunt object: De x- en y-coördinaten van het middelpunt van het object, genormaliseerd tussen 0 en 1.
    • Breedte en hoogte van het object: De breedte en hoogte van het object, genormaliseerd tussen 0 en 1.
    • Object sleutelpunt coördinaten: De sleutelpunten van het object, genormaliseerd tussen 0 en 1.

Hier is een voorbeeld van het labelformaat voor de taak pose estimation:

Formaat met Dim = 2

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

Formaat met Dim = 3

<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> <pxn> <pyn> <p2-visibility>

In dit formaat, <class-index> is de index van de klasse voor het object,<x> <y> <width> <height> zijn coördinaten van de begrenzende box, en <px1> <py1> <px2> <py2> ... <pxn> <pyn> zijn de pixelcoördinaten van de sleutelpunten. De coördinaten worden gescheiden door spaties.

Dataset YAML formaat

Het Ultralytics framework gebruikt een YAML bestandsformaat om de dataset en modelconfiguratie voor het trainen van detectiemodellen te definiëren. Hier is een voorbeeld van het YAML-formaat dat wordt gebruikt voor het definiëren van een detectiedataset:

# 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

De train en val velden geven de paden aan naar de mappen met respectievelijk de trainings- en validatieafbeeldingen.

names is een woordenboek met klassennamen. De volgorde van de namen moet overeenkomen met de volgorde van de objectklasse-indices in de YOLO datasetbestanden.

(Optioneel) Als de punten symmetrisch zijn, dan is flip_idx nodig, zoals links-rechts van een mens of gezicht. Als we bijvoorbeeld uitgaan van vijf sleutelpunten van gezichtsherkenningspunten: [linkeroog, rechteroog, neus, linkermond, rechtermond], en de oorspronkelijke index is [0, 1, 2, 3, 4], dan is flip_idx [1, 0, 2, 4, 3] (wissel alleen de links-rechts index om, dus 0-1 en 3-4, en wijzig de andere niet, zoals de neus in dit voorbeeld).

Gebruik

Voorbeeld

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

Ondersteunde datasets

In dit gedeelte worden de datasets beschreven die compatibel zijn met het formaat Ultralytics YOLO en gebruikt kunnen worden voor het trainen van modellen voor het schatten van de houding:

COCO-Pose

  • Beschrijving: COCO-Pose is een grootschalige dataset voor objectdetectie, segmentatie en pose-schatting. Het is een subset van de populaire COCO dataset en richt zich op het schatten van de menselijke houding. COCO-Pose bevat meerdere sleutelpunten voor elke menselijke instantie.
  • Labelindeling: Hetzelfde als Ultralytics YOLO formaat zoals hierboven beschreven, met sleutelpunten voor menselijke houdingen.
  • Aantal klassen: 1 (Mens).
  • Toetspunten: 17 sleutelpunten, waaronder neus, ogen, oren, schouders, ellebogen, polsen, heupen, knieën en enkels.
  • Gebruik: Geschikt voor het trainen van modellen voor het schatten van de menselijke houding.
  • Extra opmerkingen: De dataset is rijk en divers en bevat meer dan 200.000 gelabelde afbeeldingen.
  • Lees meer over COCO-Pose

COCO8-houding

  • Beschrijving: Ultralytics COCO8-Pose is een kleine, maar veelzijdige pose detectie dataset die bestaat uit de eerste 8 afbeeldingen van de COCO train 2017 set, 4 voor training en 4 voor validatie.
  • Labelindeling: Hetzelfde als Ultralytics YOLO formaat zoals hierboven beschreven, met sleutelpunten voor menselijke houdingen.
  • Aantal klassen: 1 (Mens).
  • Toetspunten: 17 sleutelpunten, waaronder neus, ogen, oren, schouders, ellebogen, polsen, heupen, knieën en enkels.
  • Gebruik: Geschikt voor het testen en debuggen van objectdetectiemodellen, of voor het experimenteren met nieuwe detectiebenaderingen.
  • Extra opmerkingen: COCO8-Pose is ideaal voor sanity checks en CI-controles.
  • Lees meer over COCO8-Pose

Tijgerhouding

  • Beschrijving: Ultralytics Deze dataset voor de houding van dieren bestaat uit 263 afbeeldingen afkomstig van een YouTube-video, waarbij 210 afbeeldingen zijn toegewezen voor training en 53 voor validatie.
  • Labelformaat: Hetzelfde als Ultralytics YOLO formaat zoals hierboven beschreven, met 12 sleutelpunten voor de houding van het dier en geen zichtbare dimensie.
  • Aantal klassen: 1 (Tijger).
  • Sleutelpunten: 12 sleutelpunten.
  • Gebruik: Geweldig voor dierpose of elke andere pose die niet op de mens is gebaseerd.
  • Lees meer over Tijgerhouding

Je eigen dataset toevoegen

Als je een eigen dataset hebt en deze wilt gebruiken voor het trainen van modellen voor het schatten van de houding met het formaat Ultralytics YOLO , zorg er dan voor dat deze het formaat volgt dat hierboven is gespecificeerd onder "Ultralytics YOLO formaat". Converteer je annotaties naar het vereiste formaat en specificeer de paden, het aantal klassen en de namen van de klassen in het YAML configuratiebestand.

Conversie Gereedschap

Ultralytics biedt een handig conversiehulpmiddel om labels van het populaire COCO datasetformaat te converteren naar het YOLO formaat:

Voorbeeld

from ultralytics.data.converter import convert_coco

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

Dit conversieprogramma kan worden gebruikt om de COCO dataset of elke andere dataset in het COCO formaat te converteren naar het Ultralytics YOLO formaat. De use_keypoints parameter geeft aan of er sleutelpunten (voor het schatten van de houding) in de geconverteerde labels moeten worden opgenomen.



Gemaakt op 2023-11-12, Bijgewerkt op 2024-04-18
Auteurs: glenn-jocher (6)

Reacties