Descripción general de los conjuntos de datos de estimación de poses

Formatos de dataset compatibles

Formato Ultralytics YOLO

El formato de etiquetas del conjunto de datos utilizado para entrenar modelos de pose de YOLO es el siguiente:

  1. Un archivo de texto por imagen: cada imagen del conjunto de datos tiene un archivo de texto correspondiente con el mismo nombre que el archivo de imagen y la extensión ".txt".
  2. Una fila por objeto: cada fila en el archivo de texto corresponde a una instancia de objeto en la imagen.
  3. Información del objeto por fila: cada fila contiene la siguiente información sobre la instancia del objeto:
    • Índice de clase del objeto: un número entero que representa la clase del objeto (por ejemplo, 0 para persona, 1 para coche, etc.).
    • Coordenadas del centro del objeto: Las coordenadas x e y del centro del objeto, normalizadas para estar entre 0 y 1.
    • Ancho y alto del objeto: El ancho y el alto del objeto, normalizados para estar entre 0 y 1.
    • Coordenadas de los puntos clave del objeto: Los puntos clave del objeto, normalizados para estar entre 0 y 1.

Aquí tienes un ejemplo del formato de etiqueta para una tarea de estimación de poses:

Formato con puntos clave 2D

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

Formato con puntos clave 3D (incluye visibilidad por punto)

<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> <pxn> <pyn> <pn-visibility>

En este formato, <class-index> es el índice de la clase para el objeto, <x> <y> <width> <height> son las coordenadas normalizadas de la bounding box, y <px1> <py1> <px2> <py2> ... <pxn> <pyn> son las coordenadas normalizadas de los puntos clave. El canal de visibilidad es opcional pero útil para conjuntos de datos que anotan oclusiones.

Formato YAML del conjunto de datos

El framework Ultralytics utiliza un formato de archivo YAML para definir la configuración del conjunto de datos y del modelo para el entrenamiento de modelos de estimación de poses. Aquí tienes un ejemplo del formato YAML utilizado para definir un conjunto de datos de poses:

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

Los campos train y val especifican las rutas a los directorios que contienen las imágenes de entrenamiento y validación, respectivamente.

names es un diccionario de nombres de clases. El orden de los nombres debe coincidir con el orden de los índices de clase de objeto en los archivos del conjunto de datos YOLO.

(Opcional) Si los puntos son simétricos, se necesita flip_idx, como el lado izquierdo-derecho de un humano o una cara. Por ejemplo, si asumimos cinco puntos clave de marcas faciales: [ojo izquierdo, ojo derecho, nariz, boca izquierda, boca derecha], y el índice original es [0, 1, 2, 3, 4], entonces flip_idx es [1, 0, 2, 4, 3] (solo intercambia el índice izquierdo-derecho, es decir, 0-1 y 3-4, y no modifiques otros como la nariz en este ejemplo).

Uso

Ejemplo
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)

Datasets compatibles

Esta sección describe los conjuntos de datos que son compatibles con el formato Ultralytics YOLO y pueden utilizarse para entrenar modelos de estimación de poses:

COCO-Pose

  • Descripción: COCO-Pose es un conjunto de datos de gran escala para detección de objetos, segmentación y estimación de poses. Es un subconjunto del popular conjunto de datos COCO y se centra en la estimación de poses humanas. COCO-Pose incluye múltiples puntos clave para cada instancia humana.
  • Formato de etiqueta: El mismo que el formato Ultralytics YOLO descrito anteriormente, con puntos clave para poses humanas.
  • Número de clases: 1 (Humano).
  • Puntos clave: 17 puntos clave incluyendo nariz, ojos, orejas, hombros, codos, muñecas, caderas, rodillas y tobillos.
  • Uso: Adecuado para entrenar modelos de estimación de poses humanas.
  • Notas adicionales: El conjunto de datos es rico y diverso, conteniendo más de 200k imágenes etiquetadas.
  • Lee más sobre COCO-Pose

COCO8-Pose

  • Descripción: Ultralytics COCO8-Pose es un conjunto de datos de detección de poses pequeño pero versátil compuesto por las primeras 8 imágenes del conjunto COCO train 2017, 4 para entrenamiento y 4 para validación.
  • Formato de etiqueta: El mismo que el formato Ultralytics YOLO descrito anteriormente, con puntos clave para poses humanas.
  • Número de clases: 1 (Humano).
  • Puntos clave: 17 puntos clave incluyendo nariz, ojos, orejas, hombros, codos, muñecas, caderas, rodillas y tobillos.
  • Uso: Adecuado para probar y depurar modelos de detección de objetos, o para experimentar con nuevos enfoques de detección.
  • Notas adicionales: COCO8-Pose es ideal para comprobaciones de integridad y CI checks.
  • Lee más sobre COCO8-Pose

Dog-Pose

  • Descripción: El conjunto de datos Dog Pose contiene 6.773 imágenes de entrenamiento y 1.703 de prueba, proporcionando un recurso diverso y extenso para la estimación de puntos clave caninos.
  • Formato de etiqueta: Sigue el formato Ultralytics YOLO, con anotaciones para múltiples puntos clave específicos de la anatomía canina.
  • Número de clases: 1 (Perro).
  • Puntos clave: Incluye 24 puntos clave adaptados a las poses de los perros, como extremidades, articulaciones y posiciones de la cabeza.
  • Uso: Ideal para entrenar modelos que estimen poses de perros en varios escenarios, desde la investigación hasta aplicaciones del mundo real.
  • Lee más sobre Dog-Pose

