Link to this sectionPrésentation des jeux de données d'estimation de pose#
Link to this sectionFormats de jeux de données pris en charge#
Link to this sectionFormat Ultralytics YOLO#
Le format d'étiquetage du jeu 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 avec l'extension ".txt".
- Une ligne par objet : chaque ligne dans le 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 de l'objet :
- Index 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 pour être comprises 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 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é par 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'index de la classe de l'objet, <x> <y> <width> <height> sont les coordonnées normalisées de la bounding box, et <px1> <py1> <px2> <py2> ... <pxn> <pyn> sont les coordonnées normalisées des points clés. Le canal de visibilité est optionnel mais utile pour les jeux de données qui annotent l'occlusion.
Link to this sectionFormat 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 pour l'entraînement des 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 pointent vers les images d'entraînement, de validation et de test. Chacun accepte un répertoire, une liste de répertoires ou un fichier *.txt listant 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 sur un sous-ensemble d'un répertoire, ignorer les images non étiquetées ou combiner des images provenant de sources multiples en une seule 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 index de classe d'objet dans les fichiers du jeu de données YOLO.
(Facultatif) flip_idx fait correspondre chaque point clé à son image miroir, afin que l'augmentation par retournement horizontal maintienne la cohérence gauche-droite sur des squelettes symétriques comme un corps humain ou un visage. Pour cinq points de repère faciaux indexés par [œ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 s'inversent, et le nez conserve son propre index.
(Optionnel) kpt_oks_sigmas définit des sigmas personnalisés par point clé pour OKS utilisés lors de la validation, par ex. [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. Lorsqu'il est omis, les sigmas COCO à 17 points clés sont utilisés pour kpt_shape: [17, 3] et une valeur uniforme 1/N dans les autres cas.
Link to this sectionUtilisation#
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 sectionJeux de données pris en charge#
Cette section présente les datasets compatibles avec le format Ultralytics YOLO et pouvant être utilisés pour entraîner des modèles d'estimation de pose :
Link to this sectionCOCO-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 par des points clés.
- 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 (personne).
- Points clés : 17 types de points clés incluant 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 : Convient pour l'entraînement de modèles d'estimation de pose humaine.
- Notes supplémentaires : Le jeu de données s'appuie sur le défi COCO Keypoints 2017 : 58 945 images annotées avec 156 165 personnes.
- En savoir plus sur COCO-Pose
Link to this sectionCOCO8-Pose#
- Description : Le jeu de données Ultralytics COCO8-Pose est un petit jeu de données d'estimation de pose polyvalent composé des 8 premières images du jeu 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 (personne).
- Points clés : 17 types de points clés incluant 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é pour tester et déboguer des modèles d'estimation de pose, ou pour expérimenter de nouvelles approches de détection de points clés.
- Notes supplémentaires : COCO8-Pose est idéal pour les tests de bon fonctionnement et les tests CI.
- En savoir plus sur COCO8-Pose
Link to this sectionDog-Pose#
- Description : Le jeu de données Ultralytics Dog-Pose contient 6 773 images d'entraînement et 1 703 images de validation pour l'estimation des points clés canins.
- Format d'étiquette : Suit le format Ultralytics YOLO, avec des annotations pour de multiples points clés spécifiques à 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 canines telles que les membres, les articulations et les positions 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 concrètes.
- Remarques supplémentaires : Les images sources proviennent du Stanford Dogs Dataset.
- En savoir plus sur Dog-Pose
Link to this sectionHand Keypoints#
- Description : Le jeu de données Ultralytics Hand Keypoints comprend 26 768 images, avec 18 776 allouées pour l'entraînement et 7 992 pour la validation.
- Format d'étiquette : 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 la pose de la main humaine et la reconnaissance de gestes.
- Remarques supplémentaires : Les annotations de points clés sont générées à l'aide de Google MediaPipe pour un étiquetage cohérent.
- En savoir plus sur Hand Keypoints
Link to this sectionTiger-Pose#
- Description : Le jeu de données Ultralytics Tiger-Pose comprend 263 images provenant d'une vidéo YouTube, avec 210 images allouées pour l'entraînement et 53 pour la validation.
- Format des étiquettes : Identique au format Ultralytics YOLO tel que décrit ci-dessus, avec 12 points clés pour la pose animale et aucune 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 basée sur l'humain.
- Remarques supplémentaires : Publié sous la AGPL-3.0 License.
- En savoir plus sur Tiger-Pose
Link to this sectionAjouter ton propre jeu de données#
Si tu disposes de ton propre jeu de données et que tu souhaites l'utiliser pour entraîner des modèles d'estimation de pose avec le format Ultralytics YOLO, assure-toi qu'il respecte le format spécifié ci-dessus sous "Ultralytics YOLO format". Convertis tes annotations au format requis et spécifie les chemins, le nombre de classes et les noms de classes dans le fichier de configuration YAML.
Pour ignorer totalement l'étape de conversion, la plateforme Ultralytics te permet de télécharger des images brutes, d'annoter des points clés dans le navigateur et de t'entraîner directement sur le jeu de données résultant.
Link to this sectionOutil de conversion#
Ultralytics fournit un outil de conversion pratique pour convertir les étiquettes du célèbre format de dataset 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 jeu de données au format COCO vers le format Ultralytics YOLO. Le paramètre use_keypoints spécifie s'il faut inclure les points clés (pour l'estimation de pose) dans les étiquettes converties.
Link to this sectionFAQ#
Link to this sectionQu'est-ce que le format Ultralytics YOLO pour l'estimation de pose ?#
Le format Ultralytics YOLO pour les jeux 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 :
- Index 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 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, voir Ultralytics YOLO format.
Link to this sectionComment utiliser le jeu de données COCO-Pose avec Ultralytics YOLO ?#
coco-pose.yaml est fourni avec le package et télécharge les images et les étiquettes lors de la première utilisation, donc aucune préparation manuelle n'est nécessaire :
from ultralytics import YOLO
model = YOLO("yolo26n-pose.pt") # load pretrained model
results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)Pour les détails du jeu de données, consulte COCO-Pose, et la page Train pour la liste complète des arguments.
Link to this sectionComment puis-je ajouter mon propre jeu de données pour l'estimation de pose dans Ultralytics YOLO ?#
Pour ajouter ton jeu de données :
-
Convertis tes annotations au format Ultralytics YOLO.
-
Crée un fichier de configuration YAML spécifiant 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 les étapes complètes, consulte la section Adding your own dataset.
Link to this sectionQuel est l'objectif du fichier YAML du jeu de données dans Ultralytics YOLO ?#
Le fichier YAML du jeu de données dans Ultralytics YOLO définit la configuration du jeu de données et du modèle pour l'entraînement. Il spécifie les chemins vers les images d'entraînement, de validation et de test, les formes des points clés, les noms des classes et d'autres options de configuration. Ce format structuré aide à rationaliser 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.zipEn savoir plus sur la création de fichiers de configuration YAML dans Dataset YAML format.
Link to this sectionComment puis-je convertir les étiquettes du jeu de données COCO au format Ultralytics YOLO pour l'estimation de pose ?#
Ultralytics fournit un outil de conversion pour convertir les étiquettes du jeu de données COCO au format YOLO, incluant 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 aide à intégrer de manière transparente les datasets COCO dans tes projets YOLO. Pour plus de détails, reporte-toi à la section Outil de conversion et au guide de prétraitement des données.