Ultralytics YOLO27:

Panoramica dei dataset per la stima della posa#

Formati di dataset supportati#

Formato Ultralytics YOLO#

Il formato delle etichette del dataset utilizzato per addestrare i modelli YOLO per la stima della posa è il seguente:

  1. Un file di testo per immagine: ogni immagine del dataset ha un file di testo corrispondente con lo stesso nome del file immagine e l'estensione ".txt".
  2. Una riga per oggetto: ogni riga del file di testo corrisponde a una singola 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 intero che rappresenta la classe dell'oggetto (ad esempio, 0 per una persona, 1 per un'auto e così via).
    • Coordinate del centro dell'oggetto: le coordinate x e y del centro dell'oggetto, normalizzate tra 0 e 1.
    • Larghezza e altezza dell'oggetto: la larghezza e l'altezza dell'oggetto, normalizzate tra 0 e 1.
    • Coordinate dei keypoint dell'oggetto: i keypoint dell'oggetto, normalizzati tra 0 e 1.

Ecco un esempio del formato delle etichette per un'attività di stima della posa:

Formato con keypoint 2D

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

Formato con visibilità dei keypoint (include la visibilità per ogni punto)

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

In questo formato, <class-index> è l'indice della classe dell'oggetto, <x> <y> <width> <height> sono le coordinate normalizzate della bounding box e <px1> <py1> <px2> <py2> ... <pxn> <pyn> sono le coordinate normalizzate dei keypoint. Il canale di visibilità è facoltativo, ma utile per i dataset che annotano l'occlusione.

Formato YAML del dataset#

Il framework Ultralytics utilizza un formato di file YAML per definire la configurazione del dataset e del modello per l'addestramento dei modelli di stima della posa. Ecco un esempio del formato YAML utilizzato per definire un dataset di posa:

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

# 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

I campi train, val e test indicano le immagini di addestramento, convalida e test. Ognuno accetta una directory, un elenco di directory oppure un file *.txt che elenca un percorso immagine per riga (i percorsi che iniziano con ./ vengono risolti in relazione al file *.txt). Un file *.txt è utile per addestrare il modello su un sottoinsieme di una directory, saltare le immagini senza etichetta o combinare immagini provenienti da più origini in una singola suddivisione.

Percorsi delle immagini come file `*.txt`
path: datasets/coco8-pose # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

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

(Facoltativo) flip_idx associa ogni keypoint alla sua immagine speculare, in modo che l'augmentation con ribaltamento orizzontale mantenga coerenti destra e sinistra negli scheletri simmetrici, come il corpo o il volto umano. Per cinque punti di riferimento facciali indicizzati come [occhio sinistro, occhio destro, naso, bocca sinistra, bocca destra] = [0, 1, 2, 3, 4], flip_idx è [1, 0, 2, 4, 3]: le coppie destra-sinistra 0-1 e 3-4 vengono scambiate, mentre il naso mantiene il proprio indice.

(Facoltativo) kpt_oks_sigmas imposta i valori sigma OKS personalizzati per ogni keypoint, utilizzati durante l'addestramento e la validazione, ad esempio [0.26, 0.25, 0.25, ...]. La lunghezza dell'elenco deve essere uguale al numero di keypoint N di kpt_shape e ogni valore deve essere positivo. Se omesso, per kpt_shape: [17, 3] vengono utilizzati i valori sigma dei 17 keypoint di COCO e, in caso contrario, un valore uniforme 1/N.

Utilizzo#

Esempio
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

Dataset supportati#

Questa sezione delinea i dataset compatibili con il formato di Ultralytics YOLO e utilizzabili per l'addestramento di modelli di stima della posa. La maggior parte di questi dataset è ospitata anche su Ultralytics Platform, dove puoi esplorare le immagini e le annotazioni, visualizzare le statistiche dei dataset e clonarli per l'addestramento sul cloud.

COCO-Pose#

  • Descrizione: COCO-Pose è un dataset su larga scala per la stima della posa umana, basato sulle immagini di COCO 2017 che contengono persone annotate con keypoint.
  • Formato delle etichette: uguale al formato YOLO di Ultralytics descritto sopra, con keypoint per le pose umane.
  • Numero di classi: 1 (persona).
  • Keypoint: 17 tipi di keypoint, tra cui naso, occhi, orecchie, spalle, gomiti, polsi, fianchi, ginocchia e caviglie, ciascuno con una dimensione di visibilità.
  • Utilizzo: adatto per addestrare modelli di stima della posa umana.
  • Note aggiuntive: il dataset si basa sulla sfida COCO Keypoints 2017: 58.945 immagini annotate con 156.165 persone.
  • Scopri di più su COCO-Pose

COCO8-Pose#

  • Descrizione: COCO8-Pose di Ultralytics è un dataset di piccole dimensioni ma versatile per la stima della posa, composto dalle prime 8 immagini del set COCO train 2017, 4 per l'addestramento e 4 per la validazione.
  • Formato delle etichette: uguale al formato YOLO di Ultralytics descritto sopra, con keypoint per le pose umane.
  • Numero di classi: 1 (persona).
  • Keypoint: 17 tipi di keypoint, tra cui naso, occhi, orecchie, spalle, gomiti, polsi, fianchi, ginocchia e caviglie, ciascuno con una dimensione di visibilità.
  • Utilizzo: adatto per testare ed eseguire il debug dei modelli di stima della posa o per sperimentare nuovi approcci al rilevamento dei keypoint.
  • Note aggiuntive: COCO8-Pose è ideale per i controlli di integrità e i controlli CI.
  • Scopri di più su COCO8-Pose

