用于手部追踪的实时神经网络

最近,GoogleAI研究人员展示了他们用于实时跟踪手和确定手势的方法。 我参与了类似的任务,因此决定弄清楚他们是如何做出决定的,他们使用了哪些技术,以及它们如何在移动设备上进行实时工作期间达到良好的准确性。 还在Android上启动了该模型,并在实际条件下进行了测试。


为什么这很重要?


手识别是一项相当不平凡的任务,与此同时,需求量很大。 该技术可以用于与虚拟对象交互的其他现实应用中。 它也是理解手语或创建基于手势的控制界面的基础。

图片

有什么困难?


实时自然地感知手是计算机视觉的真正挑战,手经常彼此重叠或彼此重叠(手指交叉或握手)。 尽管面部在眼睛和嘴巴的区域具有高对比度的图案,但手中没有此类标记只能通过其视觉标记进行可靠的检测。

双手不断运动,改变倾斜角度并互相重叠。 为了获得可接受的用户体验,识别需要使用较高的FPS(25+)。 此外,所有这些都应该在移动设备上起作用,这增加了速度要求以及资源限制。

GoogleAI做了什么?


他们实施了使用机器学习(ML)精确跟踪手和手指的技术。 该程序确定3D空间中手的21个关键点(高度,长度和深度),并根据此数据对手显示的手势进行分类。 所有这些仅基于一个视频帧就可以在移动设备上实时工作,并可以通过多只手进行缩放。

他们是如何做到的?


该方法使用MediaPipe实施, MediaPipe是一种开放源代码的跨平台框架,用于构建数据处理管道(视频,音频,时间序列)。 类似于Nvidia的Deepstream,但具有许多功能和跨平台。

该解决方案包含3个主要模型,它们可以一起工作:

掌上探测器(BlazePalm)

  • 从视频中获取完整图像
  • 返回定向的边界框(bounding box)

确定手上关键点的模型

  • 拍摄手的裁剪照片
  • 返回3D空间中手的21个关键点+置信度指示器(本文稍后会详细介绍)

手势识别算法

  • 掌握关键点
  • 返回手显示的手势名称

该架构类似于姿势估计任务中使用的架构。 通过提供经过精确裁剪和对齐的手部图像,对数据增强(旋转,平移和缩放)的需求将大大减少,而模型可以专注于坐标预测的准确性。

掌上探测器


为了找到手掌,使用了一个名为BlazePalm的模型-一种优化用于实时在移动设备上工作的单发检测器 (SSD)模型。

GoogleAI的一项研究训练了手掌检测器,而不是整个手臂检测器(手掌是没有手指的手掌的底部)。 这种方法的优势在于,比用手势手指的整个手更容易识别手掌或拳头,并且还可以使用正方形的边界框(锚)来选择手掌,而忽略纵横比,从而将所需的锚点数量减少3-5倍

用于对象检测的特征金字塔网络 (FPN)特征提取器也用于更好地理解图像上下文,即使对于小型物体也是如此。

作为损失函数,采用了焦点损失,可以很好地解决生成大量锚点时发生的类不平衡问题。

经典交叉熵: CE(pt)= -log(pt)
焦损: FL(pt)=-(1-pt)log(pt)

有关Focall损失的更多信息,可以在Facebook AI Research的出色传呼器中找到(推荐阅读)

使用上述技术,平均准确度达到了95.7%。 使用简单的交叉熵且不使用FPN时-86.22%。

定义要点


在手掌检测器确定了整个图像中手掌的位置之后,该区域会向上移动一定的系数并扩展以覆盖整个手。 进一步在裁剪后的图像上解决回归问题-确定3D空间中21个点的确切位置。

为了进行训练,手动标记了30,000张真实图像。 还制作了逼真的3D手模型,并在不同背景下生成了更多人工示例。


上图:带有标记关键点的真实手部图像。 下图:使用3D模型制作的人造图像

手势识别


对于手势识别,使用了一种简单的算法,该算法通过手的关键点确定每个手指的状态(例如,弯曲或笔直)。 然后将所有这些条件与现有手势集进行比较。 这种简单而有效的方法使您能够以高质量识别基本手势。

最佳化


实时快速推理的主要秘密隐藏在一项重要的优化中。 花时间最多的手掌检测器仅在必要时启动(很少)。 这是通过根据手的先前关键点计算手在下一帧中的位置来实现的。

为了使该方法具有可持续性,标量中添加了另一种确定关键点的方法-标量,该标量表明模型对裁切后的图像上出现了手并且正确部署了手的信心。 当置信度值降至某个阈值以下时,手掌检测器将启动并应用于整个帧。


现实测试


我在Android设备(小米Redmi Note 5)上启动了此解决方案,以便在实际条件下进行测试。 该模型表现良好,可以正确映射手的骨骼并以每秒适当的帧数计算深度。


在这些缺点中,有可能注意到,随着手沿着框架的不断运动,精度和速度如何开始下降。 这是由于以下事实:模型在移动时会丢失手的位置,因此必须不断重新启动检测器。 如果找到移动的手的速度对您来说比手势的定义更重要,则应寻找其他方法。


当手与面部或相似的复杂背景相交时,也会发生一些问题。 否则,GoogleAI的出色工作将为技术的未来发展做出巨大贡献。

GoogleAI博客文章
Github Mediapipe手跟踪

Source: https://habr.com/ru/post/zh-CN466781/


All Articles