Ultralytics YOLO27:

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

Formatos de conjuntos de datos compatibles#

Formato Ultralytics YOLO#

El formato de etiquetas del dataset utilizado para entrenar modelos de poses 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 del archivo de texto corresponde a una instancia de objeto de la imagen.
  3. Información del objeto por fila: cada fila contiene la siguiente información sobre la instancia de objeto:
    • Índice de clase del objeto: un entero que representa la clase del objeto (por ejemplo, 0 para una persona, 1 para un coche, etc.).
    • Coordenadas del centro del objeto: las coordenadas x e y del centro del objeto, normalizadas entre 0 y 1.
    • Ancho y alto del objeto: el ancho y el alto del objeto, normalizados entre 0 y 1.
    • Coordenadas de los puntos clave del objeto: los puntos clave del objeto, normalizados entre 0 y 1.

Este es un ejemplo del formato de etiquetas 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 visibilidad de los puntos clave (incluye la visibilidad de cada 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 del objeto, <x> <y> <width> <height> son las coordenadas normalizadas de la caja delimitadora, y <px1> <py1> <px2> <py2> ... <pxn> <pyn> son las coordenadas normalizadas de los puntos clave. El canal de visibilidad es opcional, pero resulta útil para datasets que anotan oclusiones.

Formato YAML del conjunto de datos#

El framework de Ultralytics utiliza un formato de archivo YAML para definir la configuración del dataset y del modelo al entrenar modelos de estimación de poses. Este es un ejemplo del formato YAML utilizado para definir un dataset 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, 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 empiezan por ./ se resuelven en relación con el archivo *.txt). Un archivo *.txt resulta útil para entrenar con un subconjunto de un directorio, omitir imágenes sin etiquetas o combinar imágenes de varias fuentes en una sola división.

Rutas de imágenes en un 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 clase. El orden de los nombres debe coincidir con el orden de los índices de clase de los objetos en los archivos del conjunto de datos YOLO.

(Opcional) flip_idx asigna cada punto clave a su imagen especular, de modo que el aumento mediante volteo horizontal mantenga la coherencia entre izquierda y derecha en esqueletos simétricos, como un cuerpo o una cara humanos. 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 izquierda-derecha 0-1 y 3-4 se intercambian, y la nariz conserva su propio índice.

(Opcional) kpt_oks_sigmas establece sigmas OKS personalizadas por punto clave que se utilizan 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 puntos clave N de kpt_shape, y todos los valores deben ser positivos. Si se omite, se utilizan los sigmas de los 17 puntos clave de COCO para kpt_shape: [17, 3] y un valor uniforme de 1/N en los demás casos.

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 detalla los conjuntos de datos que son compatibles con el formato de Ultralytics YOLO y que se pueden utilizar para entrenar modelos de estimación de poses. La mayoría de estos conjuntos de datos también están alojados en la Plataforma de Ultralytics, donde puedes explorar las imágenes y las anotaciones, ver las estadísticas de los conjuntos de datos y clonar los conjuntos de datos para el entrenamiento en la nube.

COCO-Pose#

  • Descripción: COCO-Pose es un dataset de estimación de poses humanas a gran escala que incluye las imágenes de COCO 2017 que contienen personas anotadas con puntos clave.
  • Formato de etiquetas: igual que el formato YOLO de Ultralytics descrito anteriormente, con puntos clave para poses humanas.
  • Número de clases: 1 (persona).
  • Puntos clave: 17 tipos de puntos clave, incluidos 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 poses humanas.
  • Notas adicionales: el dataset 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 dataset de estimación de poses pequeño pero versátil, compuesto por las 8 primeras imágenes del conjunto de entrenamiento COCO 2017: 4 para entrenamiento y 4 para validación.
  • Formato de etiquetas: igual que el formato YOLO de Ultralytics descrito anteriormente, con puntos clave para poses humanas.
  • Número de clases: 1 (persona).
  • Puntos clave: 17 tipos de puntos clave, incluidos 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 experimentar con nuevos enfoques de detección de puntos clave.
  • Notas adicionales: COCO8-Pose es ideal para comprobaciones de coherencia y comprobaciones de CI.
  • Más información sobre COCO8-Pose

