Ultralytics YOLO27:
Get Started

Estimación de pose con Ultralytics YOLO#

Ultralytics YOLO pose estimation with human body keypoint detection

La estimación de pose consiste en identificar la ubicación de puntos específicos en una imagen, normalmente denominados puntos clave. Los puntos clave pueden representar distintas partes del objeto, como articulaciones, puntos de referencia u otras características distintivas. Sus ubicaciones suelen representarse como un conjunto de coordenadas 2D [x, y], opcionalmente con un indicador de visibilidad [x, y, visible].

La salida de un modelo de estimación de pose es un conjunto de puntos que representan los puntos clave de un objeto en la imagen, normalmente junto con las puntuaciones de confianza de cada punto. La estimación de pose es una buena opción cuando necesitas identificar partes concretas de un objeto en una escena y su ubicación relativa.



Ver: Cómo realizar estimación de pose en tiempo real con Ultralytics YOLO26 | Seguimiento y extracción de puntos clave 🕺
Consejo

Los modelos YOLO26 Pose usan el sufijo -pose, es decir, yolo26n-pose.pt, y se preentrenan con COCO keypoints.

Modelos#

A continuación se muestran los modelos YOLO26 Pose preentrenados con el conjunto de datos COCO keypoints.

Los modelos se descargan automáticamente desde la versión más reciente de Ultralytics al usarlos por primera vez.

Modelotamaño
(píxeles)
mAPpose
50-95(e2e)
mAPpose
50(e2e)
Velocidad
CPU ONNX
(ms)
Velocidad
T4 TensorRT10
(ms)
parámetros
(M)
FLOPs
(B)
YOLO26n-pose64057.283.340.3 ± 0.51.8 ± 0.02.97.6
YOLO26s-pose64063.086.685.3 ± 0.92.7 ± 0.010.424.1
YOLO26m-pose64068.889.6218.0 ± 1.55.0 ± 0.121.573.3
YOLO26l-pose64070.490.5275.4 ± 2.46.5 ± 0.125.991.7
YOLO26x-pose64071.691.6565.4 ± 3.012.2 ± 0.257.6202.3
  • Los valores mAPval corresponden a un solo modelo y una sola escala en el conjunto de datos COCO Keypoints val2017.
    Reprodúcelos con yolo pose val data=coco-pose.yaml device=0 nms=False
  • La velocidad es el promedio calculado con imágenes de COCO val usando ONNX en CPU y TensorRT10 en una GPU NVIDIA T4.
    Reprodúcela con yolo pose val data=coco-pose.yaml batch=1 device=0|cpu nms=False
  • Los valores de Params y FLOPs corresponden a modelos fusionados tras plegar Conv/BatchNorm y eliminar la rama de detección no utilizada. Los checkpoints preentrenados conservan toda la arquitectura de entrenamiento y pueden mostrar valores más altos.

Consulta la versión preliminar no publicada de YOLO27 para ver los resultados preliminares en COCO keypoints.

Entrenar#

Entrena YOLO26n-pose con el conjunto de datos COCO8-pose durante 100 épocas con un tamaño de imagen de 640. Consulta la página de Configuración para ver la lista completa de argumentos disponibles.

Ejemplo
from ultralytics import YOLO

# Cargar un modelo
model = YOLO("yolo26n-pose.yaml")  # Crea un modelo nuevo a partir de YAML
model = YOLO("yolo26n-pose.pt")  # Carga un modelo preentrenado (recomendado para el entrenamiento)
model = YOLO("yolo26n-pose.yaml").load("yolo26n-pose.pt")  # Crea el modelo a partir de YAML y transfiere los pesos

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

Consulta todos los detalles del modo train en la página Entrenar. También puedes entrenar modelos de pose con el entrenamiento en la nube de Ultralytics Platform.

Formato del conjunto de datos#

Encontrarás todos los detalles sobre el formato de los conjuntos de datos de pose de YOLO en la Guía de conjuntos de datos. Para convertir un conjunto de datos JSON existente de COCO keypoints al formato YOLO, usa la función integrada convert_coco con use_keypoints=True, tal como se describe en la guía de conversión de COCO a YOLO. La anotación de Ultralytics Platform también admite etiquetas de pose e incluye plantillas de esqueletos para personas, manos y caras, además de diseños personalizados de puntos clave.

