YOLO Vision 2026:

Descripción general de los datasets de estimación de pose#

Formatos de conjuntos de datos compatibles#

Formato Ultralytics YOLO#

El formato de etiquetas de dataset utilizado para entrenar modelos de pose YOLO es el siguiente:

  1. Un archivo de texto por imagen: Cada imagen del dataset 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 pose:

Formato con puntos clave 2D

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

Formato con visibilidad de puntos clave (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 keypoints. El canal de visibilidad es opcional pero útil para conjuntos de datos que anotan oclusión.

Formato YAML del dataset#

El framework Ultralytics utiliza un formato de archivo YAML para definir la configuración del dataset y del modelo para entrenar modelos de estimación de pose. Aquí tienes un ejemplo del formato YAML utilizado para definir un dataset 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

Los campos train, val y test apuntan a las imágenes de entrenamiento, validación y prueba. Cada uno acepta un directorio, una lista de directorios o un archivo *.txt que enumera una ruta de imagen por línea (las rutas que comienzan con ./ se resuelven en relación con el archivo *.txt). Un archivo *.txt es útil para entrenar en un subconjunto de un directorio, omitir imágenes sin anotar o combinar imágenes de múltiples fuentes en una sola división.

Rutas de imagen como archivo `*.txt`
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: person

names es un diccionario de nombres de clases. El orden de los nombres debe coincidir con el orden de los índices de las clases de objetos en los archivos de dataset de YOLO.

(Opcional) flip_idx asigna cada keypoint a su imagen especular, de modo que la aumentación de volteo horizontal mantiene la coherencia entre la izquierda y la derecha en esqueletos simétricos como el cuerpo o la cara humana. Para cinco puntos de referencia faciales indexados como [ojo izquierdo, ojo derecho, nariz, boca izquierda, boca derecha] = [0, 1, 2, 3, 4], flip_idx es [1, 0, 2, 4, 3]: los pares izquierdo-derecho 0-1 y 3-4 se intercambian, y la nariz conserva su propio índice.

(Opcional) kpt_oks_sigmas establece sigmas de OKS personalizados por keypoint utilizados durante el entrenamiento y la validación, por ejemplo, [0.26, 0.25, 0.25, ...]. La longitud de la lista debe ser igual al número de keypoints N de kpt_shape, y cada valor debe ser positivo. Si se omite, se utilizan los sigmas de 17 keypoints de COCO para kpt_shape: [17, 3] y un 1/N uniforme en caso contrario.

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)

Conjuntos de datos compatibles#

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

COCO-Pose#

  • Descripción: COCO-Pose es un conjunto de datos de estimación de poses humanas a gran escala que cubre las imágenes de COCO 2017 que contienen personas con puntos clave anotados.
  • Formato de etiqueta: Igual que el formato Ultralytics YOLO descrito anteriormente, con puntos clave para poses humanas.
  • Número de clases: 1 (persona).
  • Puntos clave: 17 tipos de puntos clave que incluyen nariz, ojos, orejas, hombros, codos, muñecas, caderas, rodillas y tobillos, cada uno con una dimensión de visibilidad.
  • Uso: Adecuado para entrenar modelos de estimación de pose humana.
  • Notas adicionales: El conjunto de datos se basa en el desafío COCO Keypoints 2017: 58 945 imágenes anotadas con 156 165 personas.
  • Más información sobre COCO-Pose

COCO8-Pose#

  • Descripción: Ultralytics COCO8-Pose es un conjunto de datos de estimació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: Igual que el formato Ultralytics YOLO descrito anteriormente, con puntos clave para poses humanas.
  • Número de clases: 1 (persona).
  • Puntos clave: 17 tipos de puntos clave que incluyen nariz, ojos, orejas, hombros, codos, muñecas, caderas, rodillas y tobillos, cada uno con una dimensión de visibilidad.
  • Uso: Adecuado para probar y depurar modelos de estimación de poses, o para experimentar con nuevos enfoques de detección de puntos clave.
  • Notas adicionales: COCO8-Pose es ideal para comprobaciones rápidas de funcionamiento y comprobaciones de CI.
  • Más información sobre COCO8-Pose

