Panoramica dei set di dati per la stima della posa
Formati di dataset supportati
Formato Ultralytics YOLO
Il formato delle etichette del dataset utilizzato per l'addestramento dei modelli di posa YOLO è il seguente:
- Un file di testo per immagine: Ogni immagine nel set di dati 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 (ad esempio, 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 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> <pn-visibility>
In questo formato, <class-index>
è l'indice della classe per l'oggetto,<x> <y> <width> <height>
sono coordinate di riquadro di delimitazione, e <px1> <py1> <px2> <py2> ... <pxn> <pyn>
sono le coordinate in pixel dei keypoint. Le coordinate sono separate da spazi.
Formato YAML del Dataset
Il framework Ultralytics utilizza un formato di file YAML per definire il dataset e la configurazione del modello per il training di modelli di stima della posa. Ecco un esempio del formato YAML utilizzato 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
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
Il train
e val
campi specificano i percorsi delle directory contenenti rispettivamente le immagini di training e di validazione.
names
è un dizionario di nomi di classi. L'ordine dei nomi deve corrispondere all'ordine degli indici delle classi di oggetti nei file del dataset YOLO.
(Facoltativo) se i punti sono simmetrici, è necessario flip_idx, come il lato sinistro-destro di un umano o di un volto. Ad esempio, se assumiamo cinque keypoint di punti di riferimento facciali: [occhio sinistro, occhio destro, naso, bocca sinistra, bocca destra], e l'indice originale è [0, 1, 2, 3, 4], allora flip_idx è [1, 0, 2, 4, 3] (basta scambiare l'indice sinistra-destra, cioè 0-1 e 3-4, e non modificare gli altri come il naso in questo esempio).
Utilizzo
Esempio
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-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 pose train data=coco8-pose.yaml model=yolo11n-pose.pt epochs=100 imgsz=640
Dataset supportati
Questa sezione delinea i dataset compatibili con il formato Ultralytics YOLO e che possono essere utilizzati per l'addestramento di modelli di stima della posa:
COCO-Pose
- Descrizione: COCO-Pose è un dataset su larga scala per il rilevamento di oggetti, la segmentazione e la stima della posa. È un sottoinsieme del popolare dataset COCO e si concentra sulla stima della posa umana. COCO-Pose include più punti chiave per ogni istanza umana.
- Formato etichetta: uguale al formato Ultralytics YOLO come descritto sopra, con keypoint per le pose umane.
- Numero di Classi: 1 (Umano).
- Keypoints: 17 keypoints inclusi naso, occhi, orecchie, spalle, gomiti, polsi, fianchi, ginocchia e caviglie.
- Utilizzo: Adatto per addestrare modelli di stima della posa umana.
- Note aggiuntive: Il dataset è ricco e diversificato e contiene oltre 200.000 immagini etichettate.
- Ulteriori informazioni su COCO-Pose
COCO8-Pose
- Descrizione: Ultralytics COCO8-Pose è un piccolo ma versatile dataset di rilevamento della posa composto dalle prime 8 immagini del set di addestramento COCO 2017, 4 per l'addestramento e 4 per la convalida.
- Formato etichetta: uguale al formato Ultralytics YOLO come descritto sopra, con keypoint per le pose umane.
- Numero di Classi: 1 (Umano).
- Keypoints: 17 keypoints inclusi naso, occhi, orecchie, spalle, gomiti, polsi, fianchi, ginocchia e caviglie.
- Utilizzo: Adatto per testare ed eseguire il debug di modelli di object detection o per sperimentare nuovi approcci di detection.
- Note aggiuntive: COCO8-Pose è ideale per controlli di integrità e controlli CI.
- Scopri di più su COCO8-Pose
Tiger-Pose
- Description: 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 convalida.
- Formato etichetta: uguale al formato Ultralytics YOLO come descritto sopra, con 12 keypoint per la posa degli animali e nessuna dimensione visibile.
- Numero di Classi: 1 (Tigre).
- Keypoints: 12 keypoints.
- Utilizzo: Ottimo per la posa di animali o qualsiasi altra posa non basata sull'uomo.
- Scopri di più su Tiger-Pose
Punti chiave della mano
- Descrizione: Il dataset di pose dei punti chiave della mano comprende quasi 26.000 immagini, con 18776 immagini allocate per l'addestramento e 7992 per la convalida.
- Formato etichetta: uguale al formato Ultralytics YOLO come descritto sopra, ma con 21 keypoint per la mano umana e dimensione visibile.
- Numero di Classi: 1 (Mano).
- Keypoints: 21 keypoints.
- Utilizzo: Ottimo per la stima della posa della mano umana e il riconoscimento dei gesti.
- Scopri di più sui Punti chiave della mano
Dog-Pose
- Descrizione: Il dataset Dog Pose contiene circa 6.000 immagini, fornendo una risorsa diversificata ed estesa per l'addestramento e la convalida dei modelli di stima della posa del cane.
- Formato etichetta: segue il formato Ultralytics YOLO, con annotazioni per più keypoint specifici per l'anatomia del cane.
- Numero di Classi: 1 (Cane).
- Keypoints: Include 24 keypoints adatti alle pose dei cani, come arti, articolazioni e posizioni della testa.
- Utilizzo: Ideale per addestrare modelli per stimare le pose dei cani in vari scenari, dalla ricerca alle applicazioni reali.
- Scopri di più su Dog-Pose
Aggiunta del tuo dataset
Se possiedi un dataset e desideri utilizzarlo per addestrare modelli di stima della posa con il formato Ultralytics YOLO, assicurati che sia conforme al formato specificato sopra in "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.
Strumento di conversione
Ultralytics fornisce un comodo strumento di conversione per convertire le etichette dal popolare formato 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 in formato COCO nel formato Ultralytics YOLO. Il use_keypoints
parametro specifica se includere i keypoint (per la stima della posa) nelle etichette convertite.
FAQ
Cos'è 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 memorizza informazioni su un'istanza dell'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 le coordinate dei pixel. Per il 3D, ogni keypoint ha anche un flag di visibilità. Per maggiori dettagli, consulta Formato Ultralytics YOLO.
Come posso usare il dataset COCO-Pose con Ultralytics YOLO?
Per utilizzare il dataset COCO-Pose con Ultralytics YOLO:
- Scarica il dataset e prepara i file di etichette in formato YOLO.
- Crea un file di configurazione YAML specificando i percorsi delle immagini di training e validazione, la forma dei keypoint e i nomi delle classi.
-
Utilizza il file di configurazione per l'addestramento:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") # load pretrained model results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
Per maggiori informazioni, visitare le sezioni COCO-Pose e train.
Come posso aggiungere il mio dataset per la stima della posa in Ultralytics YOLO?
Per aggiungere il tuo set di dati:
- 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.
-
Utilizza il file di configurazione per addestrare il tuo modello:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
Per la procedura completa, consultare la sezione Aggiunta del proprio dataset.
Qual è lo scopo del file YAML del dataset in Ultralytics YOLO?
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 keypoint, 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
# 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 nel formato YAML del dataset.
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 del dataset COCO nel formato YOLO, incluse le informazioni sui keypoint:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)
Questo strumento aiuta a integrare facilmente i set di dati COCO nei progetti YOLO. Per i dettagli, fare riferimento alla sezione Strumento di conversione e alla guida alla preelaborazione dei dati.