Aperçu des ensembles de données d'estimation de pose
Formats de jeux de données pris en charge
Format Ultralytics YOLO
Le format d'étiquette de l'ensemble de données utilisé pour l'entraînement des modèles de pose YOLO est le suivant :
- Un fichier texte par image : chaque image du jeu de données possède un fichier texte correspondant portant le même nom que le fichier image et l'extension « .txt ».
- Une ligne par objet : chaque ligne du fichier texte correspond à une instance d'objet dans l'image.
- Informations sur l'objet par ligne : Chaque ligne contient les informations suivantes sur l'instance d'objet :
- Indice de la classe de l'objet : Un entier représentant la classe de l'objet (par exemple, 0 pour personne, 1 pour voiture, etc.).
- Coordonnées du centre de l'objet : Les coordonnées x et y du centre de l'objet, normalisées pour être entre 0 et 1.
- Largeur et hauteur de l'objet : La largeur et la hauteur de l'objet, normalisées pour être comprises entre 0 et 1.
- Coordonnées des points clés de l'objet : Les points clés de l'objet, normalisés pour être compris entre 0 et 1.
Voici un exemple du format d'étiquette pour la tâche d'estimation de pose :
Format avec Dim = 2
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>
Format avec Dim = 3
<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> <pxn> <pyn> <pn-visibility>
Dans ce format, <class-index>
est l'indice de la classe de l'objet,<x> <y> <width> <height>
sont les coordonnées de boîte englobante, et <px1> <py1> <px2> <py2> ... <pxn> <pyn>
sont les coordonnées en pixels des points clés. Les coordonnées sont séparées par des espaces.
Format YAML de l'ensemble de données
Le framework Ultralytics utilise un format de fichier YAML pour définir la configuration de l'ensemble de données et du modèle pour l'entraînement des modèles d'estimation de pose. Voici un exemple du format YAML utilisé pour définir un ensemble de données de 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
L'argument train
et val
champs spécifient les chemins d'accès aux répertoires contenant les images d'entraînement et de validation, respectivement.
names
est un dictionnaire de noms de classes. L'ordre des noms doit correspondre à l'ordre des indices de classe d'objet dans les fichiers de l'ensemble de données YOLO.
(Facultatif) si les points sont symétriques, alors flip_idx est nécessaire, comme le côté gauche-droit d'un humain ou d'un visage. Par exemple, si nous supposons cinq points clés de repère facial : [œil gauche, œil droit, nez, bouche gauche, bouche droite], et que l'index original est [0, 1, 2, 3, 4], alors flip_idx est [1, 0, 2, 4, 3] (échangez simplement l'index gauche-droite, c'est-à-dire 0-1 et 3-4, et ne modifiez pas les autres comme le nez dans cet exemple).
Utilisation
Exemple
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
Ensembles de données pris en charge
Cette section décrit les ensembles de données compatibles avec le format Ultralytics YOLO et qui peuvent être utilisés pour l'entraînement des modèles d'estimation de pose :
COCO-Pose
- Description : COCO-Pose est un ensemble de données à grande échelle de détection d’objets, de segmentation et d’estimation de pose. Il s’agit d’un sous-ensemble de l’ensemble de données COCO populaire et se concentre sur l’estimation de la pose humaine. COCO-Pose comprend plusieurs points clés pour chaque instance humaine.
- Format d’étiquette : Identique au format Ultralytics YOLO décrit ci-dessus, avec des points clés pour les poses humaines.
- Nombre de classes : 1 (Humain).
- Points clés : 17 points clés, notamment le nez, les yeux, les oreilles, les épaules, les coudes, les poignets, les hanches, les genoux et les chevilles.
- Utilisation : Convient pour l'entraînement de modèles d'estimation de la pose humaine.
- Notes supplémentaires : L’ensemble de données est riche et diversifié, contenant plus de 200 000 images étiquetées.
- En savoir plus sur COCO-Pose
COCO8-Pose
- Description : Ultralytics COCO8-Pose est un petit ensemble de données de détection de pose polyvalent composé des 8 premières images de l’ensemble COCO train 2017, 4 pour l’entraînement et 4 pour la validation.
- Format d’étiquette : Identique au format Ultralytics YOLO décrit ci-dessus, avec des points clés pour les poses humaines.
- Nombre de classes : 1 (Humain).
- Points clés : 17 points clés, notamment le nez, les yeux, les oreilles, les épaules, les coudes, les poignets, les hanches, les genoux et les chevilles.
- Utilisation : Convient pour tester et déboguer des modèles de détection d'objets, ou pour expérimenter de nouvelles approches de détection.
- Notes supplémentaires : COCO8-Pose est idéal pour les contrôles de cohérence et les vérifications CI.
- En savoir plus sur COCO8-Pose
Pose du Tigre
- Description : Ultralytics L’ensemble de données Tiger Pose comprend 263 images provenant d’une vidéo YouTube, dont 210 images sont attribuées à l’apprentissage et 53 à la validation.
- Format d’étiquette : Identique au format Ultralytics YOLO décrit ci-dessus, avec 12 points clés pour la pose de l’animal et aucune dimension visible.
- Nombre de classes : 1 (Tigre).
- Points clés : 12 points clés.
- Utilisation : Idéal pour la pose d'animaux ou toute autre pose qui n'est pas basée sur l'humain.
- En savoir plus sur Tiger-Pose
Points clés des mains
- Description : L’ensemble de données de pose de points clés de la main comprend près de 26 000 images, avec 18 776 images allouées à l’entraînement et 7 992 à la validation.
- Format d’étiquette : Identique au format Ultralytics YOLO décrit ci-dessus, mais avec 21 points clés pour la main humaine et la dimension visible.
- Nombre de classes : 1 (Main).
- Points clés : 21 points clés.
- Utilisation : Idéal pour l’estimation de la pose de la main humaine et la reconnaissance des gestes.
- En savoir plus sur les points clés de la main
Dog-Pose
- Description : L’ensemble de données Dog Pose contient environ 6 000 images, fournissant une ressource diversifiée et étendue pour l’entraînement et la validation des modèles d’estimation de la pose du chien.
- Format d’étiquette : Suit le format Ultralytics YOLO, avec des annotations pour plusieurs points clés spécifiques à l’anatomie du chien.
- Nombre de classes : 1 (Chien).
- Points clés : Comprend 24 points clés adaptés aux poses de chiens, comme les membres, les articulations et les positions de la tête.
- Utilisation : Idéal pour l’entraînement de modèles afin d’estimer les poses de chiens dans divers scénarios, de la recherche aux applications réelles.
- En savoir plus sur Dog-Pose
Ajouter votre propre ensemble de données
Si vous possédez votre propre jeu de données et que vous souhaitez l'utiliser pour entraîner des modèles d'estimation de pose avec le format Ultralytics YOLO, assurez-vous qu'il respecte le format spécifié ci-dessus sous « Format Ultralytics YOLO ». Convertissez vos annotations au format requis et spécifiez les chemins d'accès, le nombre de classes et les noms de classes dans le fichier de configuration YAML.
Outil de conversion
Ultralytics fournit un outil de conversion pratique pour convertir les étiquettes du format populaire COCO dataset au format YOLO :
Exemple
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)
Cet outil de conversion peut être utilisé pour convertir l'ensemble de données COCO ou tout ensemble de données au format COCO au format Ultralytics YOLO. Le use_keypoints
Le paramètre spécifie s'il faut inclure les points clés (pour l'estimation de la pose) dans les étiquettes converties.
FAQ
Quel est le format Ultralytics YOLO pour l'estimation de pose ?
Le format Ultralytics YOLO pour les ensembles de données d'estimation de pose implique l'étiquetage de chaque image avec un fichier texte correspondant. Chaque ligne du fichier texte stocke des informations sur une instance d'objet :
- Indice de la classe de l'objet
- Coordonnées du centre de l'objet (x et y normalisés)
- Largeur et hauteur de l'objet (normalisées)
- Coordonnées des points clés de l'objet (pxn et pyn normalisés)
Pour les poses 2D, les keypoints comprennent les coordonnées en pixels. Pour la 3D, chaque keypoint a également un indicateur de visibilité. Pour plus de détails, consultez Format Ultralytics YOLO.
Comment utiliser le jeu de données COCO-Pose avec Ultralytics YOLO ?
Pour utiliser l'ensemble de données COCO-Pose avec Ultralytics YOLO :
- Téléchargez l'ensemble de données et préparez vos fichiers d'étiquettes au format YOLO.
- Créer un fichier de configuration YAML spécifiant les chemins d'accès aux images d'entraînement et de validation, la forme des points clés et les noms de classe.
-
Utiliser le fichier de configuration pour l'entraînement :
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") # load pretrained model results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
Pour plus d'informations, consultez les sections COCO-Pose et train.
Comment puis-je ajouter mon propre ensemble de données pour l'estimation de pose dans Ultralytics YOLO ?
Pour ajouter votre ensemble de données :
- Convertissez vos annotations au format Ultralytics YOLO.
- Créer un fichier de configuration YAML spécifiant les chemins d'accès aux ensembles de données, le nombre de classes et les noms de classe.
-
Utiliser le fichier de configuration pour entraîner votre modèle :
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
Pour connaître les étapes complètes, consultez la section Ajout de votre propre ensemble de données.
Quel est l'objectif du fichier YAML du jeu de données dans Ultralytics YOLO ?
Le fichier YAML de l'ensemble de données dans Ultralytics YOLO définit la configuration de l'ensemble de données et du modèle pour l'entraînement. Il spécifie les chemins d'accès aux images d'entraînement, de validation et de test, les formes des points clés, les noms de classe et d'autres options de configuration. Ce format structuré permet de rationaliser la gestion des ensembles de données et l'entraînement des modèles. Voici un exemple de format 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
En savoir plus sur la création de fichiers de configuration YAML au format YAML de jeu de données.
Comment puis-je convertir les étiquettes de l'ensemble de données COCO au format Ultralytics YOLO pour l'estimation de pose ?
Ultralytics fournit un outil de conversion pour convertir les étiquettes de jeu de données COCO au format YOLO, y compris les informations de point clé :
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)
Cet outil permet d'intégrer de manière transparente les ensembles de données COCO dans les projets YOLO. Pour plus de détails, consultez la section Outil de conversion et le guide de prétraitement des données.