Skip to content

姿态估计

姿态估计示例

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

姿态估计模型的输出是一组点,表示图像中对象上的关键点,通常还附带每个点的置信度分数。当你需要识别场景中对象的特定部分及其相互位置时,姿态估计是一个不错的选择。


观看: 使用Ultralytics YOLO进行姿态估计。

观看: 使用Ultralytics HUB进行姿态估计。

Tip

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

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

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

模型

此处展示了YOLO11预训练的姿态估计模型。检测、分割和姿态模型在 COCO 数据集上进行了预训练,而分类模型在 ImageNet 数据集上进行了预训练。

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

模型 尺寸
(像素)
mAP姿态
50-95
mAP姿态
50
速度
CPU ONNX
(毫秒)
速度
T4 TensorRT10
(毫秒)
参数
(百万)
FLOPs
(十亿)
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 值是在 COCO关键点val2017 数据集上单模型单尺度的结果。
    通过 yolo val pose data=coco-pose.yaml device=0 复现。
  • 速度 是在 Amazon EC2 P4d 实例上对COCO验证图像进行平均的结果。
    通过 yolo val pose data=coco-pose.yaml batch=1 device=0|cpu 复现。

训练

在COCO8-pose数据集上训练一个YOLO11-pose模型。

Example

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n-pose.yaml")  # 从YAML构建新模型
model = YOLO("yolo11n-pose.pt")  # 加载预训练模型(推荐用于训练)
model = YOLO("yolo11n-pose.yaml").load("yolo11n-pose.pt")  # 从YAML构建并转移权重

# 训练模型
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

```bash

从YAML构建新模型并从头开始训练

yolo pose train data=coco8-pose.yaml model=yolo11n-pose.yaml epochs=100 imgsz=640

从预训练的*.pt模型开始训练

yolo pose train data=coco8-pose.yaml model=yolo11n-pose.pt epochs=100 imgsz=640

从YAML构建新模型,转移预训练权重并开始训练

``` yolo pose train data=coco8-pose.yaml model=yolo11n-pose.yaml pretrained=yolo11n-pose.pt epochs=100 imgsz=640

### 数据集格式

