Link to this sectionPanoramica sui dataset di stima della posa#
Link to this sectionFormati di dataset supportati#
Link to this sectionFormato 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 dell'oggetto, <x> <y> <width> <height> sono le coordinate normalizzate del bounding box, e <px1> <py1> <px2> <py2> ... <pxn> <pyn> sono le coordinate normalizzate dei punti chiave. Il canale di visibilità è opzionale ma utile per i dataset che annotano l'occlusione.
Link to this sectionFormato 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 e val specificano i percorsi verso le directory che contengono rispettivamente le immagini di addestramento e di validazione.
names è un dizionario di nomi di classe. L'ordine dei nomi deve corrispondere all'ordine degli indici di classe degli oggetti nei file del dataset YOLO.
(Opzionale) se i punti sono simmetrici, allora è necessario flip_idx, come per il lato sinistro-destro di una persona o di un volto. Ad esempio, se ipotizziamo cinque punti chiave per i landmark facciali: [occhio sinistro, occhio destro, naso, bocca sinistra, bocca destra], e l'indice originale è [0, 1, 2, 3, 4], allora flip_idx sarà [1, 0, 2, 4, 3] (basta scambiare l'indice sinistro-destro, ovvero 0-1 e 3-4, e non modificare gli altri come il naso in questo esempio).
Link to this sectionUtilizzo#
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)Link to this sectionDataset supportati#
Questa sezione delinea i dataset compatibili con il formato Ultralytics YOLO che possono essere utilizzati per l'addestramento di modelli di stima della posa:
Link to this sectionCOCO-Pose#
- Descrizione: COCO-Pose è un dataset su larga scala per rilevamento di oggetti, segmentazione e stima della posa. È un sottoinsieme del popolare dataset COCO e si concentra sulla stima della posa umana. COCO-Pose include molteplici punti chiave per ogni istanza umana.
- Formato etichette: Identico al formato Ultralytics YOLO come 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, anche, ginocchia e caviglie.
- Utilizzo: Adatto per l'addestramento di modelli di stima della posa umana.
- Note aggiuntive: Il dataset è ricco e diversificato, contenente oltre 200.000 immagini etichettate.
- Leggi di più su COCO-Pose
Link to this sectionCOCO8-Pose#
- Descrizione: Ultralytics COCO8-Pose è un dataset di rilevamento 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 (Umano).
- Punti chiave: 17 punti chiave tra cui naso, occhi, orecchie, spalle, gomiti, polsi, anche, ginocchia e caviglie.
- Utilizzo: Adatto per testare ed eseguire il debug di modelli di rilevamento oggetti, o per sperimentare nuovi approcci di rilevamento.
- Note aggiuntive: COCO8-Pose è ideale per controlli di integrità e CI checks.
- Leggi di più su COCO8-Pose
Link to this sectionDog-Pose#
- Descrizione: Il dataset Dog Pose contiene 6.773 immagini di addestramento e 1.703 di test, fornendo una risorsa vasta e diversificata per la stima dei punti chiave canini.
- Formato etichette: Segue il formato Ultralytics YOLO, con annotazioni per molteplici punti chiave specifici dell'anatomia canina.
- Numero di classi: 1 (Cane).
- Punti chiave: Include 24 punti chiave su misura per le pose del cane, come arti, articolazioni e posizioni della testa.
- Utilizzo: Ideale per l'addestramento di modelli per stimare le pose dei cani in vari scenari, dalla ricerca alle applicazioni nel mondo reale.
- Leggi di più su Dog-Pose
Link to this sectionPunti chiave della mano#
- Descrizione: Il dataset di posa dei punti chiave della mano comprende quasi 26K immagini, con 18.776 immagini 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.
- Leggi di più sui punti chiave della mano
Link to this sectionTiger-Pose#
- Descrizione: Il dataset Tiger Pose di Ultralytics comprende 263 immagini provenienti da un video di YouTube, con 210 immagini allocate per l'addestramento e 53 per la validazione.
- Formato etichette: Identico al formato Ultralytics YOLO come descritto sopra, con 12 punti chiave 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.
- Leggi di più su Tiger-Pose
Link to this sectionAggiungere 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.
Link to this sectionStrumento 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 nel formato COCO nel formato Ultralytics YOLO. Il parametro use_keypoints specifica se includere i punti chiave (per la stima della posa) nelle etichette convertite.
Link to this sectionFAQ#
Link to this sectionCos'è 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 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 punti chiave includono coordinate x e y normalizzate. Con una dimensione di visibilità, ogni punto chiave ha anche un flag di visibilità. Per maggiori dettagli, vedi Formato Ultralytics YOLO.
Link to this sectionCome utilizzo il dataset COCO-Pose con Ultralytics YOLO?#
Per utilizzare il dataset COCO-Pose con Ultralytics YOLO:
-
Scarica il dataset e prepara i tuoi file di etichette nel formato YOLO.
-
Crea un file di configurazione YAML specificando i percorsi verso le immagini di addestramento e validazione, la forma dei punti chiave e i nomi delle classi.
-
Usa il file di configurazione per l'addestramento:
from ultralytics import YOLO model = YOLO("yolo26n-pose.pt") # load pretrained model results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)Per ulteriori informazioni, visita le sezioni COCO-Pose e train.
Link to this sectionCome posso aggiungere il mio dataset per la stima della posa in Ultralytics YOLO?#
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 Aggiungere il proprio dataset.
Link to this sectionQual è 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 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.zipLeggi di più sulla creazione di file di configurazione YAML in Formato YAML del dataset.
Link to this sectionCome 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 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 dataset COCO nei progetti YOLO. Per i dettagli, consulta la sezione Strumento di conversione e la guida al pre-elaborazione dei dati.