新闻


谷歌开源基于 ML 的手部跟踪算法:手机端实时检测,多个手势同时捕捉

日期:2019-08-23 浏览量:691



能够对手的形状和运动轨迹进行感知是改善用户在不同的技术领域和平台上的体验的一个重要组成部分。例如,它可以实现手语理解和手势控制,还可以使数字内容和信息叠加在增强现实(AR,https://ai.googleblog.com/search/label/Augmented%20Reality)的物理世界之上。虽然对我们来说这个能力是天生的,但强大的实时手部感知是一项极具挑战性的计算机视觉任务,因为手往往会自我遮盖或相互遮挡(例如手指/手掌之间的遮蔽或者握手),而且手部之间也缺乏高对比度。

我们现在发布了一种新的手部感知方法,并且在 6 月的 CVPR 2019 大会上,我们已经对该方法开放了预览。在这个方法展示过程中,我们通过 MediaPipe——一个开放源码的跨平台框架,来构建了处理视频和音频等类型的不同模式感知数据的框架。

该方法通过机器学习(ML)从单个帧中推断出一只手的 21 个 3D 关键点,从而提供了高保真的手部和手指跟踪。目前最先进的方法主要依靠强大的桌面环境进行推理,而我们的方法可以在手机端实现这个实时性能,甚至还可以扩展到对多个手的同步跟踪。

我们希望通过提供该手部感知功能给广泛的研究和开发社区,能够有利于大家创造出更多全新的用例,同时激励更多新应用程序和新研究途径的出现。

图 1 通过 MediaPipe 在手机上进行实时 3D 手部感知。我们的解决方案是使用机器学习从一个视频帧计算手的 21 个三维关键点。图中深度通过颜色灰色程度表示。

用于手跟踪和手势识别的机器学习架构

我们的手部跟踪解决方案使用了一个机器学习架构,该架构由几个模型共同组成:

掌上检测器模型(称为 BlazePalm)。它对整个图像进行操作,并返回一个定向的手部边界框;手部标志模型。它在掌上探测器定义的裁剪图像区域上操作,并返回高保真的 3D 手部关键点;手势识别器,它将先前计算的关键点配置分类为一组离散的手势。这种架构类似于我们最近发布的 face mesh ML 模型(https://sites.google.com/view/perception-cv4arvr/facemesh),这个模型也被其他人用于的姿态估计中。将精确裁剪的手掌图像提供到手部标志模型中,可以大大减少更多数据(例如旋转、平移和缩放)的需求,从而使网络能够将其大部分性能用于协调预测精度。


图 2 手部感知模型整体架构

BlazePalm:实时手部/手掌检测

为了检测手的初始位置,我们使用了一个名为 BlazePalm 的单镜头检测器模型(https://arxiv.org/abs/1512.02325)。该模型可用于移动实时检测,其方式类似于 BlazeFace(https://arxiv.org/abs/1907.05047),这个模型也可以在 MediaPipe 中使用。

手部检测是一项非常复杂的任务:我们的模型必须要适应不同的手部尺寸,因此它具有相对于图像帧更大的范围 (~20x),并且它能够检测被遮挡以及自遮挡的手部状态。

人脸通常具有很高的对比度,例如在眼睛和嘴部区域都有明显的区别。但由于手部缺乏这样的特征,因此我们很难仅从其视觉特征中可靠地检测到这些特征。不过通过提供额外的信息,如手臂、身体或人的特征,倒是有助于精确的手定位。因此,我们的解决方案使用了不同的策略来解决上述挑战。

首先,我们训练了一个手掌检测器来代替手部探测器,因为推测例如手掌和拳头这样刚性物体的边界框比检测手指的关节要简单得多。此外,由于手掌是较小的物体,我们采用了非最大抑制算法(https://www.coursera.org/lecture/convolutional-neural-networks/non-max-suppression-dvrjH),该算法可以在即使双手自遮挡的情况(如握手)下,也能够达到很好的工作效果。

同时,手掌还可以使用方形边界框(在 ML 术语中的锚)来模拟,忽略其他高宽比,从而将锚的数量减少 3-5 倍。其次,我们将适用于更大场景上下文感知中的编码器—解码器特征提取器用于手部感知这样的小对象中(类似于 RetinaNet 办法,https://arxiv.org/abs/1612.03144)。最后,我们将训练期间的焦损降至最低,从而支持由于高度变化而产生的大量锚点。

利用上述技术,我们实现了对手掌的平均检测精度为 95.7%;而使用常规的交叉熵损失并且在没有解码器的情况下,检测精度基准仅为 86.22%。

手部标志模型

在对整个图像进行手掌检测后,我们随后的手部标志模型通过回归对检测到的手部区域内的 21 个 3D 手关节坐标进行精确的关键点定位,即直接对坐标进行预测。该模型将学习一致的内部手势表示,甚至对部分可见的手和自遮挡都表现出了鲁棒性。

为了获得实时数据,我们手工标注了 30K 张具有 21 个 3D 坐标的真实手势图像,如下图所示(如果存在对应的坐标,则从图像深度图中获取 Z 值)。为了更好地覆盖可能的手势,并提供对手势的几何形状的附加监督,我们还在不同的背景上渲染了一个高质量的合成手部模型,并将其映射到相应的三维坐标中。

图 3 第一行图片为对齐的手部通过实时标注传递到跟踪网络;第二行图片为使用实时标注渲染合成手部图像。

然而,单纯的合成数据很难推广到更广泛的领域。为了克服这个问题,我们使用了一个混合训练模式,下面的图显示了一个高级模型训练图。

图 4 手部跟踪网络的混合训练模式。裁剪的真实照片和渲染的合成图像用作输入,以预测 21 个 3D 关键点。

下图展示了根据训练数据的性质总结了回归的准确性。使用合成数据和真实数据都可以显著提高模型的性能。

图 5 使用合成数据和真实数据对模型性能的影响结果

手势识别器

在预测的手部骨架之上,我们应用一种简单的算法来推导手势。首先,每个手指的状态,例如弯曲或竖直,是由关节的累积角度决定的。于是,我们将一组手指状态映射到一组预定义的手势上。这种简单但有效的技术可以使我们在保证检测质量的情况下来估计基本的静态手势。现有的架构支持多种文化的手势计数,如美国、欧洲和中国,以及各种手势标志,包括「拇指向上」、紧握拳头、「OK」、「摇滚」和「蜘蛛侠」。

图 6 不同手势识别结果

通过 MediaPipe 实现

通过使用 MediaPipe,我们可以将该感知架构建模称模块化组件的有向图(https://en.wikipedia.org/wiki/Directed_graph),称为 Calculators(计算器)。Mediapipe 附带了一组可扩展的计算器,可用于解决各种设备和平台的模型推理、媒体处理算法以及数据转换等任务。而像裁剪、渲染和神经网络计算这样的单个计算器,可以独立在 GPU 上执行。例如,我们在大多数现代手机上采用 TFLite GPU 推理。

我们用于手部跟踪的 MediaPipe 架构图如下所示。该图由两个子图组成——一个用于手检测,另一个用于手部关键点(即标志性)计算。MediaPipe 提供的一个关键优化是只在必要时运行掌上检测器(因此该检测器的运行频率很低),从而节省了大量的计算时间。

我们通过从当前帧中计算所得的手部关键点来推断后续视频帧中的手部位置实现手部跟踪,从而无需在每个帧上运行掌上检测器。为了获得鲁棒性,手部跟踪器模型输出一个额外的标量,以获取一只手在输入裁剪中存在并合理对齐的置信度。只有当置信度低于一定的阈值时,才能将手部检测模型重新应用到整个帧中。

图 7 手部标志模型的输出(REJECT_HAND_FLAG)控制何时触发手部检测模型。这种行为是通过 MediaPipe 强大的同步构建块实现的,从而实现机器学习架构的高性能和最佳吞吐量。

该高效的机器学习解决方案可以实时运行,并且跨越各种不同的平台和形式因素。它所包含的复杂性要比上面的简化描述要复杂得多。为此,我们将在 MediaPipe 框架中开源上述手部跟踪与手势识别方法,并附带相关的端到端使用场景和源代码(https://github.com/google/mediapipe/blob/master/mediapipe/docs/hand_tracking_mobile_gpu.md),这为研究人员和开发人员提供了一个完整的堆栈,基于我们的模型可以对新思想进行实验和原型设计。

未来方向

我们计划通过更强大和稳定的跟踪来扩展这项技术,扩大我们能够可靠检测的手势数量,并支持动态手势的及时展开。我们相信,发布这项技术可以激发广大研究和开发人员的新创意和应用。我们很期待看到你的创新!

*MediaPipe

MediaPipe 是一个跨平台框架,用于构建应用于机器学习流程中的多模态(例如,视频,音频,任何时间序列数据)框架。通过使用 MediaPipe,我们可以将感知流程构建为模块化组件的图形,包括:推理模型(例如,TensorFlow,TFLite)和媒体处理功能。

MediaPipe 开源地址:https://github.com/google/mediapipe/

原文链接:https://ai.googleblog.com/2019/08/on-device-real-time-hand-tracking-with.html手势识别开源地址:https://github.com/google/mediapipe/blob/master/mediapipe/docs/hand_tracking_mobile_gpu.md




推荐新闻

移动设备的胜利 谷歌移动搜索量首次超过PC2015-10-24

北京时间10月9日消息,据《华尔街日报》网络版报道,当地时间周四,谷歌母公司Alphabet搜索业务掌门阿密特·辛格哈尔(Amit Singhal)在Recode Mobile会议上表示,今年夏季,全球范围内谷歌在移动设备上的搜索量首次超过PC。他说,这些数据不包括平板电脑。

谷歌推出新日历应用 可根据邮件帮你安排日程2015-10-24

【环球科技综合报道】据国外媒体11月4日报道,谷歌在日前发布了Nexus 9平板电脑和Android 5.0 Lollipop(棒棒糖)操作系统,但还有一项新推出的产品值得你关注——那就是新版谷歌日历应用程序。 在该应用程序中,谷歌添加了许多新的特性。它能自动检测你的Gmail(Google 的免费网络邮件服务)里安排的事务,并将其添加到日历里。它还能让你快速滚动浏览记录的所有事务。 新版日历应用采用了Material Design设计元素。谷歌在一篇博客里解释道,新版日历自动检测添加Gmail里信息的功能给大家省去了许多麻烦。人们无需花时间复制粘贴邮件里有关飞机、演唱会等行程的信息。而且一旦有新邮件显示原有的行程发生变动,该日历应用也会相应的自动更新。 新版日历应用省去了你繁琐的操作过程和大笔的时间。但是目前还只能在有Lollipop操作系统的设施上使用。不过用不了几周,人们就可以在装载有Android 4.1及以上操作系统的设备上下载使用该应用了。适用于iOS系统的谷歌日历应用也在处于研发中。

剧情反转?谷歌和华为正在开展合作,并且关系密切!2019-08-16

自从美国发布的“实体清单”禁令以来,华为就一度处在水深火热之中,众多与美国交好的国家都开始对华为发布禁止合作的信息,美国的很多企业科技巨头也是开始对华为进行一系列的断供,停止合作,例如微软、谷歌等,毫不疑问的说,华为在那段时间真的是非常艰难,一时间华为的发展前景让人担忧,好在华为并没有就此倒下,而是不断在提升自己,用自己的实力向世界证明华为不容忽视,如今华为公司已经在全球5G领域上遥遥领先,无论是诺基亚还是爱立信在5G方面都稍逊于华为!

谷歌向Facebook“亮剑” 推出装机广告服务2015-10-24

在新兴的移动广告市场,谷歌和Facebook形成了寡头垄断之势。不过有一个移动广告利润丰厚的细分市场,谷歌却面临了Facebook的巨大压力——那就是面向广大移动软件开发商的APP推广和装机广告。   在谷歌2015年的I/O开发大会上,谷歌终于开始向Facebook发起了反击。面向全球安卓软件开发者,推出了一系列的软件营销和装机广告服务。

谷歌将Android 10.0开源代码发送到AOSP2019-09-05

今天谷歌正式对外推送了Android 10.0正式版,而Pixel系列设备可以率先尝鲜。据Android Open Source Project项目透露的细节是,目前Android 10.0的源代码正在被谷歌上传至该项目,而后一些厂商就可以使用公开版的新系统,毕竟安卓系统一直都是开源,谷歌也有必要这样做。android-logo-2019.webp 对于想要在国外市场销售的安卓手机来说,光有开源系统显然是不够的,还要有谷歌授权的GMS移动套件,如果没有这些移动服务,那么基本不会有国外用户购买你的手机。

谷歌Chrome浏览器才是最大的技术垄断2019-09-05

你只需要知道,不管Chrome 再怎么好,谷歌都是一家卖广告的公司。