Dog-Pose#

  • Descrizione: il dataset Dog-Pose di Ultralytics contiene 6.773 immagini di addestramento e 1.703 immagini di validazione per la stima dei keypoint dei cani.
  • Formato delle etichette: segue il formato YOLO di Ultralytics, con annotazioni per più keypoint specifici dell'anatomia canina.
  • Numero di classi: 1 (cane).
  • Keypoint: 24 keypoint, ciascuno con una dimensione di visibilità, adattati alle pose dei cani, come arti, articolazioni e posizioni della testa.
  • Utilizzo: ideale per addestrare modelli in grado di stimare la posa dei cani in diversi scenari, dalla ricerca alle applicazioni del mondo reale.
  • Note aggiuntive: le immagini sorgente provengono dallo Stanford Dogs Dataset.
  • Scopri di più su Dog-Pose

Keypoint della mano#

  • Descrizione: il dataset Hand Keypoints di Ultralytics comprende 26.768 immagini, di cui 18.776 destinate all'addestramento e 7.992 alla validazione.
  • Formato delle etichette: uguale al formato YOLO di Ultralytics descritto sopra, ma con 21 keypoint per una mano umana e una dimensione di visibilità.
  • Numero di classi: 1 (mano).
  • Keypoint: 21 keypoint.
  • Utilizzo: ottimo per la stima della posa della mano umana e il riconoscimento dei gesti.
  • Note aggiuntive: le annotazioni dei keypoint vengono generate utilizzando Google MediaPipe per garantire un'etichettatura coerente.
  • Scopri di più sui keypoint della mano

Tiger-Pose#

  • Descrizione: il dataset Tiger-Pose di Ultralytics comprende 263 immagini tratte da un video di YouTube, di cui 210 destinate all'addestramento e 53 alla validazione.
  • Formato delle etichette: uguale al formato YOLO di Ultralytics descritto sopra, con 12 keypoint per la posa animale e senza una dimensione di visibilità.
  • Numero di classi: 1 (tigre).
  • Keypoint: 12 keypoint.
  • Utilizzo: ottimo per la posa animale o per qualsiasi altra posa non umana.
  • Note aggiuntive: rilasciato con la Licenza AGPL-3.0.
  • Scopri di più su Tiger-Pose

Aggiungere il tuo dataset#

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

Per saltare completamente il passaggio di conversione, Ultralytics Platform ti consente di caricare immagini grezze, annotare i keypoint nel browser e addestrare direttamente sul dataset risultante.

Strumento di conversione#

Ultralytics offre un pratico strumento di conversione per convertire le etichette dal formato del popolare dataset 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 dataset COCO o qualsiasi dataset nel formato COCO al formato YOLO di Ultralytics. Il parametro use_keypoints specifica se includere i keypoint (per la stima della posa) nelle etichette convertite.

FAQ#

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

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

    Per le pose 2D, i keypoint includono coordinate x e y normalizzate. Con una dimensione di visibilità, ogni keypoint include anche un flag di visibilità. Per ulteriori dettagli, consulta il formato YOLO di Ultralytics.

  • coco-pose.yaml è incluso nel pacchetto e scarica le immagini e le etichette al primo utilizzo, quindi non è necessaria alcuna preparazione manuale:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n-pose.pt")  # load pretrained model
    results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)

    Per i dettagli sul dataset, consulta COCO-Pose e la pagina Train per l'elenco completo degli argomenti.

  • Per aggiungere il tuo dataset:

    1. Converti le annotazioni nel formato YOLO di Ultralytics.

    2. Crea un file di configurazione YAML specificando i percorsi del dataset, il numero di classi e i nomi delle classi.

    3. Utilizza il file di configurazione per addestrare il modello:

      from ultralytics import YOLO
      
      model = YOLO("yolo26n-pose.pt")
      results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

      Per la procedura completa, consulta la sezione Aggiunta del tuo dataset.

  • Il file YAML del dataset in YOLO di Ultralytics definisce la configurazione del dataset e del modello per l'addestramento. Specifica i percorsi delle immagini di addestramento, validazione e test, le forme dei keypoint, i nomi delle classi e altre opzioni di configurazione. Questo formato strutturato contribuisce a semplificare la gestione del dataset e l'addestramento del modello. Ecco un esempio di formato 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
    
    # 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

    Scopri di più sulla creazione dei file di configurazione YAML in Formato YAML del dataset.

  • Ultralytics offre uno strumento di conversione per convertire le etichette del dataset COCO nel formato YOLO, comprese le informazioni sui keypoint:

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)

    Questo strumento consente di integrare facilmente i dataset COCO nei progetti YOLO. Per ulteriori dettagli, consulta la sezione Strumento di conversione e la guida al preprocessing dei dati.

Commenti