Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Pose Estimation

姿态估计会定位关节等关键点,以描述人体或物体的姿态。涵盖自顶向下、自底向上和单阶段方法,以及 OKS。

姿态估计是计算机视觉任务,旨在定位人体或物体上预先定义的一组关键点,例如人的肩部、肘部和膝盖,并将它们连接成描述姿势的骨架。模型会输出每个关键点在图像中的坐标或其 3D 位置,以及对应的置信度分数,以便应用测量关节角度、统计重复次数或识别动作。姿态估计描述每个人的站姿或动作;目标检测得到的边界框或实例分割得到的掩码都无法捕捉这些信息。

姿态估计的工作原理#

多人的 2D 姿态估计器采用以下三种策略之一,其中第三种与单阶段目标检测器类似:

  • 自顶向下: 人体检测器会找出图像中的所有人,然后单人模型在每个裁剪区域内预测关键点,例如 HRNet(2019)和 ViTPose(2022)。这种方法对体型较大且清晰可见的人准确率很高,但计算开销会随人数增加。
  • 自底向上: 网络会一次性找出图像中的所有关键点,然后将它们分组为不同的人。OpenPose(2017)会使用部位亲和场连接关节;部位亲和场是沿肢体方向指向的 2D 向量,因此在人群密集时,其计算开销仍基本不变。
  • 单阶段: 网络会在一次前向处理中,从同一个网格位置预测一个人的边界框和该人的所有关键点,无需裁剪或分组步骤。YOLO-Pose(2022)将这种设计引入 YOLO。

关键点位置可以通过热力图得到,即每个关键点对应一张概率图,峰值代表该关键点的位置;也可以直接回归坐标。多年来,热力图在基准测试中表现领先,但会占用内存,且受限于热力图分辨率。2021 年,残差对数似然估计 (RLE)通过正规化流学习预测误差的分布,缩小了回归方法之间的差距。YOLO26姿态模型是使用 RLE 训练的单阶段回归器:训练时,额外分支会预测每个关键点的不确定性,并由 RealNVP 流评估误差;模型融合以供推理时,这两者都会被移除,因此不会增加推理开销。

from ultralytics import YOLO

# 加载一个使用 COCO 的 17 个身体关键点训练的 YOLO26 nano 姿态模型
model = YOLO("yolo26n-pose.pt")

# 一次前向处理找出所有人及其关键点
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]

# 形状为 (人数, 关键点数, xy);保存绘制了骨架的图像
print(result.keypoints.xy.shape)
result.save(filename="pose_result.jpg")

打印出的形状表示检测到的人数、17 个关键点以及 2 个像素坐标;保存的图像会在每个人身上绘制对应的骨架。

2D 和 3D 姿态估计#

2D 估计器会返回像素坐标。3D 人体姿态估计会使用第二个网络从一系列 2D 关键点恢复关节的空间位置,例如 VideoPose3D;也可以通过三角测量多个经过校准的摄像头所看到的关键点,或者将 SMPL 等参数化人体网格拟合到图像上来实现。物体姿态估计是另一项任务:它会恢复刚性物体的 3D 旋转和平移,通常依据物体表面的关键点,用于机器人抓取和增强现实。

姿态估计评估#

COCO Keypoints基准包含约 25 万个人体标注,每人标注 17 个关键点;它使用目标关键点相似度(OKS)评估预测结果,这是交并比(IoU)在关键点任务中的对应指标。对于每个已标注关键点,预测位置与标注位置间的距离 d 会转换为相似度 exp(-d²/(2s²k²)),其中 s² 是该人物分割区域的面积,k 是根据标注者放置该关键点的一致程度测得的每个关键点的常数。OKS 对所有已标注关键点的相似度取平均,而平均精度均值(mAP)则对 0.50 到 0.95 之间的 OKS 阈值取平均。

import numpy as np

# COCO falloff constants: annotators place eyes far more consistently than hips
sigmas = {"eye": 0.025, "hip": 0.107}
area = 20_000  # person's segmented area in pixels (s squared)
error = 5.0  # predicted keypoint lies 5 pixels from its label

# Per-keypoint OKS term: exp(-d^2 / (2 s^2 k^2)) with k = 2 * sigma
for name, sigma in sigmas.items():
    similarity = np.exp(-(error**2) / (2 * area * (2 * sigma) ** 2))
    print(f"{name}: {similarity:.2f}")

同样偏差 5 个像素,在眼睛上的评分为 0.78,在髋部上的评分为 0.99。其他基准测试会使用不同的指标:MPII 报告 PCKh,即位于标签半个头部大小范围内的关键点占比;Human3.6M 等 3D 基准测试则报告以毫米为单位的关节平均位置误差。

实际应用#

  • 体育分析: 教练可以从普通视频中测量关节角度、步幅和挥杆动作,无需使用实验室动作捕捉设备上的反光标记。
  • 康复: 物理治疗应用可以在家中跟踪活动范围和锻炼姿势,而跌倒检测系统则会监测身体关键点是否下降到地面高度。
  • 动作识别: 骨架序列是用于分类挥手、跌倒或举重等动作的紧凑输入,并且不会受到服装和背景的影响。
  • 动物研究: 自定义关键点集可用于跟踪动物姿势,例如 Dog-Pose 数据集中每只狗的 24 个关键点,以研究步态和行为。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来