uSens马赓宇:当人工智能遇上虚拟现实
7月21日下午WOTI2017主会场,uSens 技术研发副总裁马赓宇进行了主题为《当人工智能遇上虚拟现实》的精彩演讲。以下是演讲实录,让我们先睹为快!
大家好!我们公司凌感科技,英文名字叫uSens。我们公司专注在VR/AR三维人机交互核心技术,提供解决方案,并不开发VR眼镜、头盔等产品,但以后大家买的ARVR产品中里面可能会有我们的技术。
我先简单介绍一下我们对VRAR行业的理解,VR/AR中的核心技术首先是沉浸感,VR可以给用户带来和手机不一样的体验,就是沉浸感。首先要交互,在VR里边,交互技术不需要鼠标键盘,大部分使用手柄交互,但是手柄不是最自然的交互方式,未来可能想直接用手抓取,所以现在有裸手手势交互方案提供商。
还有位置跟踪,一些高档的VR设备可以提供位置跟踪,但是这些成本都比较高,而且都需要连接电脑或者主机才能实现。另外一个VR里边比较重要的是显示,当然我们公司不做显示方面的产品,显示技术不是我们擅长的。所以说我们主要集中在交互技术。另外一个重要的沉浸感就是移动性,不需要额外再接到什么设备上,否则它只能在小范围移动。移动性就是最好把一体机或者头盔戴在头上,大家就可以体验VR效果。
大众化最后一个特点是价格要低,比较好普及,可以吸引更多用户来使用它。我们公司主要做的是VR/AR技术,其中HCI是人机交互界面,我们主要提供有手势识别,还有头的转向跟踪,还有头的位置跟踪,后两点可以结合在一起。右边是显示技术,VR/AR显示技术不同,但交互技术可以通用,都是手势和位置跟踪。
未来VR/AR需要解决三个问题,一个是产品的碎片化,一个新的硬件,或者一个新的产品出来,早期总是会产生很多碎片,比如现在的AR产品,每个公司想抢占市场都会发布自己的产品,但又不想别的产品进来,封闭的环境,只能玩自己的游戏。还有内容的缺乏,手机端的VR内容都是比较单一的,而且体验比较差,还有待技术的进步。
去年、前年大家都说是VR元年,但那个时候VR/AR产品都是头盔,把手机插在头盔里可以简单体验VR效果,但实际用户可能就体验一下觉得没什么意思,这是最初级的VR体验。现在一些大厂商都是在进一步研发能带来更好沉浸感效果的VR技术,下一轮VR产品可能会给大家带来更好的用户体验。先说显示技术,这个略微带过一下,因为不是我们公司研究的重点。
显示技术里边比较核心的指标是FOV,就是视角。AR显示大家最诟病的就是视角很小,但是像人眼的视角,如果不考虑余光,实际上可能有180度,但至少要达到100度才能感到比较好的沉浸效果。像这三款都是AR眼镜,还有工业眼镜,都是AR的,他们主要的指标是FOV、分辨率和硬件尺寸。AR头盔尺寸比较大,因为里面要有放大的显示屏,但VR头盔以后可能会做的很小。下面介绍我们的技术的重点。
交互技术,现在把手势分成三类:第一种是符号型的手势进行交互,比如这个人做了一个OK的手势,可以通过图像或者什么方式识别出来,进行交互;第二种是拿着工具,比如这里拿锤子砸钉子,用手柄可以很好的模拟;第三种是用手直接和物体进行交互,这个就需要对手的三维模型进行精确的识别。
第一种硬件游戏手柄,是游戏机上最常用的,这三种都实现不了。第二类,现在VR里常用的是游戏手柄,比较适合拿着一个物体进行交互,比较自然。但是第一种和第三种,手势直接交互都是不能实现。如果要实现这三种,必须把手的形状都识别出来才可以。像hololens,可以识别两种手势,一种是点击,一种是手张开可以出现菜单,它就是用了符号手势进行交互。但是它没有后面两个功能,不能用手精确操作物体,不能用手抓一个物体。我们公司的产品可以实现这三种功能。
手的交互技术应用场景非常广泛,不光是在AR场景,比如游戏里可以用手势交互,第二是3D UI,第三是驾驶,虚拟点击命令。在一些公共场合的显示环境下,比如用户从卫生角度考虑,不想直接用手去碰按钮,这个时候有手势识别;还有手术环节,医疗手术里医生不能拿键盘拿鼠标进行交互,因为消毒的原因;还有在家里厨房做菜的时候也没法点屏幕翻菜单。
下面这是我们手势识别在AR上的demo,通过AR眼镜,这个手势是虚拟的,其他的场景都是真实场景,通过AR的方式显示出来,这个数字是提供手势的,可以识别手势,通过指尖和其他东西进行交互,把指尖和整个手的骨架都识别出来了,这只是一个技术演示,是我们去年发布会上的demo。手势识别和位置跟踪,右下角是真实的场景,他在头盔里看到的是AR场景,手势交互我们早期也开发了一些算法,这是早期的一些视频。
(播放视频)
这是我们最早开发的第一个版本,用指尖交互,那个时候只能识别手指指尖,可以用指尖在空中进行点和画画。第二个版本是识别手的轮廓了,相机看到的手的图像,可以3D把轮廓识别出来。而且,可以识别比较快的运动,不光是指尖,任何位置都可以进行3D交互。
大概2014年开始,我们用深度学习算法来解决手的识别问题,实际上手势识别虽然研究这个的人不多,但它也属于图像识别问题,跟人脸识别、图像识别一样,都可以用深度学习来做。这也有一个视频,这是我们用深度学习开发出来的26自由度手势识别算法,用深度学习算法我们可以从图像里边自动把手的关节点和关节点角度与位置自动识别出来。
我们公司还做了两方面技术,手势识别和运动跟踪。运动跟踪研究很长时间了,最早是在军事上使用,比如导弹、飞机,需要空中定位位置,优化以后用在智能机器人、无人车和扫地机器人上。VR/AR也是需要用空间定位技术,研发和掌握这些空间定位技术的是这些公司,比如Google Tango,几年前出的Tango平板,还有Microsoft hololens,高通,一些硬件厂商已经拿到他们的参考设计进行适用,效果很好。前段时间apple发布的ARKit,类似的技术还有Facebook,Snapchat,也想做相关应用。我们公司也完成了AR技术,空间定位技术,我们昨天刚发布了第一版,昨天也看到联想发布了他们的头盔,里边也集成了他们自己的技术,有机会大家可以去试一试。
空间定位技术,比较技术,简单科普一下。空间定位技术需要结合视觉和传感器两方面信息,视觉特征,这个模型大概是这样的,一个相机的成像,通过相机观测一个3D点,可以得到图像,3D点和图像满足下边投影方程,左边列了三个比较常用的问题。第一个是3D点的位置和3D点的投影,需要解相机的R、T,都在下面的方程里。XYZ是未知的,其他是已知的,要同时解空间定位和三角化的问题,已知的只有2D的投影U、V,同样是这个范围之内。
空间定位技术简单列举了分类方法,SLAM方法包含两个模块,一个是Tracking,已知3D点位置;一个是Mapping,更新3D点的位置。两种视觉特征,一种是基于图像特征点的方法,另外是比较经典的开源代码,最近几年是采用直接法,比较像素灰度差。下面是两种求解方法,刚才的方程用什么方法求解,一种是滤波的算法,另外一种是基于优化的算法,直接优化方程解一个方程组。这些方法目前没有说哪个好哪个不好,在实际系统里边用各种方法都可以达到类似的效果。
刚才说的是视觉方法,实际上近年这个方法已达到实用的程度,因为传感器的进步以及传感器信号融合到算法里边,使得系统得到提升。陀螺仪,左边这个图,中间如果高速旋转的话,整个设备旋转,但中间转子的方向是不变的,这样可以得到设备的旋转方向。但是这种方式可能早期几百年前的轮船里边会用,但现在高精度的陀螺仪都是用激光的方式,用激光陀螺仪,比如导弹在空中飞行几个小时,但误差只有几百米,或者100米之内。
这种激光方式中间有个激光源,它会向两个方向发射激光。如果这个物体静止不动的话,这两条光线的长度一样,比较这两条光线的相差就是0,如果这个物体旋转的话,这两个光路就会有稍微特别小的变化,中间产生的相差就会有,通过识别相差就能知道整个设备旋转速度。这里有两个扇片,物体旋转的时候不动,通过识别角度就可以知道它的旋转速度。这种微型化的陀螺仪精度会比激光差很多,如果单独用它的话是没法达到结果,所以必须要结合陀螺仪和视觉信息一起进行。
IMU中的陀螺仪输出的是相邻相机的旋转角度。左边的图里边显示的是有四个时段相机,每两个相机之间通过IMU得到它们的旋转角度以及加速度的值,实际加速度的值不能直接用来估计它的位置,只能用来估计速度,所以下面的公式有三个方程,这三个方程包含角度、速度和位置。第一个方程,下一个时刻的角度等于上一个时刻的角度乘上IMU估计出来的角度,这里面还包含了一些IMU的漂移以及噪声;第二个方程是速度,上一时刻速度加上重力产生的速度,以及IMU读出来的加速度;最下面的方程是位置的方程,加上速度产生的位移以及加速度产生的位移,加速度产生的位移就是二分之一立方,中学物理学学过的。所以说,IMU的约束在这个方程里边都表示了,刚才介绍的是图像产生的数,把这些约束都加一起就是IMU和图像融合得到的一个系统的方程。
实际传感器是有一些问题的。第一个,传感器的采样是离散的,而且有漂移,比如图里边连续的线是实际的加速度,但是IMU采样是离散的,所以并没有采样到,所以结果是有误差的;第二个,IMU得到加速度它是包含重力的,实际上重力产生的加速度是远大于一般的移动时候产生的加速度的,所以说要去掉重力就需要精确估计朝向;第三个,IMU的位置和相机的位置肯定是不在一起的,它们之间有相对位移,而且由于工业生产的原因,它们俩之间会相差一个很小的角度,一些研究发现,即使角度差一度,对最后整个系统的精度影响也会很大,所以在线标定他们之间的角度和位移;第四个,相机采样频率大概是60、30,但IMU采样频率很高,一般都是500、800、1000,采样频率、采样时间也是不一样的。
解决这些问题的方法,IMU采样率比图像高很多。2016年有人发表了一篇文章,预积分的方法,把图像之间IMU信息都集中起来,当成一个量,这样就不用细化每个帧IMU,据我所知,这个在所有系统中都在用;第二个,这个需要精确的标定,如果差很多的话,整个系统就完全崩溃了,不能工作了;最后一个技术也很重要,ATW,人运动时候开始,到他看到合成的虚拟场景真的产生运动,这个时间要少于20毫秒,人的运动开始,你看到的光线产生变化,这个时间要小于20毫秒,这样的话VR运用中用户才不会感到晕。
但是像我们整个过程,包括很多运算,第一个是图像获取的时间,算法处理的时间,还有渲染的时间,渲染的结果到最后显示的时间。这些里面有些是可以预测的,有些是可以通过IMU数据得到的,有些是只能经过预测的。像这里面第一个圈是图像,算法处理完之后,第二个时刻只能得到前面那个圈时刻的信息,但实际上后面这一段是有IMU数据的,可以把IMU数据集成到这里。所以说在第二个圈那个地方它得到的位置相对来说比较精确,但后面渲染的时候,渲染时间和显示时间,这个时候完全没有IMU信息,所以只能通过前面的模型把后半段预测出来,后面这部分误差比较大,但是通过这种技术还是可以明显的减小延迟,现在商用的VR产品里边都是用的这种技术。
我们的产品硬件也经过了几次迭代,从尺寸上和功耗上都比之前小很多,但它的外型都是双摄像头,这是一些指标,红线标出来的是效果影响比较大的。第一个是分辨率,必须是全局曝光的,手机里的摄像头都是快门,曝光时间不一样,会影响精度;第二个是硬件同步,我们是双系统,所以左右相机要同时采图,而不是分别采图。