Dog-Pose#

  • Descripción: el dataset Dog-Pose de Ultralytics contiene 6.773 imágenes de entrenamiento y 1.703 de validación para la estimación de puntos clave caninos.
  • Formato de etiquetas: sigue el formato YOLO de Ultralytics, con anotaciones para varios 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 caninas como extremidades, articulaciones y posiciones de la cabeza.
  • Uso: ideal para entrenar modelos que estimen poses de perros en diversos escenarios, desde la investigación hasta las aplicaciones del mundo real.
  • Notas adicionales: las imágenes de origen proceden del Stanford Dogs Dataset.
  • Más información sobre Dog-Pose

Puntos clave de la mano#

  • Descripción: el dataset de puntos clave de la mano de Ultralytics consta de 26.768 imágenes, de las cuales 18.776 se destinan al entrenamiento y 7.992 a la validación.
  • Formato de etiquetas: igual que el formato YOLO de Ultralytics 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: ideal para la estimación de poses de manos humanas y el reconocimiento de gestos.
  • Notas adicionales: las anotaciones de los puntos clave se generan mediante Google MediaPipe para garantizar un etiquetado coherente.
  • Más información sobre los puntos clave de la mano

Tiger-Pose#

  • Descripción: el dataset Tiger-Pose de Ultralytics consta de 263 imágenes obtenidas de un vídeo de YouTube, de las cuales 210 se destinan al entrenamiento y 53 a la validación.
  • Formato de etiquetas: igual que el formato YOLO de Ultralytics descrito anteriormente, con 12 puntos clave para poses animales y sin dimensión de visibilidad.
  • Número de clases: 1 (tigre).
  • Puntos clave: 12 puntos clave.
  • Uso: ideal para poses animales o cualquier otra pose que no sea humana.
  • Notas adicionales: publicado 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 quieres utilizarlo para entrenar modelos de estimación de poses con el formato YOLO de Ultralytics, asegúrate de que siga el formato especificado anteriormente en «Formato YOLO de Ultralytics». 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 puntos clave en el navegador y entrenar directamente con el dataset resultante.

Herramienta de conversión#

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

Preguntas frecuentes#

  • El formato YOLO de Ultralytics para datasets de estimación de poses consiste en 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 la 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)

    En las poses 2D, los puntos clave incluyen coordenadas x e y normalizadas. Con una dimensión de visibilidad, cada punto clave también tiene un indicador de visibilidad. Para obtener más información, consulta el formato YOLO de Ultralytics.

  • coco-pose.yaml se incluye con el paquete y descarga las imágenes y las etiquetas en el primer uso, por lo que no es necesaria ninguna 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 consultar los detalles del dataset, visita COCO-Pose y la página de entrenamiento para consultar la lista completa de argumentos.

  • Para añadir tu dataset:

    1. Convierte tus anotaciones al formato YOLO de Ultralytics.

    2. Crea un archivo de configuración YAML que especifique las rutas del dataset, el número de clases y los nombres de las clases.

    3. Utiliza 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 consultar todos los pasos, revisa la sección Cómo añadir tu propio dataset.

  • El archivo YAML del dataset en YOLO de Ultralytics define la configuración del dataset 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 agilizar la gestión del dataset y el entrenamiento del modelo. Este es 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

    Obtén más información sobre cómo crear archivos de configuración YAML en Formato YAML de datasets.

  • Ultralytics ofrece una herramienta de conversión para convertir las etiquetas del dataset COCO al formato YOLO, incluida la información de los 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 fácilmente los datasets COCO en proyectos YOLO. Para obtener más información, consulta la sección Herramienta de conversión y la guía de preprocesamiento de datos.

Comentarios