Link to this sectionDescripción general de los datasets de estimación de pose#
Link to this sectionFormatos de conjuntos de datos compatibles#
Link to this sectionFormato Ultralytics YOLO#
El formato de etiquetas de dataset utilizado para entrenar modelos de pose YOLO es el siguiente:
- 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".
- 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 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 del 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 datasets que anotan oclusiones.
Link to this sectionFormato 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 🚀 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.zipLos 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 los objetos en los archivos de dataset 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 puntos de referencia 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).
Link to this sectionUso#
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)Link to this sectionConjuntos de datos compatibles#
Esta sección describe los datasets que son compatibles con el formato Ultralytics YOLO y pueden usarse para entrenar modelos de estimación de pose:
Link to this sectionCOCO-Pose#
- Descripción: COCO-Pose es un dataset a gran escala de detección de objetos, segmentación y estimación de pose. Es un subconjunto del popular dataset COCO y se centra en la estimación de pose humana. COCO-Pose incluye múltiples puntos clave para cada instancia humana.
- Formato de etiqueta: Igual que el formato Ultralytics YOLO descrito anteriormente, con puntos clave para poses humanas.
- Número de clases: 1 (Humano).
- Puntos clave: 17 puntos clave, incluidos nariz, ojos, oídos, hombros, codos, muñecas, caderas, rodillas y tobillos.
- Uso: Adecuado para entrenar modelos de estimación de pose humana.
- Notas adicionales: El dataset es rico y diverso, conteniendo más de 200k imágenes etiquetadas.
- Lee más sobre COCO-Pose
Link to this sectionCOCO8-Pose#
- Descripción: Ultralytics COCO8-Pose es un dataset de detección de pose pequeño pero versátil compuesto por las primeras 8 imágenes del set de entrenamiento COCO 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 (Humano).
- Puntos clave: 17 puntos clave, incluidos nariz, ojos, oídos, 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.
- Lee más sobre COCO8-Pose
Link to this sectionDog-Pose#
- Descripción: El dataset Dog Pose contiene 6,773 imágenes de entrenamiento y 1,703 de prueba, proporcionando un recurso extenso y diverso 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 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 aplicaciones del mundo real.
- Lee más sobre Dog-Pose
Link to this sectionPuntos clave de mano (Hand Keypoints)#
- Descripción: El dataset de pose de puntos clave de mano comprende casi 26K imágenes, con 18,776 imágenes asignadas para entrenamiento y 7,992 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: Excelente para la estimación de pose de mano humana y reconocimiento de gestos.
- Lee más sobre Hand Keypoints
Link to this sectionTiger-Pose#
- Descripción: El conjunto de datos Tiger Pose de Ultralytics consta de 263 imágenes obtenidas de un video 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 pose animal y sin dimensión visible.
- 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.
- Lee más sobre Tiger-Pose
Link to this sectionAñ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.
Link to this sectionHerramienta de conversión#
Ultralytics proporciona una cómoda herramienta de conversión para convertir etiquetas del popular formato dataset COCO al formato YOLO:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)Esta herramienta de conversión puede usarse para convertir el dataset COCO o cualquier dataset en formato COCO al formato Ultralytics YOLO. El parámetro use_keypoints especifica si incluir puntos clave (para estimación de pose) en las etiquetas convertidas.
Link to this sectionFAQ#
Link to this section¿Qué es el formato Ultralytics YOLO para estimación de pose?#
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 puntos clave incluyen coordenadas x e y normalizadas. Con una dimensión de visibilidad, cada punto clave también tiene una bandera de visibilidad. Para más detalles, consulta formato Ultralytics YOLO.
Link to this section¿Cómo uso el dataset COCO-Pose con Ultralytics YOLO?#
Para usar el dataset COCO-Pose con Ultralytics YOLO:
-
Descarga el dataset y prepara tus archivos de etiquetas en formato YOLO.
-
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.
-
Usa el archivo de configuración para entrenar:
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.
Link to this section¿Cómo puedo añadir mi propio dataset para estimación de pose en Ultralytics YOLO?#
Para añadir tu dataset:
-
Convierte tus anotaciones al formato Ultralytics YOLO.
-
Crea un archivo de configuración YAML especificando las rutas del dataset, el número de clases y los nombres de las clases.
-
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 pasos completos, consulta la sección Adding your own dataset.
Link to this section¿Cuál es el propósito del archivo YAML del dataset en Ultralytics YOLO?#
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.zipLee más sobre cómo crear archivos de configuración YAML en Formato YAML del dataset.
Link to this section¿Cómo puedo convertir etiquetas de dataset COCO al formato Ultralytics YOLO para estimación de pose?#
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 perfectamente los datasets COCO en los proyectos YOLO. Para más detalles, consulta la sección Herramienta de conversión y la guía de preprocesamiento de datos.