Vai al contenuto

Panoramica dei set di dati per la stima della posa

Formati di dati supportati

Ultralytics YOLO formato

Il formato delle etichette del dataset utilizzato per l'addestramento dei modelli di posa di YOLO è il seguente:

  1. Un file di testo per ogni immagine: Ogni immagine del set di dati ha un file di testo corrispondente con lo stesso nome del file immagine e l'estensione ".txt".
  2. Una riga per ogni oggetto: Ogni riga del file di testo corrisponde a un'istanza di oggetto nell'immagine.
  3. Informazioni sull'oggetto per riga: Ogni riga contiene le seguenti informazioni sull'istanza dell'oggetto:
    • Indice della classe dell'oggetto: Un numero intero che rappresenta la classe dell'oggetto (ad es. 0 per la persona, 1 per l'auto, ecc.).
    • Coordinate del centro dell'oggetto: Le coordinate x e y del centro dell'oggetto, normalizzate in modo da essere comprese tra 0 e 1.
    • Larghezza e altezza dell'oggetto: La larghezza e l'altezza dell'oggetto, normalizzate in modo che siano comprese tra 0 e 1.
    • Coordinate dei punti chiave dell'oggetto: I punti chiave dell'oggetto, normalizzati per essere compresi tra 0 e 1.

Ecco un esempio del formato dell'etichetta per l'attività di stima della posa:

Formato con Dim = 2

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

Formato con Dim = 3

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

In questo formato, <class-index> è l'indice della classe dell'oggetto,<x> <y> <width> <height> sono le coordinate del rettangolo di selezione e <px1> <py1> <px2> <py2> ... <pxn> <pyn> sono le coordinate dei pixel dei punti chiave. Le coordinate sono separate da spazi.

Formato YAML del set di dati

Il framework Ultralytics utilizza un formato di file YAML per definire il dataset e la configurazione del modello per l'addestramento dei modelli di rilevamento. Ecco un esempio del formato YAML utilizzato per definire un set di dati di rilevamento:

# 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

Il train e val specificano i percorsi delle directory contenenti rispettivamente le immagini di addestramento e di convalida.

names è un dizionario di nomi di classi. L'ordine dei nomi deve corrispondere all'ordine degli indici delle classi degli oggetti nei file del dataset YOLO .

(Opzionale) se i punti sono simmetrici, allora è necessario un flip_idx, come nel caso del lato sinistro-destro di un essere umano o di un volto. Ad esempio, se ipotizziamo cinque punti chiave del punto di riferimento del viso: [occhio sinistro, occhio destro, naso, bocca sinistra, bocca destra] e l'indice originale è [0, 1, 2, 3, 4], allora il flip_idx è [1, 0, 2, 4, 3] (scambia solo l'indice sinistro-destro, cioè 0-1 e 3-4, e non modifica gli altri come il naso in questo esempio).

Utilizzo

Esempio

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

Set di dati supportati

Questa sezione illustra i set di dati compatibili con il formato Ultralytics YOLO che possono essere utilizzati per l'addestramento dei modelli di stima della posa:

COCO-Pose

  • Descrizione: COCO-Pose è un set di dati su larga scala per il rilevamento, la segmentazione e la stima della posa degli oggetti. È un sottoinsieme del famoso set di dati COCO e si concentra sulla stima della posa umana. COCO-Pose include più punti chiave per ogni istanza umana.
  • Formato dell'etichetta: Lo stesso formato di Ultralytics YOLO descritto sopra, con punti chiave per le pose umane.
  • Numero di classi: 1 (Umano).
  • Punti chiave: 17 punti chiave tra cui naso, occhi, orecchie, spalle, gomiti, polsi, fianchi, ginocchia e caviglie.
  • Utilizzo: Adatto all'addestramento di modelli di stima della posa umana.
  • Note aggiuntive: Il set di dati è ricco e diversificato e contiene oltre 200.000 immagini etichettate.
  • Per saperne di più su COCO-Pose

COCO8-Pose

  • Descrizione: Ultralytics COCO8-Pose è un piccolo ma versatile set di dati per il rilevamento della posa composto dalle prime 8 immagini del set COCO train 2017, 4 per la formazione e 4 per la convalida.
  • Formato dell'etichetta: Lo stesso formato di Ultralytics YOLO descritto sopra, con punti chiave per le pose umane.
  • Numero di classi: 1 (Umano).
  • Punti chiave: 17 punti chiave tra cui naso, occhi, orecchie, spalle, gomiti, polsi, fianchi, ginocchia e caviglie.
  • Utilizzo: Adatto per testare e debuggare i modelli di rilevamento degli oggetti o per sperimentare nuovi approcci di rilevamento.
  • Note aggiuntive: COCO8-Pose è ideale per i controlli di sanità mentale e i controlli CI.
  • Per saperne di più su COCO8-Pose

