Estimación de pose
La estimación de pose es una tarea que implica la identificación de la ubicación de puntos específicos en una imagen, generalmente denominados keypoints. Los keypoints pueden representar varias partes del objeto, como articulaciones, puntos de referencia u otras características distintivas. Las ubicaciones de los keypoints se representan generalmente como un conjunto de 2D [x, y]
o 3D [x, y, visible]
coordenadas.
La salida de un modelo de estimación de pose es un conjunto de puntos que representan los keypoints en un objeto en la imagen, generalmente junto con los puntajes de confianza para cada punto. La estimación de pose es una buena opción cuando necesitas identificar partes específicas de un objeto en una escena y su ubicación en relación con los demás.
Ver: Tutorial de estimación de pose de Ultralytics YOLO11 | Seguimiento de objetos en tiempo real y detección de pose humana
Consejo
YOLO11 pose los modelos utilizan el -pose
sufijo, p. ej. yolo11n-pose.pt
. Estos modelos están entrenados en el conjunto de datos COCO keypoints y son adecuados para una variedad de tareas de estimación de pose.
En el modelo de pose YOLO11 predeterminado, hay 17 keypoints, cada uno representando una parte diferente del cuerpo humano. Aquí está la asignación de cada índice a su articulación corporal respectiva:
- Nariz
- Ojo Izquierdo
- Ojo derecho
- Oreja Izquierda
- Oreja derecha
- Hombro Izquierdo
- Hombro derecho
- Codo Izquierdo
- Codo derecho
- Muñeca Izquierda
- Muñeca derecha
- Cadera Izquierda
- Cadera derecha
- Rodilla Izquierda
- Rodilla derecha
- Tobillo Izquierdo
- Tobillo derecho
Modelos
Aquí se muestran los modelos de pose preentrenados de Ultralytics YOLO11. Los modelos Detectar, Segmentar y Pose están preentrenados en el conjunto de datos COCO, mientras que los modelos Clasificar están preentrenados en el conjunto de datos ImageNet.
Los modelos se descargan automáticamente desde la última versión de Ultralytics en el primer uso.
Modelo | tamaño (píxeles) |
mAPpose 50-95 |
mAPpose 50 |
Velocidad CPU ONNX (ms) |
Velocidad T4 TensorRT10 (ms) |
parámetros (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLO11n-pose | 640 | 50.0 | 81.0 | 52.4 ± 0.5 | 1.7 ± 0.0 | 2.9 | 7.6 |
YOLO11s-pose | 640 | 58.9 | 86.3 | 90.5 ± 0.6 | 2.6 ± 0.0 | 9.9 | 23.2 |
YOLO11m-pose | 640 | 64.9 | 89.4 | 187.3 ± 0.8 | 4.9 ± 0.1 | 20.9 | 71.7 |
YOLO11l-pose | 640 | 66.1 | 89.9 | 247.7 ± 1.1 | 6.4 ± 0.1 | 26.2 | 90.7 |
YOLO11x-pose | 640 | 69.5 | 91.1 | 488.0 ± 13.9 | 12.1 ± 0.2 | 58.8 | 203.3 |
- mAPval los valores corresponden a un solo modelo a escala única en COCO Keypoints val2017 conjunto de datos.
Reproducir medianteyolo val pose data=coco-pose.yaml device=0
- Velocidad promediada en imágenes COCO val utilizando una instancia de Amazon EC2 P4d .
Reproducir medianteyolo val pose data=coco-pose.yaml batch=1 device=0|cpu
Entrenar
Entrena un modelo de pose YOLO11 en el conjunto de datos COCO8-pose. El conjunto de datos COCO8-pose es un pequeño conjunto de datos de muestra que es perfecto para probar y depurar tus modelos de estimación de pose.
Ejemplo
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-pose.yaml") # build a new model from YAML
model = YOLO("yolo11n-pose.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo11n-pose.yaml").load("yolo11n-pose.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo pose train data=coco8-pose.yaml model=yolo11n-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
# Build a new model from YAML, transfer pretrained weights to it and start training
yolo pose train data=coco8-pose.yaml model=yolo11n-pose.yaml pretrained=yolo11n-pose.pt epochs=100 imgsz=640
Formato del dataset
El formato del conjunto de datos de pose de YOLO se puede encontrar en detalle en la Guía del conjunto de datos. Para convertir tu conjunto de datos existente de otros formatos (como COCO, etc.) a formato YOLO, utiliza la herramienta JSON2YOLO de Ultralytics.
Para tareas personalizadas de estimación de pose, también puedes explorar conjuntos de datos especializados como Tiger-Pose para la estimación de pose de animales, Hand Keypoints para el seguimiento de manos o Dog-Pose para el análisis de pose canina.
Val
Valida el modelo YOLO11n-pose entrenado precisión en el conjunto de datos COCO8-pose. No se necesitan argumentos ya que los model
conserva su entrenamiento data
y argumentos como atributos del modelo.
Ejemplo
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-pose.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # a list contains map50-95 of each category
metrics.pose.map # map50-95(P)
metrics.pose.map50 # map50(P)
metrics.pose.map75 # map75(P)
metrics.pse.maps # a list contains map50-95(P) of each category
yolo pose val model=yolo11n-pose.pt # val official model
yolo pose val model=path/to/best.pt # val custom model
Predecir
Utilice un modelo YOLO11n-pose entrenado para ejecutar predicciones en imágenes. El modo de predicción le permite realizar inferencias en imágenes, vídeos o transmisiones en tiempo real.
Ejemplo
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-pose.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg") # predict on an image
# Access the results
for result in results:
xy = result.keypoints.xy # x and y coordinates
xyn = result.keypoints.xyn # normalized
kpts = result.keypoints.data # x, y, visibility (if available)
yolo pose predict model=yolo11n-pose.pt source='https://ultralytics.com/images/bus.jpg' # predict with official model
yolo pose predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg' # predict with custom model
Ver detalles completos del predict
modo en la Predecir página.
Exportar
Exporte un modelo de pose YOLO11n a un formato diferente como ONNX, CoreML, etc. Esto le permite implementar su modelo en varias plataformas y dispositivos para la inferencia en tiempo real.
Ejemplo
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-pose.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom trained model
# Export the model
model.export(format="onnx")
yolo export model=yolo11n-pose.pt format=onnx # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model
Los formatos de exportación YOLO11-pose disponibles están en la tabla a continuación. Puedes exportar a cualquier formato utilizando el format
argumento, por ejemplo: format='onnx'
o format='engine'
. Puedes predecir o validar directamente en modelos exportados, es decir, yolo predict model=yolo11n-pose.onnx
Después de que finalice la exportación, se mostrarán ejemplos de uso para su modelo.
Formato | format Argumento |
Modelo | Metadatos | Argumentos |
---|---|---|---|---|
PyTorch | - | yolo11n-pose.pt |
✅ | - |
TorchScript | torchscript |
yolo11n-pose.torchscript |
✅ | imgsz , half , dynamic , optimize , nms , batch , device |
ONNX | onnx |
yolo11n-pose.onnx |
✅ | imgsz , half , dynamic , simplify , opset , nms , batch , device |
OpenVINO | openvino |
yolo11n-pose_openvino_model/ |
✅ | imgsz , half , dynamic , int8 , nms , batch , data , fraction , device |
TensorRT | engine |
yolo11n-pose.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , nms , batch , data , fraction , device |
CoreML | coreml |
yolo11n-pose.mlpackage |
✅ | imgsz , half , int8 , nms , batch , device |
TF SavedModel | saved_model |
yolo11n-pose_saved_model/ |
✅ | imgsz , keras , int8 , nms , batch , device |
TF GraphDef | pb |
yolo11n-pose.pb |
❌ | imgsz , batch , device |
TF Lite | tflite |
yolo11n-pose.tflite |
✅ | imgsz , half , int8 , nms , batch , data , fraction , device |
TF Edge TPU | edgetpu |
yolo11n-pose_edgetpu.tflite |
✅ | imgsz , device |
TF.js | tfjs |
yolo11n-pose_web_model/ |
✅ | imgsz , half , int8 , nms , batch , device |
PaddlePaddle | paddle |
yolo11n-pose_paddle_model/ |
✅ | imgsz , batch , device |
MNN | mnn |
yolo11n-pose.mnn |
✅ | imgsz , batch , int8 , half , device |
NCNN | ncnn |
yolo11n-pose_ncnn_model/ |
✅ | imgsz , half , batch , device |
IMX500 | imx |
yolo11n-pose_imx_model/ |
✅ | imgsz , int8 , data , fraction , device |
RKNN | rknn |
yolo11n-pose_rknn_model/ |
✅ | imgsz , batch , name , device |
Ver detalles completos del export
detalles en la Exportar página.
Preguntas frecuentes
¿Qué es la Estimación de Pose con Ultralytics YOLO11 y cómo funciona?
La estimación de pose con Ultralytics YOLO11 implica la identificación de puntos específicos, conocidos como keypoints, en una imagen. Estos keypoints típicamente representan articulaciones u otras características importantes del objeto. La salida incluye las [x, y]
coordenadas y los puntajes de confianza para cada punto. Los modelos YOLO11-pose están diseñados específicamente para esta tarea y utilizan el -pose
sufijo, como yolo11n-pose.pt
. Estos modelos están pre-entrenados en conjuntos de datos como COCO keypoints y se pueden utilizar para diversas tareas de estimación de pose. Para obtener más información, visita la Página de Estimación de Pose.
¿Cómo puedo entrenar un modelo YOLO11-pose en un conjunto de datos personalizado?
Entrenar un modelo YOLO11-pose en un conjunto de datos personalizado implica cargar un modelo, ya sea un modelo nuevo definido por un archivo YAML o un modelo pre-entrenado. Luego, puedes iniciar el proceso de entrenamiento utilizando tu conjunto de datos y parámetros especificados.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-pose.yaml") # build a new model from YAML
model = YOLO("yolo11n-pose.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
Para obtener información detallada sobre el entrenamiento, consulta la Sección de entrenamiento. También puedes utilizar Ultralytics HUB para un enfoque sin código para entrenar modelos personalizados de estimación de pose.
¿Cómo valido un modelo YOLO11-pose entrenado?
La validación de un modelo YOLO11-pose implica evaluar su precisión utilizando los mismos parámetros del conjunto de datos retenidos durante el entrenamiento. Aquí tienes un ejemplo:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-pose.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
Para obtener más información, visita la Sección Val.
¿Puedo exportar un modelo YOLO11-pose a otros formatos y cómo?
Sí, puedes exportar un modelo YOLO11-pose a varios formatos como ONNX, CoreML, TensorRT y más. Esto se puede hacer usando python o la Interfaz de Línea de Comandos (CLI).
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-pose.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom trained model
# Export the model
model.export(format="onnx")
Consulte la Sección de exportación para obtener más detalles. Los modelos exportados se pueden implementar en dispositivos periféricos para aplicaciones en tiempo real como el seguimiento de la forma física, el análisis deportivo o la robótica.
¿Cuáles son los modelos Ultralytics YOLO11-pose disponibles y sus métricas de rendimiento?
Ultralytics YOLO11 ofrece varios modelos de pose preentrenados, como YOLO11n-pose, YOLO11s-pose, YOLO11m-pose, entre otros. Estos modelos difieren en tamaño, precisión (mAP) y velocidad. Por ejemplo, el modelo YOLO11n-pose alcanza un mAPpose50-95 de 50.0 y un mAPpose50 de 81.0. Para obtener una lista completa y detalles de rendimiento, visite la Sección de modelos.