Présentation des jeux de données d’estimation de pose#
Formats de jeux de données pris en charge#
Format Ultralytics YOLO#
Le format des annotations du jeu de données utilisé pour entraîner les 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 classe de l’objet : un entier représentant la classe de l’objet (par exemple, 0 pour une personne, 1 pour une voiture, etc.).
- Coordonnées du centre de l’objet : les coordonnées x et y du centre de l’objet, normalisées entre 0 et 1.
- Largeur et hauteur de l’objet : la largeur et la hauteur de l’objet, normalisées entre 0 et 1.
- Coordonnées des points clés de l’objet : les points clés de l’objet, normalisés entre 0 et 1.
Voici un exemple de format d’annotation pour une tâche d’estimation de pose :
Format avec points clés 2D
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>Format avec visibilité des points clés (inclut la visibilité de chaque point)
<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> correspond aux coordonnées normalisées de la boîte englobante, et <px1> <py1> <px2> <py2> ... <pxn> <pyn> correspond aux coordonnées normalisées des points clés. Le canal de visibilité est facultatif, mais utile pour les jeux de données qui annotent l’occlusion.
Format YAML du jeu de données#
Le framework Ultralytics utilise un format de fichier YAML pour définir la configuration du jeu de données et du modèle lors de l’entraînement de modèles d’estimation de pose. Voici un exemple de format YAML utilisé pour définir un jeu de données de pose :
# 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.zipLes champs train, val et test indiquent les images d’entraînement, de validation et de test. Chacun accepte un répertoire, une liste de répertoires ou un fichier *.txt répertoriant un chemin d’image par ligne (les chemins commençant par ./ sont résolus par rapport au fichier *.txt). Un fichier *.txt est utile pour entraîner un modèle sur un sous-ensemble d’un répertoire, ignorer les images non annotées ou combiner des images provenant de plusieurs sources dans une même division.
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 est un dictionnaire de noms de classes. L’ordre des noms doit correspondre à l’ordre des indices de classe des objets dans les fichiers du jeu de données YOLO.
(Facultatif) flip_idx associe chaque point clé à son image miroir afin que l’augmentation par retournement horizontal conserve la cohérence entre la gauche et la droite sur les squelettes symétriques, comme le corps ou le visage humains. Pour cinq repères faciaux indexés comme [œil gauche, œil droit, nez, bouche gauche, bouche droite] = [0, 1, 2, 3, 4], flip_idx vaut [1, 0, 2, 4, 3] : les paires gauche-droite 0-1 et 3-4 sont interverties, tandis que le nez conserve son propre indice.
(Facultatif) kpt_oks_sigmas définit des sigmas OKS personnalisés pour chaque point clé, utilisés pendant l’entraînement et la validation, par exemple [0.26, 0.25, 0.25, ...]. La longueur de la liste doit être égale au nombre de points clés N de kpt_shape, et chaque valeur doit être positive. Si ce paramètre est omis, les sigmas COCO pour 17 points clés sont utilisés pour kpt_shape: [17, 3], et une valeur uniforme est utilisée pour 1/N dans les autres cas.
Utilisation#
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)Jeux de données pris en charge#
Cette section présente les jeux de données qui sont compatibles avec le format Ultralytics YOLO et qui peuvent être utilisés pour entraîner des modèles d'estimation de pose. La plupart de ces jeux de données sont également hébergés sur la plateforme Ultralytics, où tu peux parcourir les images et les annotations, consulter les statistiques du jeu de données et les cloner pour un entraînement dans le cloud.
COCO-Pose#
- Description : COCO-Pose est un jeu de données d’estimation de pose humaine à grande échelle couvrant les images COCO 2017 qui contiennent des personnes annotées avec des points clés.
- Format des annotations : identique au format YOLO d’Ultralytics décrit ci-dessus, avec des points clés pour les poses humaines.
- Nombre de classes : 1 (personne).
- Points clés : 17 types de points clés, notamment le nez, les yeux, les oreilles, les épaules, les coudes, les poignets, les hanches, les genoux et les chevilles, chacun avec une dimension de visibilité.
- Utilisation : adapté à l’entraînement de modèles d’estimation de pose humaine.
- Remarques supplémentaires : le jeu de données s’appuie sur le défi COCO Keypoints 2017 : 58 945 images annotées contenant 156 165 personnes.
- En savoir plus sur COCO-Pose
COCO8-Pose#
- Description : COCO8-Pose d’Ultralytics est un petit jeu de données d’estimation de pose polyvalent, composé des 8 premières images de l’ensemble d’entraînement COCO 2017, dont 4 pour l’entraînement et 4 pour la validation.
- Format des annotations : identique au format YOLO d’Ultralytics décrit ci-dessus, avec des points clés pour les poses humaines.
- Nombre de classes : 1 (personne).
- Points clés : 17 types de points clés, notamment le nez, les yeux, les oreilles, les épaules, les coudes, les poignets, les hanches, les genoux et les chevilles, chacun avec une dimension de visibilité.
- Utilisation : adapté aux tests et au débogage de modèles d’estimation de pose, ou à l’expérimentation de nouvelles approches de détection de points clés.
- Remarques supplémentaires : COCO8-Pose est idéal pour les vérifications de bon fonctionnement et les vérifications CI.
- En savoir plus sur COCO8-Pose
Dog-Pose#
- Description : le jeu de données Dog-Pose d’Ultralytics contient 6 773 images d’entraînement et 1 703 images de validation pour l’estimation des points clés canins.
- Format des annotations : suit le format YOLO d’Ultralytics, avec des annotations pour plusieurs points clés propres à l’anatomie du chien.
- Nombre de classes : 1 (chien).
- Points clés : 24 points clés, chacun avec une dimension de visibilité, adaptés aux poses du chien, notamment aux membres, aux articulations et à la position de la tête.
- Utilisation : idéal pour entraîner des modèles à estimer les poses de chiens dans divers scénarios, de la recherche aux applications du monde réel.
- Remarques supplémentaires : les images sources proviennent du Stanford Dogs Dataset.
- En savoir plus sur Dog-Pose
Points clés de la main#
- Description : le jeu de données Hand Keypoints d’Ultralytics comprend 26 768 images, dont 18 776 sont destinées à l’entraînement et 7 992 à la validation.
- Format des annotations : identique au format YOLO d’Ultralytics décrit ci-dessus, mais avec 21 points clés pour une main humaine et une dimension de visibilité.
- 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.
- Remarques supplémentaires : les annotations des points clés sont générées avec Google MediaPipe afin d’assurer une annotation cohérente.
- En savoir plus sur Hand Keypoints
Tiger-Pose#
- Description : le jeu de données Tiger-Pose d’Ultralytics comprend 263 images provenant d’une vidéo YouTube, dont 210 sont destinées à l’entraînement et 53 à la validation.
- Format des annotations : identique au format YOLO d’Ultralytics décrit ci-dessus, avec 12 points clés pour la pose animale et sans dimension de visibilité.
- Nombre de classes : 1 (tigre).
- Points clés : 12 points clés.
- Utilisation : idéal pour la pose animale ou toute autre pose qui n’est pas humaine.
- Remarques supplémentaires : publié sous licence AGPL-3.0.
- En savoir plus sur Tiger-Pose
Ajouter ton propre jeu de données#
Si tu as ton propre jeu de données et souhaites l’utiliser pour entraîner des modèles d’estimation de pose au format YOLO d’Ultralytics, assure-toi qu’il respecte le format indiqué ci-dessus sous « format YOLO d’Ultralytics ». Convertis tes annotations au format requis et indique les chemins, le nombre de classes et les noms de classes dans le fichier de configuration YAML.
Pour ignorer entièrement l’étape de conversion, Ultralytics Platform te permet de téléverser des images brutes, d’annoter les points clés dans le navigateur et d’entraîner directement le modèle sur le jeu de données obtenu.
Outil de conversion#
Ultralytics fournit un outil de conversion pratique pour convertir les annotations au format du jeu de données COCO au format YOLO :
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 le jeu de données COCO ou tout autre jeu de données au format COCO vers le format YOLO d’Ultralytics. Le paramètre use_keypoints indique s’il faut inclure les points clés (pour l’estimation de pose) dans les annotations converties.
FAQ#
Le format YOLO d’Ultralytics pour les jeux de données d’estimation de pose consiste à associer à chaque image un fichier texte correspondant. Chaque ligne du fichier texte stocke les informations relatives à une instance d’objet :
- Indice de 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 points clés incluent des coordonnées x et y normalisées. Avec une dimension de visibilité, chaque point clé possède également un indicateur de visibilité. Pour plus de détails, consulte le format YOLO d’Ultralytics.
Pour ajouter ton jeu de données :
-
Convertis tes annotations au format YOLO d’Ultralytics.
-
Crée un fichier de configuration YAML indiquant les chemins du jeu de données, le nombre de classes et les noms de classes.
-
Utilise le fichier de configuration pour entraîner ton modèle :
from ultralytics import YOLO model = YOLO("yolo26n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Pour connaître toutes les étapes, consulte la section Ajouter ton propre jeu de données.
-
Le fichier YAML du jeu de données dans YOLO d’Ultralytics définit la configuration du jeu de données et du modèle pour l’entraînement. Il indique les chemins des images d’entraînement, de validation et de test, la forme des points clés, les noms de classes et d’autres options de configuration. Ce format structuré contribue à simplifier la gestion du jeu de données et l’entraînement du modèle. 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 # 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.zipPour en savoir plus sur la création de fichiers de configuration YAML, consulte Format YAML des jeux de données.
Ultralytics fournit un outil de conversion pour convertir les annotations d’un jeu de données COCO au format YOLO, y compris les informations sur les points clés :
from ultralytics.data.converter import convert_coco convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)Cet outil facilite l’intégration des jeux de données COCO dans les projets YOLO. Pour plus de détails, consulte la section Outil de conversion et le guide de prétraitement des données.
coco-pose.yamlest inclus dans le package et télécharge les images et les annotations lors de la première utilisation ; aucune préparation manuelle n’est donc nécessaire :Pour plus de détails sur le jeu de données, consulte COCO-Pose, et la page Entraînement pour la liste complète des arguments.