文 / Ivan Grishchenko 和 Valentin Bazarevsky,Google Research 研究工程师
在移动设备上实时且同时感知人体姿态、面部特征点和进行手部追踪,可以实现各种各样具有影响力的应用,如:健身和运动分析、手势控制和手语识别、增强现实效果等。MediaPipe 是一个开源框架,专门用于加速推理(如 GPU 或 CPU)的复杂感知流水线,它为上述任务提供了快速、准确且独立的解决方案。要将它们全部实时组合成一个语义一致的端到端解决方案,难度特别高,这需要多个相互依赖的神经网络同时推理。
今天,我们怀着无比激动的心情发布 MediaPipe Holistic,可以克服上述难题的解决方案。它采用全新人体姿态拓扑,可以解锁全新用例。MediaPipe Holistic 采用一个新流水线,其中包含经过优化的 姿态、面部 和 手部 组件,每个组件均实时运行,最大程度降低了推理后端之间的内存转换,同时还对三个组件增加了互换性的支持,根据质量/速度进行权衡。MediaPipe Holistic 将这三个组件全部包括在内,形成了一个统一拓扑,可识别关键点超过 540 个(33 个姿态,每只手 21 个,468 个面部特征点),并且在移动设备上获得了接近实时的性能。MediaPipe Holistic 作为 MediaPipe 的一部分发布,可以在移动设备(Android、iOS)和桌面设备上使用。此外,我们还推出了 MediaPipe 新 API,供研究 (Python) 和网络 (JavaScript) 应用轻松使用这项技术。
上图* :MediaPipe Holistic 在运动和舞蹈用例中的展示结果;下图:识别“保持安静”和“打招呼”手势。请注意,我们的解决方案始终如一地将手部标识为右(蓝色)或左(橙色)
流水线和质量
MediaPipe Holistic 流水线整合了姿态、面部和手部组件的独立模型,每个组件均基于特定领域进行了优化。不过,由于它们的专业性不同,一个组件的输入并不是很适合其他组件。例如,姿态估计模型使用较低的固定分辨率视频帧 (256x256) 作为输入。但是,如果对该图片中的手部和面部区域进行剪裁,然后传递给相应的模型,由于图片分辨率过低,无法准确接合。因此,我们将 MediaPipe Holistic 设计为多级流水线,它使用适合区域的图片分辨率来处理不同的区域。
首先,MediaPipe Holistic 使用 BlazePose 的姿态检测器和后续关键点模型来估计人体姿态。然后,使用推理的姿态关键点提取每只手 (2x) 和面部共三个感兴趣区 (ROI) 剪裁,并利用重新剪裁的模型来改进 ROI(下文详述)。随后,流水线剪裁这些 ROI 的全分辨率输入帧,并应用任务特定的 面部 和 手部 模型来估计其相应的关键点。最后,将所有关键点与姿态模型的相应关键点进行合并,生成全部的 540 多个关键点。
MediaPipe Holistic 流水线概览
为了简化 ROI 的标识,采用的跟踪方法与独立的 面部 和 手部 流水线所用的方法类似。此方法假定对象在帧之间不会明显移动,使用前一帧的估计值作为指导来估计当前帧中的对象区域。不过,在快速移动时,跟踪器会失去目标,这要求检测器在图片中重新定位目标。MediaPipe Holistic 使用姿态预测(基于每一帧)作为附加 ROI 先验,从而在应对快速移动时缩短流水线的响应时间。此外,这还可以防止帧中某人的左右手或人体部位与其他人的混淆,从而让模型在人体及其各个部位之间保持语义一致性。
另外,姿态模型输入帧的分辨率非常低,以至于生成的面部和手部 ROI 的准确性过低而无法引导对这些区域重新进行剪裁,这需要精确的输入剪裁才能保持轻型。为了弥补这一准确性差距,我们采用轻型面部和手部重新剪裁模型,它们充当 空间变换器 的角色,只需要相应模型推理时间的 10% 左右。
MEH | FLE | |
---|---|---|
跟踪流水线(基准) | 9.8% | 3.1% |
无重新剪裁的流水线 | 11.8% | 3.5% |
有重新剪裁的流水线 | 9.7% | 3.1% |
手部预测质量 。每只手平均误差 (MEH) 使用手部大小进行标准化。面部特征点误差 (FLE) 使用瞳距进行标准化
性能
MediaPipe Holistic 要求在每帧多达 8 个模型之间进行协调,即 1 个姿态检测器,1 个姿态特征点模型,3 个重新剪裁模型,3 个手部和面部关键点模型。构建此解决方案时,我们不仅对机器学习模型进行了优化,而且还对各种算法(例如,仿射变换)进行了预处理和后处理,由于流水线较复杂,这在大部分设备上都需要花费大量时间。在这种情况下,将所有预处理计算移动到 GPU 后,根据设备不同,总体流水线速度提高了约 1.5 倍。因此,即使在终端设备和浏览器中,MediaPipe Holistic 的运行也接近实时性能。
Phone | FPS |
---|---|
Google Pixel 2 XL | 18 |
Samsung S9+ | 20 |
15-inch MacBook Pro 2017 | 15 |
各种中端设备的性能使用 TFLite GPU 按帧率 (FPS) 进行测量
流水线的多级特性还有两个性能优势。由于模型大部分是独立的,它们可以根据性能和准确率要求替换为更轻或更重的版本(或完全关闭)。此外,推理姿态后,可以准确知道手部和面部是否在框架边界内,从而允许流水线是否跳过对这些人体部位的推理。
应用
MediaPipe Holistic 具有超过 540 个关键点,目的是全方位同时感知肢体语言、手势和面部表情。它采用混合方法来支持远程手势界面,以及全身 AR、运动分析和手语识别。为了阐述 MediaPipe Holistic 的质量和性能,我们构建了简单的 远程控制界面, 它在浏览器中本地运行, 无需使用鼠标或键盘,即可实现令人叹服的用户互动。用户可以在屏幕上操控目标,坐在沙发上点按虚拟键盘,并且可以指向或触摸特定面部区域(例如,静音或关闭摄像头)。本质上,它依赖准确的手部检测,即后续手势识别映射到锚定在用户肩膀的“触控板”空间,从而实现长达 4 米的远程控制。
在不方便采用其他人机互动方式时,可以使用这种手势控制技术解锁各种全新用例。在我们的网络演示中试一试 并使用它来对您自己的想法进行原型设计。
浏览器内无接触控制演示。左图:手掌拾取器、触摸界面、键盘。右图:远距离无接触键盘。试一试吧!
MediaPipe 在研究和网络中的应用
为了加快机器学习研究及其在网络开发者社区的应用,MediaPipe 如今在 Python 和 JavaScript 中提供了现成可用但可以自定义的机器学习解决方案。我们从我们以前发布的内容开始:面部网格 和 手部 和 姿态(包括 MediaPipe Holistic 在内),未来会持续增加。直接在网络浏览器中试一试:对于 Python,请在 Google Colab 上的 MediaPipe 中使用笔记本;对于 JavaScript,请在 CodePen 上的 MediaPipe 中使用您自己的摄像头输入!
结论
我们希望在发布 MediaPipe Holistic 后,可以激励研发社区的成员构建独特的新应用。我们期待这些流水线为将来在具有挑战性的领域(例如,手语识别、无触摸控制界面或其他复杂用例)开展的研究开辟一些途径。我们盼望看到您使用流水线构建的成果!
复杂的动态手势。视频由 Bill Vicars 博士拍摄,已获得使用许可
致谢
特别感谢与我们一起研究技术的所有团队成员:Fan Zhang、Gregory Karpiak、Kanstantsin Sokal、Juhyun Lee、Hadon Nash、Chuo-Ling Chang、Jiuqiang Tang、Nikolay Chirkov、Camillo Lugaresi、George Sung、Michael Hays、Tyler Mullen、Chris McClanahan、Ekaterina Ignasheva、Marat Dukhan、Artsiom Ablavatski、Yury Kartynnik、Karthik Raveendran、Andrei Vakunov、Andrei Tkachenka、Suril Shah、Buck Bourdon、Ming Guang Yong、Esha Uboweja、Siarhei Kazakou、Andrei Kulik、Matsvei Zhdanovich 和 Matthias Grundmann。
原文:MediaPipe Holistic — Simultaneous Face, Hand and Pose Prediction, on Device
中文:谷歌开发者公众号