La posa della tigre

  • Descrizione: Ultralytics Questo set di dati sulla posa degli animali comprende 263 immagini provenienti da un video di YouTube, con 210 immagini assegnate per la formazione e 53 per la convalida.
  • Formato dell'etichetta: Lo stesso formato di Ultralytics YOLO descritto sopra, con 12 punti chiave per la posa dell'animale e nessuna dimensione visibile.
  • Numero di classi: 1 (Tigre).
  • Punti chiave: 12 punti chiave.
  • Utilizzo: Ottimo per le pose degli animali o per qualsiasi altra posa che non sia quella umana.
  • Leggi di più sulla posizione della tigre

Aggiungi il tuo set di dati

Se hai un tuo set di dati e vuoi utilizzarlo per addestrare i modelli di stima della posa con il formato Ultralytics YOLO , assicurati che segua il formato specificato sopra in "FormatoUltralytics YOLO ". Converti le tue annotazioni nel formato richiesto e specifica i percorsi, il numero di classi e i nomi delle classi nel file di configurazione YAML.

Strumento di conversione

Ultralytics fornisce un pratico strumento di conversione per convertire le etichette dal popolare formato COCO al formato YOLO :

Esempio

from ultralytics.data.converter import convert_coco

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

Questo strumento di conversione può essere utilizzato per convertire il set di dati COCO o qualsiasi altro set di dati in formato COCO nel formato Ultralytics YOLO . Il use_keypoints specifica se includere i punti chiave (per la stima della posa) nelle etichette convertite.

DOMANDE FREQUENTI

Qual è il formato Ultralytics YOLO per la stima della posa?

Il formato Ultralytics YOLO per i dataset di stima della posa prevede l'etichettatura di ogni immagine con un file di testo corrispondente. Ogni riga del file di testo contiene informazioni su un'istanza dell'oggetto:

  • Indice della classe dell'oggetto
  • Coordinate del centro dell'oggetto (normalizzate x e y)
  • Larghezza e altezza dell'oggetto (normalizzate)
  • Coordinate del punto chiave dell'oggetto (pxn e pyn normalizzati)

Per le pose 2D, i punti chiave includono le coordinate dei pixel. Per il 3D, ogni punto chiave ha anche un flag di visibilità. Per maggiori dettagli, consulta il formatoUltralytics YOLO .

Come posso utilizzare il set di dati COCO-Pose con Ultralytics YOLO ?

Per utilizzare il set di dati COCO-Pose con Ultralytics YOLO : 1. Scarica il set di dati e prepara i file delle etichette nel formato YOLO . 2. Crea un file di configurazione YAML specificando i percorsi delle immagini di addestramento e di convalida, la forma dei punti chiave e i nomi delle classi. 3. Usa il file di configurazione per l'addestramento:

```python
from ultralytics import YOLO

model = YOLO("yolov8n-pose.pt")  # load pretrained model
results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
```

For more information, visit [COCO-Pose](coco.md) and [train](../../modes/train.md) sections.

Come posso aggiungere il mio set di dati per la stima della posa in Ultralytics YOLO ?

Per aggiungere il tuo set di dati: 1. Converti le tue annotazioni nel formato Ultralytics YOLO . 2. Crea un file di configurazione YAML specificando i percorsi del set di dati, il numero di classi e i nomi delle classi. 3. Usa il file di configurazione per addestrare il tuo modello:

```python
from ultralytics import YOLO

model = YOLO("yolov8n-pose.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
```

For complete steps, check the [Adding your own dataset](#adding-your-own-dataset) section.

Qual è lo scopo del file YAML del dataset in Ultralytics YOLO ?

Il file YAML del dataset in Ultralytics YOLO definisce la configurazione del dataset e del modello per la formazione. Specifica i percorsi delle immagini di addestramento, convalida e test, le forme dei punti chiave, i nomi delle classi e altre opzioni di configurazione. Questo formato strutturato aiuta a semplificare la gestione del dataset e la formazione del modello. Ecco un esempio di formato YAML:

path: ../datasets/coco8-pose
train: images/train
val: images/val
names:
  0: person

Per saperne di più sulla creazione di file di configurazione YAML in formato Dataset YAML.

Come posso convertire le etichette del dataset COCO nel formato Ultralytics YOLO per la stima della posa?

Ultralytics fornisce uno strumento di conversione per convertire le etichette dei set di dati COCO nel formato YOLO , comprese le informazioni sui punti chiave:

from ultralytics.data.converter import convert_coco

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

Questo strumento aiuta a integrare perfettamente i set di dati COCO nei progetti di YOLO . Per maggiori dettagli, consulta la sezione Strumento di conversione.



Creato 2023-11-12, Aggiornato 2024-07-04
Autori: glenn-jocher (9)

Commenti