姿势估计
姿势估计是一项涉及识别图像中特定点的位置的任务,这些点通常称为关键点。关键点可以代表对象的各个部分,例如关节、地标或其他独特特征。关键点的位置通常表示为一组 2D [x, y]
或 3D [x, y, visible]
坐标。
姿势估计模型的输出是一组点,这些点代表图像中对象上的关键点,通常还包括每个点的置信度分数。当您需要识别场景中对象的特定部分及其彼此之间的位置时,姿势估计是一个不错的选择。
观看: Ultralytics YOLO11 姿势估计教程 | 实时对象跟踪和人体姿势检测
提示
YOLO11 姿势估计 模型使用 -pose
后缀,例如 yolo11n-pose.pt
。 这些模型在 COCO 关键点 数据集,适用于各种姿势估计任务。
在默认的YOLO11姿势估计模型中,有17个关键点,每个关键点代表人体不同的部位。以下是每个索引与其对应身体关节的映射:
- 鼻子
- 左眼
- 右眼
- 左耳
- 右耳
- 左肩
- 右肩
- 左手肘
- 右肘
- 左手腕
- 右腕
- 左髋
- 右髋
- 左膝
- 右膝
- 左脚踝
- 右脚踝
模型
Ultralytics YOLO11 预训练的姿势估计模型如下所示。检测、分割和姿势估计模型均在 COCO 数据集上进行预训练,而分类模型则在 ImageNet 数据集上进行预训练。
模型 首次使用时会自动从最新的 Ultralytics 版本 下载。
模型 | 尺寸 (像素) |
mAP姿势估计 50-95 |
mAP姿势估计 50 |
速度 CPU ONNX (毫秒) |
速度 T4 TensorRT10 (毫秒) |
参数 (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLO11n-pose | 640 | 50.0 | 81.0 | 52.4 ± 0.5 | 1.7 ± 0.0 | 2.9 | 7.6 |
YOLO11s-姿势估计 | 640 | 58.9 | 86.3 | 90.5 ± 0.6 | 2.6 ± 0.0 | 9.9 | 23.2 |
YOLO11m-姿势估计 | 640 | 64.9 | 89.4 | 187.3 ± 0.8 | 4.9 ± 0.1 | 20.9 | 71.7 |
YOLO11l-姿势估计 | 640 | 66.1 | 89.9 | 247.7 ± 1.1 | 6.4 ± 0.1 | 26.2 | 90.7 |
YOLO11x-姿势估计 | 640 | 69.5 | 91.1 | 488.0 ± 13.9 | 12.1 ± 0.2 | 58.8 | 203.3 |
- mAPval 数值为单模型单尺度下的结果,基于 COCO Keypoints val2017 数据集上单模型多尺度测试的结果。
如需重现结果,请通过yolo val pose data=coco-pose.yaml device=0
- 速度 在COCO val图像上取平均值,使用 Amazon EC2 P4d 实例进行平均计算得出的。
如需重现结果,请通过yolo val pose data=coco-pose.yaml batch=1 device=0|cpu
训练
在 COCO8-pose 数据集上训练 YOLO11-姿势估计 模型。COCO8-pose 数据集 是一个小样本数据集,非常适合测试和调试您的姿势估计模型。
示例
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
数据集格式
YOLO 姿势估计数据集格式的详细信息可以在 数据集指南 中找到。要将您现有的数据集从其他格式(如 COCO 等)转换为 YOLO 格式,请使用 Ultralytics 提供的 JSON2YOLO 工具。
对于自定义姿势估计任务,您还可以探索专门的数据集,例如用于动物姿势估计的 Tiger-Pose、用于手部跟踪的 Hand Keypoints 或用于犬类姿势分析的 Dog-Pose。
验证
验证训练后的 YOLO11n-姿势估计 模型 准确性 在 COCO8-pose 数据集上。由于 model
保留其训练 data
和参数作为模型属性,因此无需任何参数。
示例
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
预测
使用训练好的 YOLO11n-姿势估计 模型来运行图像预测。预测模式 允许您对图像、视频或实时流执行推理。
示例
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
查看完整 predict
模式的详细信息,请参阅 预测 页面。
导出
将 YOLO11n 姿势估计模型导出为不同的格式,如 ONNX、CoreML 等。这使您能够在各种平台和设备上部署您的模型,以进行实时推理。
示例
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
下表列出了可用的 YOLO11-姿势估计 导出格式。您可以使用 format
参数导出为任何格式,例如 format='onnx'
或 format='engine'
。您可以直接在导出的模型上进行预测或验证,例如 yolo predict model=yolo11n-pose.onnx
。导出完成后,将显示您的模型的使用示例。
格式 | format 参数 |
模型 | 元数据 | 参数 |
---|---|---|---|---|
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 |
查看完整 export
详情请参见 导出 页面。
常见问题
什么是使用 Ultralytics YOLO11 进行姿势估计,它是如何工作的?
使用 Ultralytics YOLO11 进行姿势估计涉及识别图像中的特定点,这些点被称为关键点。这些关键点通常代表物体的关节或其他重要特征。输出包括每个点的 [x, y]
坐标和置信度分数。YOLO11-姿势估计 模型是专门为此任务设计的,并使用 -pose
后缀,例如 yolo11n-pose.pt
。这些模型在诸如 这些模型在 COCO 关键点 ,可用于各种姿势估计任务。有关更多信息,请访问 姿势估计页面.
如何在自定义数据集上训练 YOLO11-pose 模型?
在自定义数据集上训练 YOLO11-姿势估计 模型涉及加载一个模型,可以是由 YAML 文件定义的新模型,也可以是预训练模型。然后,您可以使用指定的数据集和参数启动训练过程。
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)
有关训练的全面详细信息,请参阅训练部分。您还可以使用 Ultralytics HUB 以无代码方式训练自定义姿势估计模型。
如何验证训练好的 YOLO11-pose 模型?
YOLO11-姿势估计 模型的验证涉及使用训练期间保留的相同数据集参数评估其准确性。这是一个例子:
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
有关更多信息,请访问Val Section。
我可以将 YOLO11-pose 模型导出为其他格式吗?如何导出?
是的,您可以将 YOLO11-姿势估计 模型导出为各种格式,如 ONNX、CoreML、TensorRT 等。这可以使用 python 或命令行界面 (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")
有关更多详细信息,请参阅导出部分。导出的模型可以部署在边缘设备上,用于实时应用程序,例如健身追踪、运动分析或机器人技术。
有哪些可用的 Ultralytics YOLO11-pose 模型及其性能指标?
Ultralytics YOLO11 提供了各种预训练的姿势估计模型,例如 YOLO11n-姿势估计、YOLO11s-姿势估计、YOLO11m-姿势估计 等。这些模型在大小、准确性 (mAP) 和速度方面有所不同。例如,YOLO11n-姿势估计 模型的 mAP姿势估计50-95 为 50.0,mAP姿势估计50 为 81.0。有关完整列表和性能详细信息,请访问模型部分。