Ultralytics YOLO27:
Get Started

Panoramica dei dataset per la stima della posa#

Formati di dataset supportati#

Formato Ultralytics YOLO#

Il formato delle etichette del dataset usato per addestrare i modelli YOLO pose è il seguente:

  1. Un file di testo per immagine: a ogni immagine del dataset corrisponde un file di testo 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 numero intero che rappresenta la classe dell'oggetto (ad es. 0 per persona, 1 per automobile e così via).
    • Coordinate del centro dell'oggetto: le coordinate x e y del centro dell'oggetto, normalizzate in modo da rientrare nell'intervallo tra 0 e 1.
    • Larghezza e altezza dell'oggetto: la larghezza e l'altezza dell'oggetto, normalizzate in modo da rientrare nell'intervallo tra 0 e 1.
    • Coordinate dei punti chiave dell'oggetto: i punti chiave dell'oggetto, normalizzati in modo da rientrare tra 0 e 1.

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

Formato con punti chiave 2D

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

Formato con visibilità dei punti chiave (include la visibilità di 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 punti chiave. Il canale di visibilità è facoltativo, ma utile per i dataset che annotano le occlusioni.

Formato YAML del dataset#

Il framework Ultralytics usa file YAML per definire il dataset e la configurazione del modello per addestrare modelli di stima della posa. Ecco un esempio del formato YAML usato per definire un dataset di pose:

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 ./ sono relativi al file *.txt). Un file *.txt è utile per addestrare su un sottoinsieme di una directory, saltare le immagini senza etichetta o combinare immagini da più origini in una singola suddivisione.

Percorsi delle immagini in un 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
kpt_shape: [17, 3] # required for pose datasets
names:
  0: person

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.

(Facoltativo) flip_idx associa ogni punto chiave alla sua immagine speculare, così l'aumento dei dati con riflessione orizzontale mantiene coerenti sinistra e destra 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 sinistra-destra 0-1 e 3-4 si scambiano, mentre il naso mantiene il proprio indice.

(Facoltativo) kpt_oks_sigmas imposta i valori sigma OKS personalizzati per ogni punto chiave, usati durante l'addestramento e la convalida, ad esempio [0.26, 0.25, 0.25, ...]. La lunghezza dell'elenco deve corrispondere al numero di punti chiave N di kpt_shape e ogni valore deve essere positivo. Se omesso, vengono usati i valori sigma per i 17 punti chiave di COCO per kpt_shape: [17, 3] e un valore 1/N uniforme negli altri casi.

Utilizzo#

Esempio
from ultralytics import YOLO

# Carica un modello
model = YOLO("yolo26n-pose.pt")  # carica un modello preaddestrato (consigliato per l'addestramento)

# Addestra il modello
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

Dataset supportati#

Questa sezione descrive i dataset compatibili con il formato Ultralytics YOLO che possono essere usati per addestrare modelli di stima della posa. La maggior parte di questi dataset è disponibile anche su Ultralytics Platform, dove puoi consultare le immagini e le annotazioni, visualizzare le statistiche dei dataset e duplicarli per l'addestramento nel cloud.

COCO-Pose#

  • Descrizione: COCO-Pose è un dataset su larga scala per la stima della posa umana, che include le immagini COCO 2017 contenenti persone annotate con punti chiave.
  • Formato delle etichette: uguale al formato Ultralytics YOLO descritto sopra, con punti chiave per le pose umane.
  • Numero di classi: 1 (persona).
  • Punti chiave: 17 tipi di punti chiave, tra cui naso, occhi, orecchie, spalle, gomiti, polsi, fianchi, ginocchia e caviglie; ciascuno include 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 stima della posa piccolo ma versatile, composto dalle prime 8 immagini del set COCO train 2017: 4 per l'addestramento e 4 per la convalida.
  • Formato delle etichette: uguale al formato Ultralytics YOLO descritto sopra, con punti chiave per le pose umane.
  • Numero di classi: 1 (persona).
  • Punti chiave: 17 tipi di punti chiave, tra cui naso, occhi, orecchie, spalle, gomiti, polsi, fianchi, ginocchia e caviglie; ciascuno include una dimensione di visibilità.
  • Utilizzo: adatto per testare ed eseguire il debug di modelli di stima della posa o per sperimentare nuovi approcci al rilevamento dei punti chiave.
  • Note aggiuntive: COCO8-Pose è ideale per controlli di coerenza e 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 convalida per la stima dei punti chiave dei cani.
  • Formato delle etichette: segue il formato Ultralytics YOLO, con annotazioni per più punti chiave specifici dell'anatomia del cane.
  • Numero di classi: 1 (cane).
  • Punti chiave: 24 punti chiave, ciascuno con una dimensione di visibilità, specifici per pose canine come arti, articolazioni e posizione della testa.
  • Utilizzo: ideale per addestrare modelli che stimano le pose dei cani in vari scenari, dalla ricerca alle applicazioni nel mondo reale.
  • Note aggiuntive: le immagini di origine provengono dal dataset Stanford Dogs.
  • Scopri di più su Dog-Pose

Punti chiave della mano#

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

Tiger-Pose#

  • Descrizione: il dataset Tiger-Pose di Ultralytics comprende 263 immagini tratte da un video YouTube, di cui 210 destinate all'addestramento e 53 alla convalida.
  • Formato delle etichette: uguale al formato Ultralytics YOLO descritto sopra, con 12 punti chiave per la posa animale e senza una dimensione di visibilità.
  • Numero di classi: 1 (tigre).
  • Punti chiave: 12 punti chiave.
  • 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 usarlo per addestrare modelli di stima della posa nel formato Ultralytics YOLO, assicurati che rispetti il formato specificato sopra alla voce "Formato Ultralytics YOLO". 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 del tutto la conversione, Ultralytics Platform ti consente di caricare immagini grezze, annotare i punti chiave nel browser e addestrare direttamente sul dataset risultante.

Strumento di conversione#

Ultralytics offre uno strumento pratico 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 usato per convertire il dataset COCO o qualsiasi dataset nel formato COCO al formato Ultralytics YOLO. Il parametro use_keypoints specifica se includere i punti chiave (per la stima della posa) nelle etichette convertite.

Domande frequenti#

  • Il formato Ultralytics YOLO per i dataset di stima della posa prevede di associare a ogni immagine un file di testo. Ogni riga del file di testo memorizza 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 punti chiave dell'oggetto (pxn e pyn normalizzate)

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

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

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

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

  • Per aggiungere il tuo dataset:

    1. Converti le annotazioni nel formato Ultralytics YOLO.

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

    3. Usa 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 Aggiungere un proprio dataset.

  • Il file YAML del dataset in Ultralytics YOLO definisce il dataset e la configurazione del modello per l'addestramento. 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 semplifica la gestione dei dataset e l'addestramento dei modelli. 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 di file di configurazione YAML in Formato YAML del dataset.

  • Ultralytics offre uno strumento per convertire le etichette del dataset COCO nel formato YOLO, incluse 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 facilita l'integrazione dei dataset COCO nei progetti YOLO. Per i dettagli, consulta la sezione Strumento di conversione e la guida alla preelaborazione dei dati.

Commenti