Dog-Pose#

  • Descripción: El conjunto de datos Ultralytics Dog-Pose contiene 6773 imágenes de entrenamiento y 1703 de validación para la estimación de keypoints en perros.
  • 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: 24 puntos clave, cada uno con una dimensión de visibilidad, adaptados a poses de perros como extremidades, articulaciones y posiciones de la cabeza.
  • Uso: Ideal para entrenar modelos para estimar poses de perros en diversos escenarios, desde la investigación hasta aplicaciones del mundo real.
  • Notas adicionales: Las imágenes de origen se extraen del Stanford Dogs Dataset.
  • Más información sobre Dog-Pose

Puntos clave de mano (Hand Keypoints)#

  • Descripción: El conjunto de datos Ultralytics Hand Keypoints comprende 26 768 imágenes, con 18 776 asignadas para entrenamiento y 7992 para validación.
  • Formato de etiqueta: Igual 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 manos humanas y reconocimiento de gestos.
  • Notas adicionales: Las anotaciones de keypoints se generan utilizando Google MediaPipe para un etiquetado coherente.
  • Más información sobre Hand Keypoints

Tiger-Pose#

  • Descripción: El conjunto de datos Ultralytics Tiger-Pose comprende 263 imágenes extraídas de un vídeo de YouTube, con 210 imágenes asignadas para entrenamiento y 53 para validación.
  • Formato de etiqueta: Igual 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: Excelente para pose animal o cualquier otra pose que no esté basada en humanos.
  • Notas adicionales: Distribuido bajo la Licencia AGPL-3.0.
  • Más información sobre Tiger-Pose

Añadir tu propio conjunto de datos#

Si tienes tu propio dataset y te gustaría usarlo para entrenar modelos de estimación de pose con el formato Ultralytics YOLO, asegúrate de que siga el formato especificado anteriormente en "Formato Ultralytics YOLO". 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.

Para omitir por completo el paso de conversión, Ultralytics Platform te permite cargar imágenes sin procesar, anotar keypoints en el navegador y entrenar directamente en el conjunto de datos resultante.

Herramienta de conversión#

Ultralytics proporciona una práctica herramienta de conversión para transformar etiquetas del popular formato del dataset 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 se puede utilizar para convertir el dataset COCO o cualquier dataset en el formato COCO al formato Ultralytics YOLO. El parámetro use_keypoints especifica si se deben incluir keypoints (para la estimación de poses) en las etiquetas convertidas.

FAQ#

  • El formato Ultralytics YOLO para datasets de estimación de pose 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 keypoints incluyen coordenadas x e y normalizadas. Con una dimensión de visibilidad, cada keypoint también tiene un indicador de visibilidad. Para obtener más detalles, consulta el formato Ultralytics YOLO.

  • coco-pose.yaml se incluye con el paquete y descarga las imágenes y etiquetas en el primer uso, por lo que no se necesita preparación manual:

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

    Para conocer los detalles del dataset, consulta COCO-Pose, y la página Train para ver la lista completa de argumentos.

  • Para añadir tu dataset:

    1. Convierte tus anotaciones al formato Ultralytics YOLO.

    2. Crea un archivo de configuración YAML especificando las rutas del dataset, 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 conocer los pasos completos, consulta la sección Adding your own dataset.

  • El archivo YAML del dataset en Ultralytics YOLO define la configuración del dataset y del modelo para el entrenamiento. Especifica rutas a las imágenes de entrenamiento, validación y prueba, formas de puntos clave, nombres de clases y otras opciones de configuración. Este formato estructurado ayuda a agilizar la gestión del dataset y el entrenamiento del modelo. Aquí hay 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.

  • Ultralytics proporciona una herramienta de conversión para convertir etiquetas de dataset 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 datasets de COCO en proyectos de YOLO. Para más detalles, consulta la sección Conversion Tool y la guía de preprocesamiento de datos.

Comentarios