Para tareas personalizadas de estimación de pose, también puedes explorar conjuntos de datos especializados como Tiger-Pose para estimar la pose de animales, Hand Keypoints para el seguimiento de manos o Dog-Pose para analizar la pose de perros.

Validar#

Valida la precisión del modelo YOLO26n-pose entrenado. No hacen falta argumentos, ya que model conserva como atributos del modelo el data y los argumentos del entrenamiento: path/to/best.pt del ejemplo de Entrenar valida el modelo con COCO8-pose. Los pesos oficiales registran una ruta al conjunto de datos de entrenamiento que no existe en tu equipo, por lo que usan el valor predeterminado de la tarea coco8-pose.yaml y muestran una advertencia. Pasa data para validar con otro conjunto de datos.

Ejemplo
from ultralytics import YOLO

# Cargar un modelo
model = YOLO("yolo26n-pose.pt")  # carga un modelo oficial
model = YOLO("path/to/best.pt")  # cargar un modelo personalizado

# Valida el modelo
metrics = model.val()  # no hacen falta argumentos; se recuerdan el conjunto de datos y los ajustes
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # una lista que contiene mAP50-95 para cada categoría
metrics.box.image_metrics  # diccionario de métricas por imagen para la caja, con precisión, exhaustividad, F1, TP, FP y FN
metrics.pose.map  # map50-95(P)
metrics.pose.map50  # map50(P)
metrics.pose.map75  # map75(P)
metrics.pose.maps  # una lista que contiene el mAP50-95(P) de cada categoría
metrics.pose.image_metrics  # diccionario de métricas por imagen para la pose, con precisión, exhaustividad, F1, TP, FP y FN

Predecir#

Usa un modelo YOLO26n-pose entrenado para hacer predicciones en imágenes.

Ejemplo
from ultralytics import YOLO

# Cargar un modelo
model = YOLO("yolo26n-pose.pt")  # carga un modelo oficial
model = YOLO("path/to/best.pt")  # cargar un modelo personalizado

# Haz predicciones con el modelo
results = model("https://ultralytics.com/images/bus.jpg")  # haz una predicción sobre una imagen

# Accede a los resultados
for result in results:
    xy = result.keypoints.xy  # coordenadas x e y
    xyn = result.keypoints.xyn  # normalized
    kpts = result.keypoints.data  # x, y, visibilidad (si está disponible)

Consulta todos los detalles del modo predict en la página de predicción.

Resultados de salida#

La estimación de pose devuelve un objeto Results por imagen. Los principales campos de predicción son result.keypoints, para las coordenadas de pose, y result.boxes, para las instancias detectadas a las que pertenecen esos puntos clave.

AtributoTipoFormaDescripción
result.keypointsKeypoints(N)Puntos clave.
result.keypoints.datatorch.float32(N,K,2/3)x,y más visibilidad/nivel de confianza opcionales.
result.keypoints.xytorch.float32(N,K,2)Puntos clave en píxeles.
result.keypoints.xyntorch.float32(N,K,2)Puntos clave normalizados.
result.boxesBoxes(N)Cajas de instancias.

Para consultar los campos Results específicos de cada tarea, visita la sección resultados de predicción por tarea.

Mapa de índices de puntos clave#

Los modelos YOLO26 Pose predeterminados predicen los 17 puntos clave de COCO, por lo que el índice k en result.keypoints.xy[:, k] corresponde a:

  1. Nariz
  2. Ojo izquierdo
  3. Ojo derecho
  4. Oreja izquierda
  5. Oreja derecha
  6. Hombro izquierdo
  7. Hombro derecho
  8. Codo izquierdo
  9. Codo derecho
  10. Muñeca izquierda
  11. Muñeca derecha
  12. Cadera izquierda
  13. Cadera derecha
  14. Rodilla izquierda
  15. Rodilla derecha
  16. Tobillo izquierdo
  17. Tobillo derecho

Exportar#

Exporta un modelo YOLO26n-pose a otro formato, como ONNX, CoreML, etc.

Ejemplo
from ultralytics import YOLO

# Cargar un modelo
model = YOLO("yolo26n-pose.pt")  # carga un modelo oficial
model = YOLO("path/to/best.pt")  # cargar un modelo personalizado

# Exporta el modelo
model.export(format="onnx")

Los formatos de exportación disponibles para YOLO26-pose se muestran en la tabla siguiente. Puedes exportar a cualquier formato con el argumento format, por ejemplo, format='onnx' o format='engine'. También puedes predecir o validar directamente con los modelos exportados, por ejemplo, yolo predict model=yolo26n-pose.onnx. Cuando termine la exportación, se mostrarán ejemplos de uso para tu modelo.

