加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

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

发布时间:2019-08-27 03:42:28 所属栏目:建站 来源:杨鲤萍
导读:本文转自雷锋网,如需转载请至雷锋网官网申请授权。 就在不久前,Google 人工智能实验室宣布,他们在「实时手部跟踪」方面取得了新的进展,并将这项新技术运用在了 MediaPipe 中,这也是 AI 计算机视觉任务的一大突破。这一技术不光可以在手机上实现实时捕
副标题[/!--empirenews.page--]

本文转自雷锋网,如需转载请至雷锋网官网申请授权。

就在不久前,Google 人工智能实验室宣布,他们在「实时手部跟踪」方面取得了新的进展,并将这项新技术运用在了 MediaPipe 中,这也是 AI 计算机视觉任务的一大突破。这一技术不光可以在手机上实现实时捕捉性能,甚至可以同时对多个手的动作进行跟踪。目前,Google 已经将该项目开源,并且发布了相关博客介绍了这项技术,雷锋网 AI 开发者将其内容整理编译如下。

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

概述

能够对手的形状和运动轨迹进行感知是改善用户在不同的技术领域和平台上的体验的一个重要组成部分。例如,它可以实现手语理解和手势控制,还可以使数字内容和信息叠加在增强现实(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),这个模型也被其他人用于的姿态估计中。将精确裁剪的手掌图像提供到手部标志模型中,可以大大减少更多数据(例如旋转、平移和缩放)的需求,从而使网络能够将其大部分性能用于协调预测精度。

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

图 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 值)。为了更好地覆盖可能的手势,并提供对手势的几何形状的附加监督,我们还在不同的背景上渲染了一个高质量的合成手部模型,并将其映射到相应的三维坐标中。

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

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

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

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

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

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

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

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

手势识别器

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读