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 etiqueta del conjunto de datos utilizado para entrenar los modelos de pose YOLO es el siguiente:
- Un archivo de texto por imagen: Cada imagen en el conjunto de datos tiene un archivo de texto correspondiente con el mismo nombre que el archivo de imagen y la extensión ".txt".
- Una fila por objeto: Cada fila en el archivo de texto corresponde a una instancia de objeto en la imagen.
- Información del objeto por fila: Cada fila contiene la siguiente información sobre la instancia del objeto:
- Índice de clase del objeto: Un 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 que estén entre 0 y 1.
- Coordenadas de los puntos clave del objeto: Los puntos clave del objeto, normalizados para que estén entre 0 y 1.
Aquí hay un ejemplo del formato de etiqueta para la tarea de estimación de pose:
Formato con Dim = 2
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>
Formato con Dim = 3
<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 coordenadas de cuadro delimitador, y <px1> <py1> <px2> <py2> ... <pxn> <pyn>
son las coordenadas de píxeles de los puntos clave. Las coordenadas están separadas por espacios.
Formato YAML del conjunto de datos
El framework de Ultralytics utiliza un formato de archivo YAML para definir la configuración del conjunto de datos y del modelo para entrenar modelos de estimación de pose. Aquí hay un ejemplo del formato YAML utilizado para definir un conjunto de datos 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
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
El train
y val
Los campos 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 dataset YOLO.
(Opcional) si los puntos son simétricos, entonces se necesita flip_idx, como el lado izquierdo-derecho de un humano o una cara. Por ejemplo, si asumimos cinco puntos clave de referencia facial: [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] (simplemente intercambie el índice izquierda-derecha, es decir, 0-1 y 3-4, y no modifique otros como la nariz en este ejemplo).
Uso
Ejemplo
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-pose.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo pose train data=coco8-pose.yaml model=yolo11n-pose.pt epochs=100 imgsz=640
Conjuntos de Datos Compatibles
Esta sección describe los conjuntos de datos que son compatibles con el formato YOLO de Ultralytics y que se pueden utilizar para entrenar modelos de estimación de pose:
COCO-Pose
- Descripción: COCO-Pose es un conjunto de datos a gran escala de 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: Igual que el formato YOLO de Ultralytics como se describió anteriormente, con puntos clave para poses humanas.
- Número de clases: 1 (Humano).
- Puntos clave: 17 puntos clave que incluyen nariz, ojos, orejas, hombros, codos, muñecas, caderas, rodillas y tobillos.
- Uso: Adecuado para entrenar modelos de estimación de pose humana.
- Notas adicionales: El conjunto de datos es rico y diverso, y contiene más de 200.000 imágenes etiquetadas.
- Más información sobre COCO-Pose
COCO8-Pose
- Descripción: Ultralytics COCO8-Pose es un conjunto de datos pequeño pero versátil de detección de poses compuesto por las primeras 8 imágenes del conjunto de entrenamiento COCO 2017, 4 para entrenamiento y 4 para validación.
- Formato de etiqueta: Igual que el formato YOLO de Ultralytics como se describió anteriormente, con puntos clave para poses humanas.
- Número de clases: 1 (Humano).
- Puntos clave: 17 puntos clave que incluyen 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 comprobaciones de CI.
- Más información sobre COCO8-Pose
Tiger-Pose
- Descripción: El conjunto de datos Tiger Pose de Ultralytics comprende 263 imágenes obtenidas de un Video de YouTube, con 210 imágenes asignadas para el entrenamiento y 53 para la validación.
- Formato de etiqueta: Igual que el formato YOLO de Ultralytics como se describió anteriormente, con 12 puntos clave para la pose de animales y sin dimensión visible.
- Número de clases: 1 (Tigre).
- Puntos clave: 12 puntos clave.
- Uso: Ideal para la pose de animales o cualquier otra pose que no esté basada en humanos.
- Más información sobre Tiger-Pose
Puntos clave de la mano
- Descripción: El conjunto de datos de poses de puntos clave de manos comprende casi 26.000 imágenes, con 18776 imágenes asignadas para el entrenamiento y 7992 para la validación.
- Formato de etiqueta: Igual que el formato YOLO de Ultralytics como se describió anteriormente, pero con 21 puntos clave para la mano humana y la dimensión visible.
- Número de clases: 1 (Mano).
- Puntos clave: 21 puntos clave.
- Uso: Ideal para la estimación de la pose de la mano humana y el reconocimiento de gestos.
- Más información sobre Hand Keypoints
Dog-Pose
- Descripción: El conjunto de datos Dog Pose contiene aproximadamente 6000 imágenes, lo que proporciona un recurso diverso y extenso para el entrenamiento y la validación de modelos de estimación de poses de perros.
- Formato de etiqueta: Sigue el formato YOLO de Ultralytics, 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 poses de perros, como extremidades, articulaciones y posiciones de la cabeza.
- Uso: Ideal para entrenar modelos para estimar poses de perros en varios escenarios, desde la investigación hasta las aplicaciones del mundo real.
- Más información sobre Dog-Pose
Añadir tu propio conjunto de datos
Si tiene su propio conjunto de datos y le gustaría usarlo para entrenar modelos de estimación de pose con el formato Ultralytics YOLO, asegúrese de que siga el formato especificado anteriormente en "Formato Ultralytics YOLO". Convierta sus anotaciones al formato requerido y especifique 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 herramienta de conversión conveniente para convertir etiquetas desde el popular formato de 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 se puede utilizar para convertir el conjunto de datos COCO o cualquier conjunto de datos en el formato COCO al formato Ultralytics YOLO. El use_keypoints
parámetro especifica si se deben incluir puntos clave (para la estimación de la pose) en las etiquetas convertidas.
Preguntas frecuentes
¿Qué es el formato Ultralytics YOLO para la estimación de pose?
El formato Ultralytics YOLO para conjuntos de datos 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 la clase del objeto
- Coordenadas del centro del objeto (x e y normalizadas)
- Ancho y alto del objeto (normalizado)
- Coordenadas de 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 un indicador de visibilidad. Para más detalles, consulta el formato Ultralytics YOLO.
¿Cómo utilizo el conjunto de datos COCO-Pose con Ultralytics YOLO?
Para usar el conjunto de datos COCO-Pose con Ultralytics YOLO:
- Descargue el conjunto de datos y prepare sus archivos de etiquetas en el formato YOLO.
- Cree un archivo de configuración YAML que especifique las rutas a las imágenes de entrenamiento y validación, la forma de los puntos clave y los nombres de las clases.
-
Utiliza el archivo de configuración para el entrenamiento:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") # load pretrained model results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
Para más información, visita las secciones de COCO-Pose y entrenamiento.
¿Cómo puedo añadir mi propio conjunto de datos para la estimación de poses en Ultralytics YOLO?
Para añadir su conjunto de datos:
- Convierte tus anotaciones al formato Ultralytics YOLO.
- Cree 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.
-
Utiliza el archivo de configuración para entrenar tu modelo:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
Para ver los pasos completos, consulta la sección Añadir tu propio 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 agilizar la gestión de conjuntos de datos y el entrenamiento de modelos. 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
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
Más información sobre cómo crear archivos de configuración YAML en formato YAML de conjunto de datos.
¿Cómo puedo convertir las 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 etiquetas de conjuntos 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 los proyectos YOLO. Para obtener más detalles, consulte la sección Herramienta de conversión y la guía de preprocesamiento de datos.