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 étiquettes du jeu de données utilisé pour entraîner les modèles YOLO de pose 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 : coordonnées x et y du centre de l’objet, normalisées entre 0 et 1.
- Largeur et hauteur de l’objet : largeur et 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 (visibilité de chaque point incluse)
<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 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 les occultations.
Format YAML du jeu de données#
Le framework Ultralytics utilise le format de fichier YAML pour définir le jeu de données et la configuration du modèle lors de l’entraînement de modèles d’estimation de pose. Voici un exemple du 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 relativement au fichier *.txt). Un fichier *.txt est utile pour entraîner le modèle sur un sous-ensemble d’un répertoire, ignorer les images sans étiquette ou combiner des images de plusieurs sources dans une même partition.
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
kpt_shape: [17, 3] # required for pose datasets
names:
0: personnames est un dictionnaire de noms de classes. L’ordre des noms doit correspondre à celui 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 pour les squelettes symétriques, comme le corps ou le visage humains. Pour cinq repères faciaux indexés ainsi : [œil gauche, œil droit, nez, bouche gauche, bouche droite] = [0, 1, 2, 3, 4], flip_idx est [1, 0, 2, 4, 3] : les paires gauche-droite 0-1 et 3-4 sont inversées, et 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 correspondre au nombre de points clés N provenant de kpt_shape, et chaque valeur doit être positive. Si cette option n’est pas spécifiée, les sigmas COCO à 17 points clés sont utilisés pour kpt_shape: [17, 3], et un 1/N uniforme dans les autres cas.
Utilisation#
from ultralytics import YOLO
# Charger un modèle
model = YOLO("yolo26n-pose.pt") # charger un modèle préentraîné (recommandé pour l’entraînement)
# Entraîner le modèle
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 compatibles avec le format Ultralytics YOLO et utilisables pour entraîner des modèles d’estimation de pose. La plupart de ces jeux de données sont également hébergés sur Ultralytics Platform, où tu peux parcourir les images et les annotations, consulter les statistiques des jeux de données et les cloner pour l’entraînement dans le cloud.
COCO-Pose#
- Description : COCO-Pose est un jeu de données d’estimation de pose humaine à grande échelle qui couvre les images COCO 2017 contenant des personnes annotées avec des points clés.
- Format des annotations : Identique au format Ultralytics YOLO 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 doté d’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 représentant 156 165 personnes.
- En savoir plus sur COCO-Pose
COCO8-Pose#
- Description : COCO8-Pose d’Ultralytics est un jeu de données d’estimation de pose de petite taille, mais polyvalent. Il se compose 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 Ultralytics YOLO 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 doté d’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 contrôles de cohérence 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 Ultralytics YOLO, avec des annotations pour plusieurs points clés propres à l’anatomie canine.
- Nombre de classes : 1 (chien).
- Points clés : 24 points clés, chacun doté d’une dimension de visibilité, adaptés aux poses des chiens, notamment aux membres, aux articulations et à la position de la tête.
- Utilisation : Idéal pour entraîner des modèles à estimer les poses des chiens dans différents contextes, 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 Ultralytics YOLO 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 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 la cohérence des annotations.
- En savoir plus sur Hand Keypoints
Tiger-Pose#
- Description : Le jeu de données Tiger-Pose d’Ultralytics comprend 263 images extraites d’une vidéo YouTube, dont 210 sont destinées à l’entraînement et 53 à la validation.
- Format des annotations : Identique au format Ultralytics YOLO 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 la licence AGPL-3.0.
- En savoir plus sur Tiger-Pose
Ajouter ton propre jeu de données#
Si tu disposes de ton propre jeu de données et souhaites l’utiliser pour entraîner des modèles d’estimation de pose au format Ultralytics YOLO, vérifie qu’il respecte le format spécifié ci-dessus sous « Format Ultralytics YOLO ». Convertis tes annotations au format requis et indique les chemins, le nombre de classes et les noms des classes dans le fichier de configuration YAML.
Pour éviter complètement 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 un modèle sur le jeu de données obtenu.
Outil de conversion#
Ultralytics fournit un outil pratique pour convertir les annotations du format du célèbre 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 permet de convertir le jeu de données COCO ou tout autre jeu de données au format COCO vers le format Ultralytics YOLO. 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 Ultralytics YOLO pour les jeux de données d’estimation de pose consiste à associer à chaque image un fichier texte correspondant. Chaque ligne du fichier texte stocke des informations sur 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 comprennent 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 Ultralytics YOLO.
coco-pose.yamlest fourni avec le package et télécharge les images et les annotations lors de sa première utilisation ; aucune préparation manuelle n’est donc nécessaire :from ultralytics import YOLO model = YOLO("yolo26n-pose.pt") # charger un modèle préentraîné results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)Pour en savoir plus sur le jeu de données, consulte COCO-Pose, et pour obtenir la liste complète des arguments, consulte la page Entraînement.
Pour ajouter ton jeu de données :
-
Convertis tes annotations au format Ultralytics YOLO.
-
Crée un fichier de configuration YAML qui spécifie les chemins du jeu de données, le nombre de classes et les noms des 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 suivre toutes les étapes, consulte la section Ajouter ton propre jeu de données.
-
Dans Ultralytics YOLO, le fichier YAML du jeu de données définit le jeu de données et la configuration du modèle pour l’entraînement. Il spécifie les chemins vers les images d’entraînement, de validation et de test, la forme des points clés, les noms des classes et d’autres options de configuration. Ce format structuré simplifie la gestion des jeux 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 # 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 le format YAML des jeux de données.
Ultralytics fournit un outil de conversion qui convertit 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.