随着Oculus将于2020年初在Quest中加入手势识别功能这一消息发布,手势交互终于打破局面,开始真正走向消费端。
为什么普通摄像头+深度学习方案更适合VR/AR?
此次Oculus Quest手势识别使用了基于计算机视觉的手势识别的技术方案。(感谢凌感科技uSens费越博士对本文技术部分的支持)
VR陀螺从费越博士口中了解到,目前基于计算机视觉的手势方案实际上也分为两种:一种是用深度摄像头,一种是用一个或者多个普通摄像头实现。而其中深度摄像头的方案又分为两种,TOF(Time of Flight,光飞时间)和结构光。实际上结构光,或者TOF输出的东西基本一样,都是一张深度图。
相对于两种使用深度摄像头的方案,基于一个或多个普通摄像头实现的手势识别难度更高,但得益于技术发展,其在精度、成本综合性能上正在成为主流。业内的Leap Motion、凌感uSens就是使用这种方案,Oculus Quest也是使用原有的用于SLAM和手柄跟踪的四个灰度摄像头用深度学习算法来实现的手势识别。
凌感uSens自2015年就开始使用深度学习技术实现手势识别,并在2017年发布了和Oculus Quest类似的基于灰度摄像头的手势识别及SLAM方案。 不久前凌感还研发发布了单目RGB相机上的三维手势骨骼识别,可识别手部全部22个关节点的26DOF(26自由度)信息,关节点包括3D位置信息和3D旋转信息。在单目RGB相机上实现三维手势骨骼识别相对于多个灰度相机的方案来说算法的难度更高。
近年来TOF方案在手机上应用越来越广泛,也是最容易实现深度信息的方案,但在VR、AR设备上却几乎没有。原因可以从以下几个方面来看:
AR、VR对相机要求非常高,首先必须做到延迟非常低。据称,普通相机延迟可以达到4ms以下,从相机获取图像到把图像传过来的延迟都控制在10ms以下。但TOF相机难以做到,一般TOF相机获取图像的过程延迟约为四五十毫秒。因为TOF相机的工作原理不是拍一张图像,而是要连续拍多张图像,再根据图像不同的激光的相位,来还原出深度信息。而拍多张的后果导致延时高,并且要求一定的计算,也需要耗时。同时,这种方案还会有一些运动模糊,如果手动作特别快,在多张图像中的位置不同,也会导致信息测算不精准。
对于AR、VR来说,它的要求比一般手机识别人脸的要求高非常多。手不管动得多快,都必须有反应,需要精确、低延迟,不然容易产生眩晕。
TOF的第二个问题在于视角。在VR中追踪范围越大,手、手柄能够运动的幅度就越大,灰度相机配上鱼眼镜头可以视角达到160度以上,多相机系统可以达到200度以上的覆盖范围。但一般性能比较好的TOF,视角约为60度,最大也只有90度左右。
TOF在手机上可行,但对VR、AR应用来说,致命的就是延迟和视角。
所有VR、AR硬件低成本加入高精度手势识别成为可能
实现高精度手势识别的必要条件
得益于计算机视觉和深度学习技术的发展,终于能够在普通摄像头上实现精度较高的手势识别,当然要实现起来并没有那么简单。
根据资料,Facebook对VR的手势识别感兴趣的第一个迹象早就在2014年底显露出来。其收购了由4名资深手势识别技术专家组成的初创公司Nimble VR。但是收购之后,Oculus清楚地知道该技术“甚至可能不会在CV2或CV3中使用”。2016年的OC3大会上,首席科学家Michael Abrash预测在2021年的VR中能够使用基于手套上标记实现的手势识别,这时在Oculus的计划中仍然是手套形态。
不过在2018年的F8上,Oculus终于展示了高质量的无手套、无标记的手势识别,并提到这一“突破”是由于Facebook在机器学习研究上的大量投资而得以实现。
实际上,早在2015年,凌感基于普通相机+深度学习的方案已经研发出来。
要让手势识别实现更高的精度,识别更多的关节点是其中最基础的部分,比较高级的能够做到识别22个关节点26自由度的手部运动信息,如凌感uSens、Leap Motion以及Oculus收购的NimbleVR等。
另外,对手势识别精度起到决定性的还有两个因素:一个是模型是否好,只有好的模型才能预测出来更多3D的点。第二是需要有足够的高精度的数据,才能训练出来好的模型。
因为深度学习有推测功能,从不完全的信息可以推测出来完全的信息。手不像人脸,手的运动非常复杂,经常会出现遮挡问题,甚至两个手相互遮挡,所以信息是不全的,如何从不全的信息推理出来全的信息,就需要用到深度学习不断训练和积累。据称凌感的手势识别经过多年积累已经可以在被遮挡超过50%的情况下,将误差控制在5%以下。
利用现有SLAM摄像头实现手势识别
据费越博士称,VR、AR设备中加入手势识别,可以基于已有的用于SLAM的灰度摄像头直接实现,不需要增加外部硬件。
在inside-out追踪成为主流的如今,近两年无论是PC端VR头显还是移动端VR一体机,亦或是AR眼镜,几乎都加入了SLAM定位功能。这样的大前提为手势识别技术的普及带来了极为有利的条件。
目前大部分用于SLAM的摄像头均为鱼眼或者广角灰度摄像头,在实现的精度上,用同样的计算资源或者用同样复杂度模型的话,基于深度的或者灰度的摄像头能够做到精度最高,RGB的精度反而相对会弱一些,因此,直接在SLAM的相机上实现手势识别的精度也能够达到比较满意的效果。
另外,对于头显的功耗负担,据费越博士称,以凌感自己的产品为例,在同时运行SLAM定位追踪和手势识别的情况下,即使完全使用CPU的模式下,所占用的CPU的资源可以能够控制在30%以内,所以大部分的CPU运算能够留给软件运行。另外凌感的手势识别目前还针对高通、MTK、瑞芯微等芯片中的NPU做了移植,进一步降低了CPU资源占用。
此外,为了扩大手柄的追踪范围,目前的VR/AR头显采用了更多的摄像头,如Quest、Vive Comos使用4个摄像头,Rift S采用5个摄像头。之前手势需要手保持在眼前位置才能精准捕捉到,随着头显追踪摄像头的增加,也极大扩展了手的可捕捉范围。
“最自然交互”手势识别将成VR/AR头显标配
Oculus Quest带来利好信号
在Oculus Quest之前,手势识别实际上已经成为了AR眼镜中最基本的交互方式,而VR上Vive Focus等设备也都开启了尝试。
手势识别如果要大规模应用,仅靠以B端为主的AR难以实现。而在VR端,目前真正面向消费端的带有该功能设备以及相关应用都极其稀缺。
作为现阶段全球在消费端最有潜力的VR一体机,Quest上加入手势识别功能或许将打破这一现状。
实际上在使用基于计算机视觉方案之前,Oculus Touch手柄已经实现了一部分手势动作,如握拳、竖拇指、开枪等手势,包括Valve Index的指虎手柄,也是为了在游戏中呈现更为自然的手部动作。Quest加入手势识别,意味着这一技术终于真正开始面向消费端用户,也将带来更多开发者针对这一交互开发探索出更多的内容形态。
费越也提到,凌感的手势识别目前主要应用在三大领域,以AR、VR、手机为主的2C领域,汽车领域以及工业自动化领域,其中VR、AR、手机领域需求增长非常迅速。
最自然的交互方式
“交互的最终形态不需要定义,他做的就是人在真实世界里面要做的事情。”
VR、AR的独特之处在于沉浸感,而在沉浸环境中,最自然的交互莫过于与现实中一样,挥手打招呼、猜拳、握手、抓取、击掌……
从智能终端的发展来看,从PC到手机,一切都在简化,特别是在智能手机时代,交互简化到只需要滑动、点击,就连2、3岁的小孩都能轻易上手。
VR、AR的交互复杂,也代表着用户的学习成本越高,同时也容易“出戏”。现在除了纯观影类的内容之外,几乎所有带交互内容都需要一定的学习过程,用户需要在体验过程中记住每个按键所对应的功能。
即使Index指虎手柄能够感应到手指在其中的运动,不过对于更细致的骨骼追踪精度与专业的手势识别技术仍然有一定的差距,而且手柄会受到每个人手部大小的限制,也难以实现握手、双手合十、交叉等等复杂姿势。
手柄与手势两种交互方式各有优劣和适合的使用场景。比如手势无法实现手柄按键的物理反馈,特别是射击类型的游戏体验中,扣动扳机的反馈是手势绝对难以做到的;以及Index指虎手柄的压力反馈,能够在虚拟环境中呈现握力,手势识别亦无法实现。
而在诸如模拟、社交类这类的内容中,越接近真实的场景对于手势越有优势,开发者可拓展性也更强。
手势在需要触觉反馈的体验上无法取代手柄,而手柄也无法自然地实现手部动作的呈现以及复杂的手部姿态,但从毋庸置疑的是未来手势将会变成XR设备中不可或缺的一种交互方式,越来越普及。