Panoramica sui dataset di stima della posa#
Formati di dataset supportati#
Formato Ultralytics YOLO#
Il formato delle etichette del dataset utilizzato per addestrare i modelli di posa YOLO è il seguente:
- Un file di testo per immagine: ogni immagine nel dataset ha un file di testo corrispondente con lo stesso nome del file immagine e l'estensione ".txt".
- Una riga per oggetto: ogni riga nel file di testo corrisponde a un'istanza di oggetto nell'immagine.
- 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 (es. 0 per persona, 1 per auto, ecc.).
- Coordinate del centro dell'oggetto: le coordinate x e y del centro dell'oggetto, normalizzate per essere comprese tra 0 e 1.
- Larghezza e altezza dell'oggetto: la larghezza e l'altezza dell'oggetto, normalizzate per essere 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 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à per 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 per l'oggetto, <x> <y> <width> <height> sono le coordinate normalizzate del 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 🚀 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.zipI campi train, val e test puntano alle immagini di addestramento, validazione e test. Ognuno accetta una directory, un elenco di directory o un file *.txt che elenca un percorso di immagine per riga (i percorsi che iniziano con ./ vengono risolti rispetto al file *.txt). Un file *.txt è utile per eseguire l'addestramento su un sottoinsieme di una directory, saltare immagini non annotate o combinare immagini da più fonti in un unico split.
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: personnames è un dizionario dei 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 mappa ciascun keypoint alla sua immagine speculare, in modo che l'aumento di ribaltamento orizzontale mantenga coerenti sinistra e destra su scheletri simmetrici come il corpo umano o il volto. Per cinque punti di riferimento facciali indicizzati come [left eye, right eye, nose, left mouth, right mouth] = [0, 1, 2, 3, 4], flip_idx è [1, 0, 2, 4, 3]: le coppie sinistra-destra 0-1 e 3-4 si scambiano e il naso mantiene il proprio indice.
(Facoltativo) kpt_oks_sigmas imposta i sigma OKS personalizzati per singolo keypoint utilizzati durante l'addestramento e la validazione, ad es. [0.26, 0.25, 0.25, ...]. La lunghezza della lista deve essere uguale al numero di keypoint N da kpt_shape e ogni valore deve essere positivo. Se omesso, vengono utilizzati i sigma a 17 keypoints di COCO per kpt_shape: [17, 3] e un valore uniforme 1/N altrimenti.
Utilizzo#
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 descrive i dataset compatibili con il formato Ultralytics YOLO e utilizzabili per l'addestramento di modelli di pose estimation:
COCO-Pose#
- Descrizione: COCO-Pose è un dataset di stima della posa umana su larga scala che copre le immagini COCO 2017 contenenti persone con keypoint annotati.
- Formato etichette: Identico al formato Ultralytics YOLO come descritto sopra, con punti chiave per le pose umane.
- Numero di classi: 1 (persona).
- Keypoint: 17 tipi di keypoint inclusi naso, occhi, orecchie, spalle, gomiti, polsi, anche, ginocchia e caviglie, ognuno con una dimensione di visibilità.
- Utilizzo: Adatto per l'addestramento di 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: Ultralytics COCO8-Pose è 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 validazione.
- Formato etichette: Identico al formato Ultralytics YOLO come descritto sopra, con punti chiave per le pose umane.
- Numero di classi: 1 (persona).
- Keypoint: 17 tipi di keypoint inclusi naso, occhi, orecchie, spalle, gomiti, polsi, anche, ginocchia e caviglie, ognuno con una dimensione di visibilità.
- Utilizzo: Adatto per testare e sottoporre a debug i modelli di stima della posa o per sperimentare con nuovi approcci di rilevamento dei keypoint.
- Note aggiuntive: COCO8-Pose è ideale per controlli di sanità e controlli CI.
- Scopri di più su COCO8-Pose
Dog-Pose#
- Descrizione: Il dataset Ultralytics Dog-Pose contiene 6.773 immagini di addestramento e 1.703 di validazione per la stima dei keypoint dei cani.
- Formato etichette: Segue il formato Ultralytics YOLO, con annotazioni per molteplici punti chiave specifici dell'anatomia canina.
- Numero di classi: 1 (cane).
- Keypoint: 24 keypoint, ognuno con una dimensione di visibilità, su misura per le pose dei cani come arti, articolazioni e posizioni della testa.
- Utilizzo: Ideale per addestrare modelli a stimare le pose dei cani in vari scenari, dalla ricerca alle applicazioni reali.
- Note aggiuntive: Le immagini sorgente sono tratte dallo Stanford Dogs Dataset.
- Scopri di più su Dog-Pose
Punti chiave della mano#
- Descrizione: Il dataset Ultralytics Hand Keypoints comprende 26.768 immagini, con 18.776 allocate per l'addestramento e 7.992 per la validazione.
- Formato etichette: Identico 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 keypoint sono generate utilizzando Google MediaPipe per un'etichettatura coerente.
- Scopri di più su Hand Keypoints
Tiger-Pose#
- Descrizione: Il dataset Ultralytics Tiger-Pose comprende 263 immagini provenienti da un video di YouTube, con 210 immagini allocate per l'addestramento e 53 per la validazione.
- Formato dell'etichetta: Identico al formato Ultralytics YOLO come descritto sopra, con 12 keypoint per la posa animale e nessuna dimensione di visibilità.
- Numero di classi: 1 (tigre).
- Punti chiave: 12 punti chiave.
- Utilizzo: Ottimo per la posa animale o qualsiasi altra posa non basata sull'uomo.
- Note aggiuntive: Rilasciato sotto la licenza AGPL-3.0.
- Scopri di più su Tiger-Pose
Aggiungere il tuo dataset#
Se hai il tuo dataset e vorresti usarlo per addestrare modelli di stima della posa con il formato Ultralytics YOLO, assicurati che segua il formato specificato sopra alla voce "Formato Ultralytics 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.
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 fornisce un comodo strumento di conversione per convertire le etichette dal popolare formato del dataset COCO al formato YOLO:
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 in formato COCO nel formato Ultralytics YOLO. Il parametro use_keypoints specifica se includere i keypoint (per la stima della posa) nelle etichette convertite.
FAQ#
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 archivia le 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 normalizzati)
Per le pose 2D, i keypoint includono coordinate x e y normalizzate. Con una dimensione di visibilità, ogni keypoint ha anche un flag di visibilità. Per maggiori dettagli, consulta il formato Ultralytics YOLO.
coco-pose.yamlviene fornito con il 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 vedi COCO-Pose e la pagina Train per l'elenco completo degli argomenti.
Per aggiungere il tuo dataset:
-
Converti le tue annotazioni nel formato Ultralytics YOLO.
-
Crea un file di configurazione YAML specificando i percorsi del dataset, il numero di classi e i nomi delle classi.
-
Usa il file di configurazione per addestrare il tuo modello:
from ultralytics import YOLO model = YOLO("yolo26n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Per i passaggi completi, controlla la sezione Aggiunta del proprio dataset.
-
Il file YAML del dataset in Ultralytics YOLO definisce la configurazione del dataset e del modello per l'addestramento. Specifica i percorsi verso le immagini di addestramento, validazione 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 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.zipScopri di più sulla creazione di file di configurazione YAML in Formato YAML del dataset.
Ultralytics fornisce uno strumento di conversione 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 aiuta a integrare senza problemi i dataset COCO nei progetti YOLO. Per i dettagli, fai riferimento alla sezione Strumento di conversione e alla guida alla preelaborazione dei dati.