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, 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 enumere 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 con un subconjunto de un directorio, omitir imágenes sin etiquetar o combinar imágenes de múltiples fuentes en una sola división.
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: personnames 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) flip_idx asigna cada punto clave a su imagen especular, de modo que la aumentación de volteo horizontal mantenga la consistencia entre izquierda y derecha en esqueletos simétricos como un cuerpo humano o una cara. 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 personalizados por punto clave que se utilizan durante la validación, p. ej. [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 cada valor debe ser positivo. Si se omite, se utilizan los sigmas de 17 puntos clave de COCO para kpt_shape: [17, 3] y un 1/N uniforme en caso contrario.
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 conjuntos de datos que son compatibles con el formato YOLO de Ultralytics y que se pueden utilizar para entrenar modelos de pose estimation:
Link to this sectionCOCO-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.
- Lee más sobre COCO-Pose
Link to this sectionCOCO8-Pose#
- Descripción: El conjunto de datos 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 de integridad y CI checks.
- Lee más sobre COCO8-Pose
Link to this sectionDog-Pose#
- Descripción: El conjunto de datos Ultralytics Dog-Pose contiene 6,773 imágenes de entrenamiento y 1,703 de validación 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: 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 varios escenarios, desde la investigación hasta aplicaciones del mundo real.
- Notas adicionales: Las imágenes de origen provienen del Stanford Dogs Dataset.
- Lee más sobre Dog-Pose
Link to this sectionPuntos clave de mano (Hand Keypoints)#
- Descripción: El conjunto de datos de Hand Keypoints de Ultralytics comprende 26,768 imágenes, con 18,776 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.
- Notas adicionales: Las anotaciones de los puntos clave se generan utilizando Google MediaPipe para un etiquetado coherente.
- Lee más sobre Hand Keypoints
Link to this sectionTiger-Pose#
- Descripción: El conjunto de datos Ultralytics Tiger-Pose comprende 263 imágenes provenientes 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: Publicado bajo la AGPL-3.0 License.
- 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.
Para omitir el paso de conversión por completo, Ultralytics Platform te permite subir imágenes sin procesar, anotar puntos clave en el navegador y entrenar directamente en el conjunto de datos resultante.
Link to this sectionHerramienta de conversión#
Ultralytics ofrece una cómoda herramienta de conversión para pasar etiquetas del popular formato COCO dataset 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?#
coco-pose.yaml se incluye con el paquete y descarga las imágenes y 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 ver los detalles del conjunto de datos, consulta COCO-Pose, y la página Train para obtener la lista completa de argumentos.
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 conjuntos de datos COCO en proyectos YOLO. Para obtener más detalles, consulta la sección Conversion Tool y la data preprocessing guide.