跳转至内容

姿势估计

姿势估计示例

姿势估计是一项涉及识别图像中特定点的位置的任务,这些点通常称为关键点。关键点可以代表对象的各个部分,例如关节、地标或其他独特特征。关键点的位置通常表示为一组 2D [x, y] 或 3D [x, y, visible] 坐标。

姿势估计模型的输出是一组点,这些点代表图像中对象上的关键点,通常还包括每个点的置信度分数。当您需要识别场景中对象的特定部分及其彼此之间的位置时,姿势估计是一个不错的选择。



观看: Ultralytics YOLO11 姿势估计教程 | 实时对象跟踪和人体姿势检测

提示

YOLO11 姿势估计 模型使用 -pose 后缀,例如 yolo11n-pose.pt这些模型在 COCO 关键点 数据集,适用于各种姿势估计任务。

在默认的YOLO11姿势估计模型中,有17个关键点,每个关键点代表人体不同的部位。以下是每个索引与其对应身体关节的映射:

  1. 鼻子
  2. 左眼
  3. 右眼
  4. 左耳
  5. 右耳
  6. 左肩
  7. 右肩
  8. 左手肘
  9. 右肘
  10. 左手腕
  11. 右腕
  12. 左髋
  13. 右髋
  14. 左膝
  15. 右膝
  16. 左脚踝
  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。有关完整列表和性能详细信息,请访问模型部分



📅 创建于 1 年前 ✏️ 更新于 3 个月前

评论