Hand Keypoints

  • Descripción: El conjunto de datos de poses de puntos clave de la mano comprende casi 26 mil imágenes, con 18.776 imágenes asignadas para entrenamiento y 7.992 para validación.
  • Formato de etiqueta: El mismo que el formato Ultralytics YOLO descrito anteriormente, pero con 21 puntos clave para una mano humana y una dimensión de visibilidad.
  • Número de clases: 1 (Mano).
  • Puntos clave: 21 puntos clave.
  • Uso: Genial para la estimación de poses de la mano humana y reconocimiento de gestos.
  • Lee más sobre Hand Keypoints

Tiger-Pose

  • Descripción: El conjunto de datos Tiger Pose de Ultralytics comprende 263 imágenes obtenidas de un vídeo de YouTube, con 210 imágenes asignadas para entrenamiento y 53 para validación.
  • Formato de etiqueta: El mismo que el formato Ultralytics YOLO descrito anteriormente, con 12 puntos clave para poses de animales y sin dimensión de visibilidad.
  • Número de clases: 1 (Tigre).
  • Puntos clave: 12 puntos clave.
  • Uso: Genial para poses de animales o cualquier otra pose que no esté basada en humanos.
  • Lee más sobre Tiger-Pose

Añadir tu propio dataset

Si tienes tu propio conjunto de datos y te gustaría usarlo para entrenar modelos de estimación de poses con el formato Ultralytics YOLO, asegúrate de que siga el formato especificado anteriormente en "Ultralytics YOLO format". Convierte tus anotaciones al formato requerido y especifica las rutas, el número de clases y los nombres de las clases en el archivo de configuración YAML.

Herramienta de conversión

Ultralytics proporciona una cómoda herramienta de conversión para convertir etiquetas del formato del popular conjunto de datos COCO al formato YOLO:

Ejemplo
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)

Esta herramienta de conversión puede utilizarse para convertir el conjunto de datos COCO o cualquier conjunto de datos en formato COCO al formato Ultralytics YOLO. El parámetro use_keypoints especifica si se deben incluir puntos clave (para la estimación de poses) en las etiquetas convertidas.

Preguntas frecuentes

¿Cuál es el formato Ultralytics YOLO para la estimación de poses?

El formato Ultralytics YOLO para conjuntos de datos de estimación de poses implica etiquetar cada imagen con un archivo de texto correspondiente. Cada fila del archivo de texto almacena información sobre una instancia de objeto:

  • Índice de clase del objeto
  • Coordenadas del centro del objeto (x e y normalizadas)
  • Ancho y alto del objeto (normalizados)
  • Coordenadas de los puntos clave del objeto (pxn y pyn normalizados)

Para poses 2D, los puntos clave incluyen coordenadas de píxeles. Para 3D, cada punto clave también tiene una bandera de visibilidad. Para más detalles, consulta Ultralytics YOLO format.

¿Cómo utilizo el conjunto de datos COCO-Pose con Ultralytics YOLO?

Para utilizar el conjunto de datos COCO-Pose con Ultralytics YOLO:

  1. Descarga el conjunto de datos y prepara tus archivos de etiquetas en el formato YOLO.

  2. Crea un archivo de configuración YAML especificando las rutas a las imágenes de entrenamiento y validación, la forma de los puntos clave y los nombres de las clases.

  3. Usa el archivo de configuración para el entrenamiento:

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

    Para más información, visita las secciones COCO-Pose y train.

¿Cómo puedo añadir mi propio conjunto de datos para la estimación de poses en Ultralytics YOLO?

Para añadir tu conjunto de datos:

  1. Convierte tus anotaciones al formato Ultralytics YOLO.

  2. Crea un archivo de configuración YAML especificando las rutas del conjunto de datos, el número de clases y los nombres de las clases.

  3. Usa el archivo de configuración para entrenar tu modelo:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n-pose.pt")
    results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

    Para ver los pasos completos, consulta la sección Adding your own dataset.

¿Cuál es el propósito del archivo YAML del conjunto de datos en Ultralytics YOLO?

El archivo YAML del conjunto de datos en Ultralytics YOLO define la configuración del conjunto de datos y del modelo para el entrenamiento. Especifica las rutas a las imágenes de entrenamiento, validación y prueba, las formas de los puntos clave, los nombres de las clases y otras opciones de configuración. Este formato estructurado ayuda a simplificar la gestión de conjuntos de datos y el entrenamiento de modelos. Aquí tienes un ejemplo de formato 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

Lee más sobre cómo crear archivos de configuración YAML en Dataset YAML format.

¿Cómo puedo convertir etiquetas del conjunto de datos COCO al formato Ultralytics YOLO para la estimación de poses?

Ultralytics proporciona una herramienta de conversión para convertir las etiquetas del conjunto de datos COCO al formato YOLO, incluyendo información de puntos clave:

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)

Esta herramienta ayuda a integrar sin problemas los conjuntos de datos COCO en proyectos YOLO. Para más detalles, consulta la sección Conversion Tool y la guía de preprocesamiento de datos.

Comentarios