FormatoArgumento formatModeloMetadatosArgumentos
PyTorch-yolo26n-pose.pt✅-
TorchScripttorchscriptyolo26n-pose.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-pose.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-pose_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-pose.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-pose.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n-pose.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n-pose_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-pose.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-pose_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n-pose.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-pose_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n-pose.mnn✅imgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-pose_ncnn_model/✅imgsz, quantize, batch, device
IMX500imxyolo26n-pose_imx_model/✅imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-pose_rknn_model/✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-pose_executorch_model/✅imgsz, batch, device
Axeleraaxelerayolo26n-pose_axelera_model/✅imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-pose_deepx_model/✅imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-pose_qnn.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n-pose_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n-pose_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n-pose_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None usa de forma predeterminada salidas sin procesar para NMS externa. Establece nms=False para seleccionar una cabeza sin NMS disponible; los formatos no compatibles recurren a su ruta de salida nativa. Las entradas nms anteriores identifican los formatos que pueden integrar NMS con nms=True.

Consulta todos los detalles de export en la página Exportar.

Preguntas frecuentes#

  • La estimación de pose con Ultralytics YOLO26 consiste en identificar puntos específicos de una imagen, conocidos como puntos clave. Estos suelen representar articulaciones u otras características importantes del objeto. La salida incluye las coordenadas [x, y] y las puntuaciones de confianza de cada punto. Los modelos YOLO26-pose están diseñados específicamente para esta tarea y usan el sufijo -pose, como yolo26n-pose.pt. Se preentrenan con conjuntos de datos como COCO keypoints y se pueden usar para diversas tareas de estimación de pose. Para obtener más información, visita la página de estimación de pose.

  • Para entrenar un modelo YOLO26-pose con un conjunto de datos personalizado, carga un modelo: puede ser un modelo nuevo definido mediante un archivo YAML o uno preentrenado. Después, puedes iniciar el entrenamiento con el conjunto de datos y los parámetros que hayas especificado.

    Ejemplo
    from ultralytics import YOLO
    
    # Cargar un modelo
    model = YOLO("yolo26n-pose.yaml")  # Crea un modelo nuevo a partir de YAML
    model = YOLO("yolo26n-pose.pt")  # Carga un modelo preentrenado (recomendado para el entrenamiento)
    
    # Entrenar el modelo
    results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

    Consulta la sección Entrenar para obtener información detallada sobre el entrenamiento. También puedes usar el entrenamiento en la nube de Ultralytics Platform para entrenar modelos de estimación de pose personalizados sin escribir código.

  • Para validar un modelo YOLO26-pose, evalúa su precisión con los mismos parámetros del conjunto de datos que se usaron durante el entrenamiento. Aquí tienes un ejemplo:

    Ejemplo
    from ultralytics import YOLO
    
    # Cargar un modelo
    model = YOLO("yolo26n-pose.pt")  # carga un modelo oficial
    model = YOLO("path/to/best.pt")  # cargar un modelo personalizado
    
    # Valida el modelo
    metrics = model.val()  # no hacen falta argumentos; se recuerdan el conjunto de datos y los ajustes

    Para obtener más información, visita la sección Val.

  • Sí, puedes exportar un modelo YOLO26-pose a varios formatos, como ONNX, CoreML, TensorRT y otros. Puedes hacerlo con Python o con la interfaz de línea de comandos (CLI).

    Ejemplo
    from ultralytics import YOLO
    
    # Cargar un modelo
    model = YOLO("yolo26n-pose.pt")  # carga un modelo oficial
    model = YOLO("path/to/best.pt")  # cargar un modelo personalizado
    
    # Exporta el modelo
    model.export(format="onnx")

    Consulta la sección Exportar para obtener más información. Puedes desplegar los modelos exportados en dispositivos periféricos para aplicaciones en tiempo real, como el seguimiento de la actividad física, el análisis deportivo o la robótica.

  • Ultralytics YOLO26 ofrece varios modelos de pose preentrenados, como YOLO26n-pose, YOLO26s-pose y YOLO26m-pose, entre otros. Estos modelos varían en tamaño, precisión (mAP) y velocidad. Consulta la sección Modelos para ver la lista completa, con el mAP de COCO keypoints, la velocidad, los parámetros y los FLOPs de cada modelo.

Comentarios