跳转至内容

姿势估计

基于人体关键点检测YOLO 姿势估计

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

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



观看: Ultralytics YOLO26 姿势估计教程 | 实时目标 track 与人体姿势 detect

提示

YOLO26 姿势估计 模型使用 -pose 后缀,即 yolo26n-pose.ptCOCO 关键点 数据集,适用于各种姿势估计任务。

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

  1. 鼻子
  2. 左眼
  3. 右眼
  4. 左耳
  5. 右耳
  6. 左肩
  7. 右肩
  8. 左手肘
  9. 右肘
  10. 左手腕
  11. 右腕
  12. 左髋
  13. 右髋
  14. 左膝
  15. 右膝
  16. 左脚踝
  17. 右脚踝

模型

此处展示了 Ultralytics YOLO26 预训练的姿势估计模型。detect、segment 和姿势估计模型在 COCO 数据集上进行预训练,而 classify 模型则在 ImageNet 数据集上进行预训练。

模型 首次使用时会自动从最新的 Ultralytics 版本 下载。

模型尺寸
(像素)
mAP姿势估计
50-95(e2e)
mAP姿势估计
50(e2e)
速度
CPU ONNX
(毫秒)
速度
T4 TensorRT10
(毫秒)
参数
(M)
FLOPs
(B)
YOLO26n-姿势估计64057.283.340.3 ± 0.51.8 ± 0.02.97.5
YOLO26s-姿势估计64063.086.685.3 ± 0.92.7 ± 0.010.423.9
YOLO26m-姿势估计64068.889.6218.0 ± 1.55.0 ± 0.121.573.1
YOLO26l-姿势估计64070.490.5275.4 ± 2.46.5 ± 0.125.991.3
YOLO26x-姿势估计64071.691.6565.4 ± 3.012.2 ± 0.257.6201.7
  • mAPval 数值为单模型单尺度下的结果,基于 COCO 关键点 val2017 数据集上单模型多尺度测试的结果。
    如需重现结果,请通过 yolo val pose data=coco-pose.yaml device=0
  • 速度 在 COCO 验证图像上平均,使用一个 Amazon EC2 P4d 实例进行平均计算得出的。
    如需重现结果,请通过 yolo val pose data=coco-pose.yaml batch=1 device=0|cpu

训练

