推出 BlazePose:实现设备端实时人体姿态追踪

文 / Valentin Bazarevsky 和 Ivan Grishchenko,研究工程师,Google Research

增强现实手语识别全身姿态控制 以及 量化周期循环 等领域中,视频中的姿势预测可以将数字内容和信息叠加到物理世界,也可由此构成瑜伽、舞蹈和健身等应用的基础功能。健身应用的姿势预测尤其具有挑战性:由于运动时种类繁多身体姿态(如数百种瑜伽体式)、自由度很高、可能存在遮挡物(如从摄像头看到身体或其他物体遮挡四肢)以及各式服装或装饰等。

image image image

BlazePose 在健身和舞蹈应用上的示例

今天,我们推出一种全新人体姿态感知方法:BlazePose,我们已在 CVPR 2020 的 CV4ARVR 研讨会上进行过 介绍。我们的方法采用机器学习 (ML),从单帧画面推断人体的 33 个 2D 关键点提供人体姿态追踪。相较于当前基于标准 COCO 拓扑的姿态模型,BlazePose 可以精确定位更多关键点,因此特别适合于健身应用。此外,当前最前沿 (SOTA) 的方法主要依靠强大的桌面环境进行推理,而我们的方法通过 CPU 推理在手机端实现了实时性能。如果利用 GPU 推理,BlazePose 可以实现超实时性能,从而运行后续的 ML 模型,如面部或手部追踪。

image image

MediaPipe 中的上半身 BlazePose 模型

拓扑网络

人体姿态的当前标准是 COCO 拓扑,由横跨躯干、手臂、腿部和面部的 17 个关键点组成。不过,COCO 关键点只能定位脚踝和腕部的点,缺乏手和脚的比例和方向信息,而这些信息对健身和舞蹈等应用至关重要。因此,必须加入更多关键点,来用于手、脸或脚等特定域姿势预测模型的下游应用。

在 BlazePose 中,我们提供了 33 个人体关键点的新拓扑,这是 COCO、BlazeFaceBlazePalm 拓扑的超集 (Superset)。这样一来,我们可以仅从姿势预测中确定与脸部和手部模型一致的身体语义信息。

image

BlazePose 33 个关键点拓扑(COCO 绿色)

概览:姿态追踪的 ML 流水线

姿势预测利用了 经过验证 的两个步骤:检测器 - 追踪器 ML 流水线。流水线使用检测器首先定位帧内的姿态兴趣区域 (ROI)。追踪器随后根据此 ROI 预测所有 33 个姿态关键点。请注意,在视频用例中,检测器仅在第一帧上运行。后续帧将根据前一帧的姿态关键点得出 ROI,如下所述。

image

人体姿势预测流水线概览

通过扩展 BlazeFace 进行姿态检测

为了实现由姿态检测和追踪模型组成的完整 ML 流水线的实时性能,每个组件都必须足够快,达到每帧仅使用几毫秒的程度。要实现此目标,对神经网络来说,我们发现关于躯干位置的最强信号是人的脸部(由于其高对比度特征和相对较小的外观变化)。因此,我们假设单人样例中头部应当可见,这个很强的先验假设(但对许多移动和网页应用有效)可以实现快速轻便的姿态检测器。

受亚毫秒级 BlazeFace 模型启发,我们训练了一个人脸检测器作为姿态检测器的代理。请注意,这个模型只能检测在一帧图像内人的位置,而不能用于识别个人。

与从预测关键点中得出 ROI 的 Face MeshMediaPipe 手部 追踪流水线相比,对于人体姿态追踪,我们明确预测了两个额外的 虚拟 关键点,将人体中心、旋转和比例构建为一个圆。

受达芬奇的《维特鲁威人》所启发,我们预测了人的臀部中点、外接整个人的圆的半径以及连接肩部和臀部中点的直线的倾斜角度。这样一来,即使是非常复杂的情况,比如特定的瑜伽体式,也能得到一致的追踪。下图说明了这种方法。

image

维特鲁威人通过 BlazePose 检测器预测的两个虚拟关键点以及脸部边界框进行对齐

追踪模型

流水线姿势预测组件预测全部 33 个人体关键点的位置,每个关键点具有三个自由度(xy 位置和可见度),额外加上上述 两个虚拟对齐关键点。与当前采用计算密集型热力图预测的方法不同,我们的模型采用回归方法,由所有关键点的组合热力图/偏移预测 监督 ,如下所示:

image

追踪网络架构:热力图监督回归

具体来说,在训练过程中,我们首先采用 热力图和偏移损失 训练网络的中心和左塔。然后移除热力图输出并训练回归编码器(右塔),从而有效地利用热力图来监督轻量级嵌入向量。

下表为不同训练策略产生的模型质量的消融研究。作为评估指标,我们使用 20% 容差的正确点百分比 ([email protected])(我们假设如果 2D 欧几里得误差小于相应人体躯干尺寸的 20%,则可以正确检测到该点)。为了获得人类基线,我们要求注解者重复注解几个样本,并获得 97.2 的平均 [email protected]。训练和验证已在多种姿态的均匀采样的多样化数据集上完成。

image

为了涵盖广泛的客户硬件,我们提供了两种姿态追踪模型:精简版和完整版,二者在速度与质量的平衡上有所区别。对于 CPU 上的性能评估,我们使用 XNNPACK;对于移动 GPU,我们使用 TFLite GPU 后端。

image

应用

基于人体姿态,我们可以构建各种应用,比如健身或瑜伽追踪器。以深蹲和俯卧撑计数器为例,这两种计数器可以自动统计用户数据或验证运动的质量。这样的用例可以使用额外的分类器网络来实现,甚至可以使用简单的联合逐对距离查找算法,在归一化姿态空间中匹配最接近的姿态。

image

根据检测到的身体姿态计数的运动次数,左图:深蹲;右图:俯卧撑

结论

我们已发布适用于 Android、iOS 和 Python 上运行的 MediaPipe 上半身用例的 BlazePose 版本。BlazePose 还将在即将发布的 ML Kit 中通过 Pose detection API 提供给更广泛的移动开发者社区。除了移动领域,我们还开放了 基于网络的浏览器内预览版本。我们希望将这种人体姿态感知功能提供给更广泛的研究和开发社区后,能够催生出创新用例,刺激新的应用和新的研究途径。

我们计划将这项技术以更强大、更稳定的追踪功能扩展到更多种类的人体姿势和活动。在随附的 模型说明卡中,我们详细说明了预期用途、限制和模型的公平性,以确保这些模型的使用符合 Google 的 AI 原则。我们相信,这项技术可以为广大的研究和开发社区成员提供新的创意并推动新的应用。我们期待您的构建成果!

image image

BlazePose 在瑜伽用例上的结果

致谢

特别感谢与我们一起研究技术的所有团队成员:Fan Zhang、Artsiom Ablavatski、Yury Kartynnik、Tyler Zhu、Karthik Raveendran、Andrei Vakunov、Andrei Tkachenka、Marat Dukhan、Raman Sarokin、Tyler Mullen、Gregory Karpiak、Suril Shah、Buck Bourdon、Jiuqiang Tang、Ming Guang Yong、Chuo-Ling Chang、Juhyun Lee、Michael Hays、Camillo Lugaresi、Esha Uboweja、Siarhei Kazakou、Andrei Kulik、Matsvei Zhdanovich 和 Matthias Grundmann。

原文:On-device, Real-time Body Pose Tracking with MediaPipe BlazePose
中文:谷歌开发者公众号