Présentation des jeux de données pour l'estimation de pose

Formats de jeux de données pris en charge

Format Ultralytics YOLO

Le format d'étiquetage des jeux de données utilisé pour l'entraînement des modèles de pose YOLO est le suivant :

  1. 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".
  2. Une ligne par objet : chaque ligne du fichier texte correspond à une instance d'objet dans l'image.
  3. 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 du format d'étiquette pour une tâche d'estimation de pose :

Format avec des points clés 2D

<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>

Format avec des points clés 3D (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'indice 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 annotant 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 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/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

# 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.zip

Les champs train et val spécifient respectivement les chemins vers les répertoires contenant les images d'entraînement et de validation.

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 jeu de données YOLO.

(Optional) if the points are symmetric then need flip_idx, like left-right side of human or face. For example if we assume five keypoints of facial landmark: [left eye, right eye, nose, left mouth, right mouth], and the original index is [0, 1, 2, 3, 4], then flip_idx is [1, 0, 2, 4, 3] (just exchange the left-right index, i.e. 0-1 and 3-4, and do not modify others like nose in this example).

Utilisation

Exemple
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 compatibles avec le format Ultralytics YOLO et utilisables pour l'entraînement de modèles d'estimation de pose :

COCO-Pose

  • Description : COCO-Pose est un jeu de données à grande échelle pour la détection d'objets, la segmentation et l'estimation de pose. Il s'agit d'un sous-ensemble du célèbre jeu de données COCO et il se concentre sur l'estimation de la pose humaine. COCO-Pose inclut de multiples 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 incluant le nez, les yeux, les oreilles, les épaules, les coudes, les poignets, les hanches, les genoux et les chevilles.
  • Utilisation : Adapté à l'entraînement de modèles d'estimation de pose humaine.
  • Notes supplémentaires : Le jeu 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 jeu de données de détection de pose polyvalent composé des 8 premières images du jeu d'entraînement COCO 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 incluant le nez, les yeux, les oreilles, les épaules, les coudes, les poignets, les hanches, les genoux et les chevilles.
  • Utilisation : Adapté aux tests et au débogage de 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 vérifications de bon fonctionnement et les CI checks.
  • En savoir plus sur COCO8-Pose

Dog-Pose

  • Description : Le jeu de données Dog Pose contient 6 773 images d'entraînement et 1 703 images de test, fournissant une ressource diversifiée et étendue 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 canine.
  • Nombre de classes : 1 (Chien).
  • Points clés : Inclut 24 points clés adaptés aux poses canines, tels 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 réelles.
  • En savoir plus sur Dog-Pose

Hand Keypoints

  • Description : Le jeu de données de pose pour les 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 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.
  • En savoir plus sur Hand Keypoints

Tiger-Pose

  • Description : Le jeu de données Ultralytics Tiger Pose comprend 263 images provenant d'une vidéo YouTube, avec 210 images allouées à l'entraînement et 53 à la validation.
  • Format d'étiquette : 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 basée sur l'humain.
  • En savoir plus sur Tiger-Pose

Ajouter ton propre jeu de données

Si tu as 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 suit le format spécifié ci-dessus sous "Ultralytics YOLO format". Convertis tes annotations au format requis et précise les chemins, le nombre de classes et les noms des classes dans le fichier de configuration YAML.

Outil de conversion

Ultralytics fournit un outil de conversion pratique pour convertir les étiquettes du célèbre format de jeu de données COCO vers le 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 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 précise s'il faut inclure les points clés (pour l'estimation de pose) dans les étiquettes converties.

FAQ

Qu'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 :

  • 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 points clés incluent les coordonnées en pixels. Pour la 3D, chaque point clé possède également un indicateur de visibilité. Pour plus de détails, consulte le format Ultralytics YOLO.

Comment utiliser le jeu de données COCO-Pose avec Ultralytics YOLO ?

Pour utiliser le jeu de données COCO-Pose avec Ultralytics YOLO :

  1. Télécharge le jeu de données et prépare tes fichiers d'étiquettes au format YOLO.

  2. Crée un fichier de configuration YAML précisant les chemins vers les images d'entraînement et de validation, la forme des points clés et les noms des classes.

  3. Utilise le fichier de configuration pour l'entraînement :

    from ultralytics import YOLO
    
    model = YOLO("yolo26n-pose.pt")  # load pretrained model
    results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)

    Pour plus d'informations, visite les sections COCO-Pose et entraînement.

Comment ajouter mon propre jeu de données pour l'estimation de pose dans Ultralytics YOLO ?

Pour ajouter ton jeu de données :

  1. Convertis tes annotations au format Ultralytics YOLO.

  2. Crée un fichier de configuration YAML précisant les chemins du jeu de données, le nombre de classes et les noms des classes.

  3. 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.

Quel est le but 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 précise 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 à simplifier 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.zip

En savoir plus sur la création de fichiers de configuration YAML dans Dataset YAML format.

Comment 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 jeux de données COCO dans les projets YOLO. Pour plus de détails, réfère-toi à la section Conversion Tool et au guide de prétraitement des données.

Commentaires