在 COCO8-姿势估计数据集上训练 YOLO26-姿势估计模型。COCO8-姿势估计数据集 是一个小型样本数据集,非常适合测试和调试您的姿势估计模型。

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.yaml")  # build a new model from YAML
model = YOLO("yolo26n-pose.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-pose.yaml").load("yolo26n-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=yolo26n-pose.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo pose train data=coco8-pose.yaml model=yolo26n-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=yolo26n-pose.yaml pretrained=yolo26n-pose.pt epochs=100 imgsz=640

数据集格式

YOLO 姿势估计 数据集格式的详细信息可在数据集指南中找到。要将您现有的数据集从其他格式(如COCO等)转换为 YOLO 格式,请使用 Ultralytics 提供的JSON2YOLO工具。

对于自定义姿势估计任务,您还可以探索专门的数据集,例如用于动物姿势估计的 Tiger-Pose、用于手部跟踪的 Hand Keypoints 或用于犬类姿势分析的 Dog-Pose

验证

验证已训练的 YOLO26n-姿势估计模型 准确性 在 COCO8 姿势估计数据集上。无需任何参数,因为 model 保留其训练 data 和参数作为模型属性,因此无需任何参数。

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-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 containing mAP50-95 for each category
metrics.pose.map  # map50-95(P)
metrics.pose.map50  # map50(P)
metrics.pose.map75  # map75(P)
metrics.pose.maps  # a list containing mAP50-95(P) for each category
yolo pose val model=yolo26n-pose.pt # val official model
yolo pose val model=path/to/best.pt # val custom model

预测

使用已训练的 YOLO26n-姿势估计模型对图像运行预测。predict 模式 允许您对图像、视频或实时流执行推理。

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-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=yolo26n-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 模式的详细信息,请参阅 预测 页面。

导出

将 YOLO26n 姿势估计模型导出为 ONNX、CoreML 等不同格式。这使您能够将模型部署到各种平台和设备上,以实现实时推理

示例

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-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=yolo26n-pose.pt format=onnx # export official model
yolo export model=path/to/best.pt format=onnx # export custom-trained model

可用的 YOLO26-姿势估计 导出格式如下表所示。您可以使用以下方式导出为任何格式 format 参数,即 format='onnx'format='engine'。您可以直接在导出模型上进行预测或验证,即 yolo predict model=yolo26n-pose.onnx。导出完成后,将显示您的模型的使用示例。

格式format 参数模型元数据参数
PyTorch-yolo26n-pose.pt-
TorchScripttorchscriptyolo26n-pose.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-pose.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-pose_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-pose.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-pose.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-pose_saved_model/imgsz, keras, int8, nms, batch, device
TF GraphDefpbyolo26n-pose.pbimgsz, batch, device
TF Litetfliteyolo26n-pose.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-pose_edgetpu.tfliteimgsz, device
TF.jstfjsyolo26n-pose_web_model/imgsz, half, int8, nms, batch, device
PaddlePaddlepaddleyolo26n-pose_paddle_model/imgsz, batch, device
MNNmnnyolo26n-pose.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-pose_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-pose_imx_model/imgsz, int8, data, fraction, device
RKNNrknnyolo26n-pose_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-pose_executorch_model/imgsz, device
Axeleraaxelerayolo26n-pose_axelera_model/imgsz, int8, data, fraction, device

查看完整 export 详情请参见 导出 页面。

常见问题

Ultralytics YOLO26的姿势估计是什么以及它是如何工作的?

使用 Ultralytics YOLO26 进行姿势估计涉及识别图像中的特定点,即关键点。这些关键点通常代表对象的关节或其他重要特征。输出包括 [x, y] 每个点的坐标和置信度分数。YOLO26-姿势估计模型专为此任务设计并使用 -pose 后缀,例如 yolo26n-pose.pt。这些模型在诸如以下数据集上进行了预训练 COCO 关键点 ,可用于各种姿势估计任务。有关更多信息,请访问 姿势估计页面.

如何在自定义数据集上训练YOLO26-pose模型?

在自定义数据集上训练 YOLO26-姿势估计模型涉及加载一个模型,可以是 yaml 文件定义的新模型,也可以是预训练模型。然后,您可以使用指定的训练数据集和参数启动训练过程。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.yaml")  # build a new model from YAML
model = YOLO("yolo26n-pose.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

有关训练的详细信息,请参阅训练部分。您还可以使用Ultralytics 平台,以无代码方式训练自定义姿势估计模型。

如何验证训练好的YOLO26-pose模型?

YOLO26-姿势估计模型的验证涉及使用训练期间保留的相同数据集参数评估其准确性。示例如下:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-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

我可以将 YOLO26-姿势估计 模型导出为其他格式吗?如何操作?

是的,您可以将 YOLO26-姿势估计模型导出为 ONNX、CoreML、TensorRT 等多种格式。这可以通过 python 或命令行界面 (CLI) 完成。

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-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 YOLO26-姿势估计 模型及其性能指标?

Ultralytics YOLO26 提供了多种预训练的姿势估计模型,例如 YOLO26n-姿势估计、YOLO26s-姿势估计、YOLO26m-姿势估计等。这些模型在大小、准确性 (mAP) 和速度方面有所不同。例如,YOLO26n-姿势估计模型在 mAP姿势估计50-95 上达到 50.0,在 mAP姿势估计50 上达到 81.0。有关完整列表和性能详情,请访问模型部分



📅 创建于 2 年前 ✏️ 更新于 2 天前
glenn-jocherRizwanMunawarBurhan-Qambitious-octopusUltralyticsAssistantpderrengerY-T-Gjk4eMatthewNoycek-2feng@hotmail.com

评论