YOLO姿态数据集格式详情可在[数据集指南](../datasets/pose/index.md)中找到。如需将现有数据集从其他格式(如COCO等)转换为YOLO格式,请使用Ultralytics的[JSON2YOLO](https://github.com/ultralytics/JSON2YOLO)工具。

## 验证

在COCO8-pose数据集上验证训练好的YOLO11n-pose模型的[准确性](https://www.ultralytics.com/glossary/accuracy)。无需参数,因为`model`保留了训练时的`data`和参数作为模型属性。

!!! 示例

    === "Python"

        ```python
        from ultralytics import YOLO

        # 加载模型
        model = YOLO("yolo11n-pose.pt")  # 加载官方模型
        model = YOLO("path/to/best.pt")  # 加载自定义模型

        # 验证模型
        metrics = model.val()  # 无需参数,数据集和设置已记住
        metrics.box.map  # map50-95
        metrics.box.map50  # map50
        metrics.box.map75  # map75
        metrics.box.maps  # 包含每个类别的map50-95的列表
        ```

    === "CLI"

        ```bash
        yolo pose val model=yolo11n-pose.pt  # 验证官方模型
        yolo pose val model=path/to/best.pt  # 验证自定义模型
        ```

## 预测

使用训练好的YOLO11n-pose模型对图像进行预测。

!!! 示例

    === "Python"

        ```python
        from ultralytics import YOLO

        # 加载模型
        model = YOLO("yolo11n-pose.pt")  # 加载官方模型
        model = YOLO("path/to/best.pt")  # 加载自定义模型

        # 使用模型进行预测
        results = model("https://ultralytics.com/images/bus.jpg")  # 对图像进行预测
        ```

    === "CLI"

        ```bash
        yolo pose predict model=yolo11n-pose.pt source='https://ultralytics.com/images/bus.jpg'  # 使用官方模型进行预测
        yolo pose predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg'  # 使用自定义模型进行预测
        ```

在[预测](../modes/predict.md)页面查看完整的`predict`模式详情。

## 导出

将YOLO11n Pose模型导出为ONNX、CoreML等不同格式。

!!! 示例

    === "Python"

        ```python
        from ultralytics import YOLO

        # 加载模型
        model = YOLO("yolo11n-pose.pt")  # 加载官方模型
        model = YOLO("path/to/best.pt")  # 加载自定义训练模型

        # 导出模型
        model.export(format="onnx")
        ```

    === "CLI"

        ```bash
        yolo export model=yolo11n-pose.pt format=onnx  # 导出官方模型
        yolo export model=path/to/best.pt format=onnx  # 导出自定义训练模型
        ```

下表列出了可用的YOLO11-pose导出格式。您可以使用`format`参数导出到任何格式,例如`format='onnx'`或`format='engine'`。您可以直接在导出的模型上进行预测或验证,例如`yolo predict model=yolo11n-pose.onnx`。导出完成后,将显示您的模型的使用示例。

| 格式                                              | `format` 参数     | 模型                                            | 元数据   | 参数                                                                |
| ------------------------------------------------- | ----------------- | ----------------------------------------------- | -------- | -------------------------------------------------------------------- |
| [PyTorch](https://pytorch.org/)                   | -                 | `yolo11n-pose.pt`              | ✅       | -                                                                    |
| [TorchScript](../integrations/torchscript.md)     | `torchscript`     | `yolo11n-pose.torchscript`     | ✅       | `imgsz`, `optimize`, `batch`                                         |
| [ONNX](../integrations/onnx.md)                   | `onnx`            | `yolo11n-pose.onnx`            | ✅       | `imgsz`, `half`, `dynamic`, `simplify`, `opset`, `batch`             |
| [OpenVINO](../integrations/openvino.md)           | `openvino`        | `yolo11n-pose_openvino_model/` | ✅       | `imgsz`, `half`, `int8`, `batch`                                     |
| [TensorRT](../integrations/tensorrt.md)           | `engine`          | `yolo11n-pose.engine`          | ✅       | `imgsz`, `half`, `dynamic`, `simplify`, `workspace`, `int8`, `batch` |
| [CoreML](../integrations/coreml.md)               | `coreml`          | `yolo11n-pose.mlpackage`       | ✅       | `imgsz`, `half`, `int8`, `nms`, `batch`                              |
| [TF SavedModel](../integrations/tf-savedmodel.md) | `saved_model`     | `yolo11n-pose_saved_model/`    | ✅       | `imgsz`, `keras`, `int8`, `batch`                                    |
| [TF GraphDef](../integrations/tf-graphdef.md)     | `pb`              | `yolo11n-pose.pb`              | ❌       | `imgsz`, `batch`                                                     |
| [TF Lite](../integrations/tflite.md)              | `tflite`          | `yolo11n-pose.tflite`          | ✅       | `imgsz`, `half`, `int8`, `batch`                                     |
| [TF Edge TPU](../integrations/edge-tpu.md)        | `edgetpu`         | `yolo11n-pose_edgetpu.tflite`  | ✅       | `imgsz`                                                              |
| [TF.js](../integrations/tfjs.md)                  | `tfjs`            | `yolo11n-pose_web_model/`      | ✅       | `imgsz`, `half`, `int8`, `batch`                                     |
| [PaddlePaddle](../integrations/paddlepaddle.md)   | `paddle`          | `yolo11n-pose_paddle_model/`   | ✅       | `imgsz`, `batch`                                                     |
| [NCNN](../integrations/ncnn.md)                   | `ncnn`            | `yolo11n-pose_ncnn_model/`     | ✅       | `imgsz`, `half`, `batch`                                             |

在[导出](../modes/export.md)页面查看完整的`export`详情。

## 常见问题

### Ultralytics YOLO11的姿态估计是什么,它是如何工作的?

Ultralytics YOLO11的姿态估计涉及识别图像中的特定点,称为关键点。这些关键点通常代表对象的关节或其他重要特征。输出包括每个点的`[x, y]`坐标和置信度分数。YOLO11-pose模型专门为此任务设计,并使用`-pose`后缀,例如`yolo11n-pose.pt`。这些模型在[COCO关键点](https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco-pose.yaml)等数据集上进行了预训练,可用于各种姿态估计任务。更多信息,请访问[姿态估计页面](#pose-estimation)。

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

在自定义数据集上训练YOLO11-pose模型涉及加载模型,无论是通过YAML文件定义的新模型还是预训练模型。然后,您可以使用指定的数据集和参数开始训练过程。

```python
from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n-pose.yaml")  # 从YAML构建新模型
model = YOLO("yolo11n-pose.pt")  # 加载预训练模型(推荐用于训练)

# 训练模型
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

有关训练的详细信息,请参阅训练部分

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

验证YOLO11-pose模型涉及使用训练期间保留的相同数据集参数评估其准确性。以下是一个示例:

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n-pose.pt")  # 加载官方模型
model = YOLO("path/to/best.pt")  # 加载自定义模型

# 验证模型
metrics = model.val()  # 无需参数,数据集和设置已记住
更多信息,请访问Val 部分

我可以将 YOLO11-pose 模型导出为其他格式吗,如何操作?

是的,您可以将 YOLO11-pose 模型导出为多种格式,如 ONNX、CoreML、TensorRT 等。这可以通过 Python 或命令行界面(CLI)来完成。

from ultralytics import YOLO

# 加载一个模型
model = YOLO("yolo11n-pose.pt")  # 加载官方模型
model = YOLO("path/to/best.pt")  # 加载自定义训练的模型

# 导出模型
model.export(format="onnx")

更多详情请参阅导出部分

Ultralytics YOLO11-pose 模型有哪些可用,它们的性能指标是什么?

Ultralytics YOLO11 提供了多种预训练的姿态模型,如 YOLO11n-pose、YOLO11s-pose、YOLO11m-pose 等。这些模型在大小、准确性(mAP)和速度上有所不同。例如,YOLO11n-pose 模型实现了 mAPpose50-95 为 50.4,mAPpose50 为 80.1。如需完整列表和性能详情,请访问模型部分


📅 Created 11 months ago ✏️ Updated 3 days ago

Comments