姿势估计

姿势估计是一项涉及识别图像中特定点的位置的任务,这些点通常称为关键点。关键点可以代表对象的各个部分,例如关节、地标或其他独特特征。关键点的位置通常表示为一组 2D [x, y] 或 3D [x, y, visible] 坐标。
姿势估计模型的输出是一组点,这些点代表图像中对象上的关键点,通常还包括每个点的置信度分数。当您需要识别场景中对象的特定部分及其彼此之间的位置时,姿势估计是一个不错的选择。
观看: Ultralytics YOLO26 姿势估计教程 | 实时目标 track 与人体姿势 detect
提示
YOLO26 姿势估计 模型使用 -pose 后缀,即 yolo26n-pose.pt。 COCO 关键点 数据集,适用于各种姿势估计任务。
在默认的 YOLO26 姿势估计模型中,有 17 个关键点,每个关键点代表人体不同的部位。以下是每个索引与其对应身体关节的映射关系:
- 鼻子
- 左眼
- 右眼
- 左耳
- 右耳
- 左肩
- 右肩
- 左手肘
- 右肘
- 左手腕
- 右腕
- 左髋
- 右髋
- 左膝
- 右膝
- 左脚踝
- 右脚踝
模型
此处展示了 Ultralytics YOLO26 预训练的姿势估计模型。detect、segment 和姿势估计模型在 COCO 数据集上进行预训练,而 classify 模型则在 ImageNet 数据集上进行预训练。
模型 首次使用时会自动从最新的 Ultralytics 版本 下载。
| 模型 | 尺寸 (像素) | mAP姿势估计 50-95(e2e) | mAP姿势估计 50(e2e) | 速度 CPU ONNX (毫秒) | 速度 T4 TensorRT10 (毫秒) | 参数 (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-姿势估计 | 640 | 57.2 | 83.3 | 40.3 ± 0.5 | 1.8 ± 0.0 | 2.9 | 7.5 |
| YOLO26s-姿势估计 | 640 | 63.0 | 86.6 | 85.3 ± 0.9 | 2.7 ± 0.0 | 10.4 | 23.9 |
| YOLO26m-姿势估计 | 640 | 68.8 | 89.6 | 218.0 ± 1.5 | 5.0 ± 0.1 | 21.5 | 73.1 |
| YOLO26l-姿势估计 | 640 | 70.4 | 90.5 | 275.4 ± 2.4 | 6.5 ± 0.1 | 25.9 | 91.3 |
| YOLO26x-姿势估计 | 640 | 71.6 | 91.6 | 565.4 ± 3.0 | 12.2 ± 0.2 | 57.6 | 201.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 | ✅ | - |
| TorchScript | torchscript | yolo26n-pose.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-pose.onnx | ✅ | imgsz, half, dynamic, simplify, opset, nms, batch, device |
| OpenVINO | openvino | yolo26n-pose_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-pose.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-pose.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-pose_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, device |
| TF GraphDef | pb | yolo26n-pose.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-pose.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-pose_edgetpu.tflite | ✅ | imgsz, device |
| TF.js | tfjs | yolo26n-pose_web_model/ | ✅ | imgsz, half, int8, nms, batch, device |
| PaddlePaddle | paddle | yolo26n-pose_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-pose.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-pose_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-pose_imx_model/ | ✅ | imgsz, int8, data, fraction, device |
| RKNN | rknn | yolo26n-pose_rknn_model/ | ✅ | imgsz, batch, name, device |
| ExecuTorch | executorch | yolo26n-pose_executorch_model/ | ✅ | imgsz, device |
| Axelera | axelera | yolo26n-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。有关完整列表和性能详情,请访问模型部分。