Panoramica dei 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 una istanza di oggetto nell'immagine.
- Informazioni sull'oggetto per riga: Ogni riga contiene le seguenti informazioni sull'istanza di 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 per essere comprese tra 0 e 1.
- Coordinate dei keypoint dell'oggetto: I keypoint 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 keypoint 2D
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>
Formato con keypoint 3D (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à è opzionale 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 di 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 alle directory contenenti rispettivamente le immagini di addestramento e di validazione.
names è un dizionario di nomi di classi. L'ordine dei nomi dovrebbe corrispondere all'ordine degli indici delle classi degli oggetti nei file del dataset YOLO.
(Opzionale) se i punti sono simmetrici, è necessario flip_idx, come per il lato destro-sinistro del corpo umano o del viso. Ad esempio, se supponiamo 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 sinistro-destro, ovvero 0-1 e 3-4, e non modificare gli altri come il naso in questo esempio).
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 stima della posa:
COCO-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 keypoint per ogni istanza umana.
- Formato etichette: Identico al formato Ultralytics YOLO come descritto sopra, con keypoint per pose umane.
- Numero di classi: 1 (Umano).
- Keypoint: 17 keypoint tra cui naso, occhi, orecchie, spalle, gomiti, polsi, fianchi, 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
COCO8-Pose
- Descrizione: Ultralytics COCO8-Pose è un dataset di rilevamento della posa piccolo ma versatile, composto dalle prime 8 immagini del set di addestramento COCO 2017, 4 per l'addestramento e 4 per la validazione.
- Formato etichette: Identico al formato Ultralytics YOLO come descritto sopra, con keypoint per pose umane.
- Numero di classi: 1 (Umano).
- Keypoint: 17 keypoint tra cui naso, occhi, orecchie, spalle, gomiti, polsi, fianchi, ginocchia e caviglie.
- Utilizzo: Adatto per testare e correggere modelli di rilevamento oggetti, o per sperimentare nuovi approcci di rilevamento.
- Note aggiuntive: COCO8-Pose è ideale per controlli di integrità e controlli CI.
- Leggi di più su COCO8-Pose
Dog-Pose
- Descrizione: Il dataset Dog-Pose contiene 6.773 immagini di addestramento e 1.703 immagini di test, fornendo una risorsa diversificata ed estesa per la stima dei keypoint canini.
- Formato etichette: Segue il formato Ultralytics YOLO, con annotazioni per molteplici keypoint specifici per l'anatomia canina.
- Numero di classi: 1 (Cane).
- Keypoint: Include 24 keypoint su misura per le pose dei cani, come arti, articolazioni e posizioni della testa.
- Utilizzo: Ideale per addestrare modelli a stimare pose canine in vari scenari, dalla ricerca alle applicazioni del mondo reale.
- Leggi di più su Dog-Pose
Hand Keypoints
- Descrizione: Il dataset di posa per i keypoint della mano comprende quasi 26.000 immagini, con 18.776 immagini destinate all'addestramento e 7.992 alla validazione.
- Formato etichette: Identico al formato Ultralytics YOLO 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.
- Leggi 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 etichette: Identico al formato Ultralytics YOLO come descritto sopra, con 12 keypoint per la posa animale e nessuna dimensione visibile.
- Numero di classi: 1 (Tigre).
- Keypoint: 12 keypoint.
- Utilizzo: Ottimo per la posa animale o qualsiasi altra posa non basata su esseri umani.
- Leggi di più su Tiger-Pose
Aggiungi il tuo dataset
Se hai un tuo dataset e desideri utilizzarlo per l'addestramento di 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.
Strumento di conversione
Ultralytics fornisce un comodo strumento di conversione per convertire le etichette dal popolare formato 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
Qual è 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 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 normalizzate)
Per pose 2D, i keypoint includono le coordinate dei pixel. Per il 3D, ogni keypoint ha anche un flag di visibilità. Per ulteriori dettagli, vedi Formato Ultralytics YOLO.
Come 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 delle immagini di addestramento 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("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 addestramento.
Come 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.
-
Utilizza 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.
Qual è 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 alle immagini di addestramento, validazione 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
# 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 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 senza problemi i dataset COCO nei progetti YOLO. Per i dettagli, fai riferimento alla sezione Strumento di conversione e alla guida al pre-elaborazione dei dati.