使用 MediaPipe BlazePose 在设备上进行实时身体姿势跟踪

视频中的姿势估计起着至关重要的作用,它使数字内容和信息能够在增强现实、手语识别、全身手势控制甚至量化体育锻炼中叠加在物理世界之上,并可以成为瑜伽、舞蹈和健身应用的基础。健身应用的姿势估计尤其具有挑战性,因为可能的姿势种类繁多(例如,数百种瑜伽体式)、自由度众多、遮挡(例如,从摄像头看,身体或其他物体遮挡了四肢)以及各种外观或服装。

1729860676634.jpg1729860648170.jpg1729860661199.jpg

BlazePose 在健身和舞蹈用例上的结果。

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

1729860635133.jpg

MediaPipe 中的上身 BlazePose 模型

拓扑

目前人体姿势的标准是COCO 拓扑,它由躯干、手臂、腿部和面部的 17 个关键点组成。然而,COCO 关键点仅定位到脚踝和手腕点,缺少手和脚的比例和方向信息,而这些信息对于健身和舞蹈等实际应用至关重要。包含更多关键点对于后续应用特定领域的姿势估计模型(如手、脸或脚的姿势估计模型)至关重要。

借助 BlazePose,我们提出了一种包含 33 个人体关键点的新拓扑,它是 COCO、 BlazeFace和BlazePalm拓扑 的超集。这使我们能够仅通过与面部和手部模型一致的姿势预测来确定身体语义。

1729860620944.jpg

BlazePose 33 关键点拓扑作为 COCO(绿色)超集

概述:用于姿势追踪的 ML 管道

对于姿势估计,我们利用经过验证的两步检测器-跟踪器 ML 管道。使用检测器,该管道首先在帧内定位姿势感兴趣区域 (ROI)。跟踪器随后从此 ROI 预测所有 33 个姿势关键点。请注意,对于视频用例,检测器仅在第一帧上运行。对于后续帧,我们从前一帧的姿势关键点中得出 ROI,如下所述。

1729860604570.jpg

人体姿势估计流程概述。

通过扩展 BlazeFace 进行姿势检测

对于由姿势检测和跟踪模型组成的完整 ML 管道的实时性能,每个组件都必须非常快,每帧仅使用几毫秒。为了实现这一点,我们观察到,关于躯干位置的神经网络最强信号是人的脸部(由于其高对比度特征和相对较小的外观变化)。因此,我们通过做出强有力的(但对于许多移动和 Web 应用程序有效的)假设来实现快速而轻量级的姿势检测器,即在我们的单人用例中头部应该是可见的。

因此,我们训练了一个面部检测器,灵感来自我们的亚毫秒BlazeFace模型,作为姿势检测器的代理。请注意,此模型仅检测画面内人物的位置,不能用于识别个人。与Face Mesh和MediaPipe 手部跟踪管道(我们从预测关键点得出 ROI)不同,对于人体姿势跟踪,我们明确预测了两个额外的虚拟关键点,它们将人体中心、旋转和缩放牢固地描述为一个圆圈。受到达芬奇的维特鲁威人启发,我们预测了人物臀部的中点、围绕整个人物的圆的半径以及连接肩膀和臀部中点的线的倾斜角度。即使在非常复杂的情况下(例如特定的瑜伽体式),这也能够实现一致的跟踪。下图说明了这种方法。

1729860578440.jpg

除了脸部边界框之外,维特鲁威人还通过 BlazePose 检测器预测的两个虚拟关键点进行对齐

追踪模型

管道的姿势估计组件可预测所有 33 个人物关键点的位置,每个关键点具有三个自由度(x、y位置和可见性),以及上述两个虚拟对齐关键点。与当前采用计算密集型热图预测的方法不同,我们的模型使用回归方法,该方法由所有关键点的组合热图/偏移预测进行监督,如下所示。

1729860562530.jpg

跟踪网络架构:带热图监督的回归

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

下表显示了不同训练策略对模型质量的影响研究。作为评估指标,我们使用容差为 20% 的正确点百分比 (PCK@0.2)(如果 2D 欧几里得误差小于相应人体躯干尺寸的 20%,则我们假设该点被正确检测到)。为了获得人类基线,我们要求注释者对多个样本进行冗余注释,并获得了平均 PCK@0.2 为 97.2。训练和验证是在地理多样化的各种姿势数据集上进行的,这些数据集是均匀采样的。

1729860547689.jpg

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

1729860536306.jpg

应用

基于人体姿势,我们可以构建各种应用,例如健身或瑜伽追踪器。例如,我们展示了深蹲和俯卧撑计数器,它们可以自动计算用户统计数据,或验证所进行锻炼的质量。此类用例可以使用额外的分类器网络来实现,甚至可以使用简单的联合成对距离查找算法来实现,该算法匹配标准化姿势空间中最接近的姿势。

1729860522774.jpg

根据检测到的身体姿势,计数已执行的锻炼次数。左:深蹲;右:俯卧撑

结论

我们在MediaPipe中 发布了BlazePose的一个版本,该版本针对 Android、iOS 和 Python 上运行的上半身用例。BlazePose 还将通过即将发布的ML Kit中的Pose 检测 API提供给更广泛的移动开发者社区。除了移动领域,我们还预览了基于 Web 的浏览器版本。我们希望向更广泛的研发社区提供这种人体姿势感知功能,从而催生出创造性的用例,激发新的应用和新的研究途径。

我们计划通过更强大、更稳定的跟踪功能将这项技术扩展到更多种类的人体姿势和活动。在随附的模型卡中,我们详细介绍了预期用途、限制和模型公平性,以确保这些模型的使用符合Google 的 AI 原则。我们相信,发布这项技术可以推动整个研究和开发者社区成员提出新的创意和应用。我们很高兴看到您可以用它构建什么!

1729860510154.jpg

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 Optical Yong、Chuo-Ling Chang、Juhyun Lee、Michael Hays、Camillo Lugaresi、Esha Uboweja、Siarhei Kazakou、Andrei Kulik、Matsvei Zhdanovich 和 Matthias Grundmann。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论