Ultralytics YOLO27:
Get Started

Descripción general de los conjuntos de datos de estimación de pose#

Formatos de conjuntos de datos compatibles#

Formato Ultralytics YOLO#

El formato de las etiquetas del conjunto de datos que se usa para entrenar modelos YOLO de pose 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 en cada 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 una persona, 1 para un coche, etc.).
    • Coordenadas del centro del objeto: las coordenadas x e y del centro del objeto, normalizadas para estar entre 0 y 1.
    • Anchura y altura del objeto: la anchura y la altura del objeto, normalizadas para estar entre 0 y 1.
    • Coordenadas de los puntos clave del objeto: los puntos clave del objeto, normalizados entre 0 y 1.

Aquí tienes un ejemplo del formato de las 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 conjuntos de datos que anotan oclusiones.

Formato YAML del conjunto de datos#

El framework Ultralytics utiliza archivos YAML para definir el conjunto de datos y la configuración del modelo al entrenar modelos de estimación de poses. Aquí tienes un ejemplo del formato YAML usado 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, val y test señalan las imágenes de entrenamiento, validación y prueba. Cada uno admite un directorio, una lista de directorios o un archivo *.txt que enumere una ruta de imagen por línea (las rutas que empiecen 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 etiquetar o combinar imágenes de varias fuentes en una misma partició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
kpt_shape: [17, 3] # required for pose datasets
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 objeto en los archivos del conjunto de datos YOLO.

(Opcional) flip_idx asigna a cada punto clave su imagen especular, para que el aumento con volteo horizontal mantenga la coherencia entre izquierda y derecha en esqueletos simétricos, como el cuerpo o la cara humanos. Para cinco puntos 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]: se intercambian los pares izquierda-derecha 0-1 y 3-4, y la nariz conserva su propio índice.

(Opcional) kpt_oks_sigmas establece sigmas OKS personalizados para cada 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 coincidir con el número de puntos clave N de kpt_shape, y todos los valores deben ser positivos. Si se omite, se usan 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

# Cargar un modelo
model = YOLO("yolo26n-pose.pt")  # Carga un modelo preentrenado (recomendado para el entrenamiento)

# Entrenar el modelo
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

Conjuntos de datos compatibles#

En esta sección se describen los conjuntos de datos compatibles con el formato Ultralytics YOLO que pueden usarse para entrenar modelos de estimación de poses. La mayoría de estos conjuntos de datos también están alojados en Ultralytics Platform, donde puedes explorar imágenes y anotaciones, consultar estadísticas de los conjuntos de datos y clonarlos para entrenar en la nube.

COCO-Pose#

  • Descripción: COCO-Pose es un conjunto de datos de gran escala para la estimación de poses humanas que incluye las imágenes de COCO 2017 con personas anotadas con puntos clave.
  • Formato de las etiquetas: El mismo que el formato Ultralytics YOLO descrito anteriormente, con puntos clave para las poses humanas.
  • Número de clases: 1 (persona).
  • Puntos clave: 17 tipos de puntos clave, entre ellos la nariz, los ojos, las orejas, los hombros, los codos, las muñecas, las caderas, las rodillas y los tobillos; cada uno incluye una dimensión de visibilidad.
  • Uso: Adecuado para entrenar modelos de estimación de poses humanas.
  • 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: COCO8-Pose de Ultralytics es un conjunto de datos pequeño pero versátil para la estimación de poses, compuesto por las 8 primeras imágenes del conjunto COCO train 2017: 4 para entrenamiento y 4 para validación.
  • Formato de las etiquetas: El mismo que el formato Ultralytics YOLO descrito anteriormente, con puntos clave para las poses humanas.
  • Número de clases: 1 (persona).
  • Puntos clave: 17 tipos de puntos clave, entre ellos la nariz, los ojos, las orejas, los hombros, los codos, las muñecas, las caderas, las rodillas y los tobillos; cada uno incluye una dimensión de visibilidad.
  • Uso: Adecuado para probar y depurar modelos de estimación de poses o experimentar con nuevos métodos de detección de puntos clave.
  • Notas adicionales: COCO8-Pose es ideal para comprobaciones básicas y comprobaciones de CI.
  • Más información sobre COCO8-Pose

Dog-Pose#

  • Descripción: El conjunto de datos 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 las etiquetas: Sigue el formato Ultralytics YOLO, con anotaciones de 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 las extremidades, las articulaciones y las posiciones de la cabeza.
  • Uso: Ideal para entrenar modelos que estimen poses caninas en distintos escenarios, desde la investigación hasta las aplicaciones del mundo real.
  • Notas adicionales: Las imágenes de origen proceden del conjunto de datos Stanford Dogs.
  • Más información sobre Dog-Pose

Puntos clave de la mano#

  • Descripción: El conjunto de datos Hand Keypoints de Ultralytics consta de 26.768 imágenes: 18.776 para entrenamiento y 7.992 para validación.
  • Formato de las etiquetas: 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: 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 con Google MediaPipe para garantizar un etiquetado coherente.
  • Más información sobre Hand Keypoints

Tiger-Pose#

  • Descripción: El conjunto de datos Tiger-Pose de Ultralytics consta de 263 imágenes extraídas de un vídeo de YouTube: 210 imágenes para entrenamiento y 53 para validación.
  • Formato de las etiquetas: El mismo que el formato Ultralytics YOLO descrito anteriormente, con 12 puntos clave para la pose animal y sin dimensión de visibilidad.
  • Número de clases: 1 (tigre).
  • Puntos clave: 12 puntos clave.
  • Uso: Ideal para poses de animales o cualquier otra pose que no sea humana.
  • Notas adicionales: Publicado con la licencia AGPL-3.0.
  • Más información sobre Tiger-Pose

Añadir tu propio conjunto de datos#

Si tienes tu propio conjunto de datos y quieres usarlo para entrenar modelos de estimación de poses 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 subir imágenes sin procesar, anotar puntos clave en el navegador y entrenar directamente con el conjunto de datos resultante.

Herramienta de conversión#

Ultralytics proporciona una práctica herramienta para convertir etiquetas del popular formato del 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 permite 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#

  • El formato Ultralytics YOLO para conjuntos de datos de estimación de poses requiere 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)
    • Anchura y altura del objeto (normalizadas)
    • Coordenadas de los puntos clave del objeto (pxn y pyn normalizadas)

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

  • coco-pose.yaml se incluye en el paquete y descarga las imágenes y las etiquetas la primera vez que lo usas, así que no hace falta prepararlo manualmente:

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

    Para obtener información sobre el conjunto de datos, consulta COCO-Pose; para ver la lista completa de argumentos, consulta la página de entrenamiento.

  • Para añadir tu conjunto de datos:

    1. Convierte tus anotaciones al formato Ultralytics YOLO.

    2. Crea un archivo de configuración YAML que especifique 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 todos los pasos, consulta la sección Añadir tu propio conjunto de datos.

  • El archivo YAML del conjunto de datos en Ultralytics YOLO define el conjunto de datos y la configuración 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 los conjuntos de datos y el entrenamiento de los 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

    Encontrarás más información sobre cómo crear archivos de configuración YAML en Formato YAML del conjunto de datos.

  • Ultralytics proporciona una herramienta de conversión para convertir las etiquetas del conjunto de datos 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 facilita la integración de conjuntos de datos 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