Latest Post

元宇宙第一步腾讯推出中国首个虚拟音乐NFT 游辰星宇XR-Park混合现实智慧园区显示系统

AR是人工智能和人机交互的交叉学科基础技术包括CV计算机视觉、机器学习、多模态融合等借凌老师去年的一篇文章简单科普AR技术。

AR中的R是线c;相比之下VR中的R就是个山寨版的。那么A这个增强的概念就比较广大虚了笼统的说凡是能对R有附加额外的信息的都算。再次强调的是AR里面的信息是叠加到真实的场景里面的而不是虚拟的场景即VR里面的。一个有意思的小众研究方向是将一部分真实场景中的内容叠加到虚拟场景中学名AugmentedVirtualization简称AV。

图2中的例子也许能更好地反映AR和VR的区别。上方显示的是典型的VR设备和人眼接收到的VR影像下方则是AR设备和AR影像。简而言之VR和AR的区别是VR是趋近现实AR是超越现实。

按照Ronald Azuma在1997年的总结增强现实系统一般具有三个主要特征虚实结合实时交互和三维配准又称注册、匹配或对准。近二十年过去了AR已经有了长足的发展系统实现的重心和难点也随之变化但是这三个要素基本上还是AR系统中不可或缺的。

上图描绘了一个典型的AR系统的概念流程。从线c;经过数字成像然后系统通过影像数据和传感器数据一起对三维世界进行感知理解同时得到对三维交互的理解。3D交互理解的目的是告知系统要“增强”的内容。

在AR的技术流程中中间的对于环境和交互的精准理解就是目前的瓶颈了。上图中间的基于多模态简单说就是影像传感器的环境和交互理解是两个充满了各种或明或暗的坑的领域足以让很多假的猛士知难而退。

那么真的猛士将会直面什么样惨淡和淋漓的坑群呢下面我们来共同赏析几个常见坑型

1、环境坑据说人的脑细胞里面大多数都是用来处理和理解双眼所获取的视觉信息的很多我们惊鸿一瞥就能理解和感知的东西得益于我们强大的脑处理能力。各种环境变化对视觉信息的影响我们不但能轻松应对有时还能加以利用。比如我们的认知能力对光照明暗的变化相当的鲁棒比如我们可以通过阴影来反推三维关系。而这些对于计算机确切些说是计算机视觉算法来说都是不折不扣的坑或者大坑。总的来说成像环境的变化常常计算机视觉算法以及AR带来很大的挑战所以我把相关的坑统称环境坑。

2、学术坑对于环境和交互的理解重建基本上属于计算机视觉的范畴计算机视觉是一个有着半个世纪积累的领域和AR相关的学术成果可以成吨来计。夸张一点的说每篇都有坑区别只在大小深浅明暗。从实用的解决方案的角度来看学术论文尤其是新的论文一定要小心其中的设定和有些线c;多想一下诸如该算法是否对光照敏感是否可能在手机端达到实时等等。简单的建议是对于一篇计算机视觉的论文未有相关经验的观众请在有相关训练的成熟观众陪伴下谨慎观看。

3、上帝坑上帝是谁当然就是用户了。上帝的坑当然得长得有创意常常激起开发者灵光一动恍然大哭的。比如上帝说要能判别视频中人的性别80%的准确度100万。哇你是不是感动的热泪盈眶仁慈的上帝啊用各种时髦的方法轻松超额10%搞定。可是交货的时候上帝说你这个系统咋认不出我们家小baby的性别啊Oh my God你是不是又激动得想哭了。和环境坑比较像CV的算法很多时候是需要有假设的强烈的假设。那怎么办呢上帝总是正确的所以唯一的办法就是尽早教育上帝让他更加正确需要苦口婆心地尽早和用户科普以及尽量明确定义需求防范坑于未成。还不行的线c;请再加点工钱吧。

其实还有其他类型的坑比如开源代码坑这里就不详述了。那么这么一个充满忧患的领域为什么又会有那么多追随呢最重要的原因就是巨大的应用前景和钱景了。往小了说很多具体的应用领域比如游戏都已经成功地引入了AR的元素往大了说AR的终极形态可能从根本上改变当前的非自然人机交互模式请脑补微软Win95的成功和现在的HoloLens。上面说的那些坑在很多是应用上是可能避免的或者可能填得不那么深的。总的来说一个好的AR应用往往是需要算法工程实现、产品设计、内容制作等方面的深度结合。

三维配准是链接虚实的最核心技术没有之一。大致说来在AR中配准的目的是对影像数据进行几何上的精确理解。这样一来就决定了要叠加的数据的定位问题。比如说在AR辅助导航中如果想把导航箭头“贴在”路面上就一定要知道路面在哪里。在这个例子中每当手机摄像头获取到新一帧图像AR系统首先需要将图像中的路面定位具体的说就是在某个事先设定的统一的世界坐标系下确定地面的位置然后将要贴的箭头虚拟地放在这个地面上再通过与相机相关的几何变换将箭头画在图像中相应的位置通过渲染模块完成。

如前所述三维跟踪配准在技术上存在很多挑战尤其在考虑到移动设备有限的信息输入和计算能力的情况下。鉴于此在基于视觉AR的发展历程中经历了从简单定位到复杂定位的几个阶段下面简单介绍一下这个发展过程更多的技术细节在下一节讨论。

和大家如今广为使用的微信二维码原理一样二维码主要的功能在于提供稳定的快速的识别标识。在AR中除了识别以外二维码还兼职提供易于跟踪和对于平面进行定位的功能。因为这个原因AR中的二维码比一般的二维码来说模式显得简单以便于精确定位。下图给出了AR二维码的例子。

二维码的非自然人工痕迹很大得局限了它的应用。一个很自然的拓广是使用二维图片比如纸币、书本海报、相片卡牌等等。聪明的小白朋友一定已经发现二维码本身也是二维图片那为啥不把二维码的方法直接用到二维图片上呢哦是酱紫二维码之所以简单就是因为它上面的图案是设计出来的让视觉算法可以迅速的识别定位的一般的二维图片则不具备这种良好的性质也需要更强大的算法。并且不是所有的二维图片都可以用来进行AR定位的。极端情况下一个纯色的没有任何花纹的图片是无法用视觉的方法定位的。下图例子中两张卡牌用来定位两个对战重点的虚拟战士。

二维图片的自然扩展当属三维物体。一些简单的规则三维物体比如圆柱状可乐罐同样可以作为虚实结合的载体。稍微复杂一些的三维物体通常也可以用类似的方法处理或分解成简单物体处理如在工业修理中的情况。但是对于一些特定的非规则物体比如人脸由于有多年的研究积累和海量的数据支持已经有很多算法可以进行实时精准对齐。然而如何处理通用的物体仍然是一个巨大的挑战。

在很多应用中我们需要对整个周围3D环境的几何理解很长时间以来和可预期的一段时间以内这一直是个充满挑战的问题。近年来三维环境感知在无人车和机器人等领域的应用取得了成功的效果这让人们对在其在AR中的应用充满憧憬。然而相比无人车等应用场景AR中可以使用的计算资源和场景先验常常捉襟见肘。受此影响AR中的三维场景理解研发主要有了两个显而易见的思路一是多传感器的结合而是对于应用的定制。两个思路的结合也是实用中常见的手段。

在以上提到的技术中二维码和二维图片的识别跟踪技术已基本上成熟也已经有了广泛的应用。技术方面的发展目标主要是进一步提高稳定性以及拓宽适用范围。相比而言三维物体和三维场景的识别理解还有很大的探索空间即使是目前火爆的HoloLens所展现的令人惊艳的跟踪稳定性从追求完美的角度还有很多可以提升的空间。

由于识别跟踪的重要性下面简单介绍一下AR中的二维图片跟踪和三维环境理解。二维码的技术已经很成熟而应用有较受限制三维物体识别的技术大致上介于二维图片和三维场景之间所以就偷懒不提了。

一般情况下 AR中二维平面物体的跟踪可以归结为如下问题给定一个模板图片R在视频流中时刻检测该图片的相对相机的三维精确位置。比如在下图的例子中R是实现知道的人民币图片视频是从手机端实时获取的通常记为It (表示在时间t获得的视频图像而需要得到的是R在It 中的几何姿态通常包括三维旋转和平移记为Pt。换句线c;模板图片R通过由Pt表示的三维变换就可以被贴到它在图像It中的位置。跟踪结果的用途也很显然既然知道了这个姿态Pt我们可以用一个美元的图片以同样的姿态叠加到视频中来替换人民币从而达到6倍以上的炫富效果。好吧例子中没有那么俗气而是叠加了一个庄严的视频。

当然实际操作时候上面三个部分都各有讲究。比如1中对于T和R是否相似可能要考虑光照的变化2中如何定义姿态空间的邻域以及合理的邻域大小3中具体用什么样的优化算法来尽量对抗局部极值的干扰而又不能太耗时。不同的处理方式产生出了不同的跟踪算法其中典型的代表工作之一是ESM算法和它的一些变种。

ESM是EfficientSecond-order Minimization的缩写源自Benhimane和Malis在2004年在IROS上发表的工作。该算法采用重构误差平方作为衡量R和T相似性的指标然后对于姿态空间进行了在李群Lie Group上的重新构建使得搜索的步长更为理性在寻优上面使用的二阶近似的快速算法。这个算法的结构清晰各模块都可以比较容易的独立扩展所以在其基础上衍生出了不少改进算法通常是针对实用场景中不同的调整比如处理强光照或者运动模糊。

基于控制点的方法由于其实时高效成为目前业内主流方法。控制点类的方法并不直接对姿态Pt进行寻优而是通过控制点匹配的方法来计算Pt。控制点法的一个典型流程参见图9。其基本出发点在于使用图像中特别的点通常是角点来建立模板R和视频图像It的之间的映射通过该映射建立方程组然后求解出姿态Pt。比如说模板是一张人物的相片那么我们在视频中定位的时候并不需要对于脸上的所有点进行匹配而可以通过一些控制点眼角鼻尖嘴角等迅速定位。

稍微数学一点的解释是这样的由于姿态Pt是由若干参数一般是8个控制的那么求解Pt的一个办法是弄一个方程组出来比如说8个线c;那么我们就可以求出Pt了。那么这些方程怎么来呢我们知道Pt的作用是把模板R变到图像It中也就是说R中的每个点经过一个由Pt决定的变换就可以得到它在图像中的位置。那么反过来如果我们知道图像中的一个点比如眼角和模板中就是同一个点就是说他们匹配上了我们就可以用这一对匹配点给出两个方程X、Y坐标各一个这样的点就是所谓的控制点。当我们有了足够多的控制点对以后就可以求解姿态Pt了。

总结起来控制点法包括三个主要元素1控制点提取和选择2控制点匹配3姿态求解。控制点的基本要求一是要能从周围环境中脱颖而出减少位置上的歧义而是要经常而且稳定地出现易于找到。各种图像中的角点因此闪亮登场各种PK。比较知名的有SIFT、SURF、FAST等。注意上述排名分先后的按照能力来说越往前越好按照速度来说越往后越好。实际应用中可以根据用户机型做决定。那么这些点提取后就可以用了吗No一般来说还需要进行取舍一是要去掉没用的点即outlier二是使选取后的点尽量均匀以降低不必要的误差同时也要防止点太多带来的大量后续计算。控制点匹配的目的是在两个图像的控制点集间找到匹配的点对鼻尖对鼻尖眼角对眼角。通常这个由控制点之间的相似性和空间约束协同完成。简单的方法有紧邻匹配复杂的基本上二分匹配的各种变种bipartitematching or two-dimensional assignment。完成了匹配之后就可以求解得到姿态Pt了由于通常使用的点数远多于最小需求为了稳定性这里的方程数目远大于未知变量的数目所以最小二乘法之类的解法在这里会派上用场。

以上三个步骤初看起来泾渭分明实际使用时却经常是交织在一起的。主要原因是很难保证得到精确无误的控制点。有用的可靠控制点常常夹杂在各种真假难辨的山寨们一起到来所以经常需要往返迭代在三个步骤之间比如用RANSAC之类的方法选择控制点来得到服从大多数的姿态。相比直接法控制点法的基本算法框架比较成熟工程实现上的细节很大程度上决定了算法的最终效果。

这两类方法的优缺点有很明显的互补性所以一个自然的想法就是二者的结合具体的方式也有不同变种这里就不罗嗦了。

对于三维环境的动态的实时的理解是当前AR在技术研究方面最活跃的问题。其核心就是最近火热的“即时定位与地图构建”SLAMSimultaneouslyLocalization And Mapping在无人车无人机和机器人等领域也起着核心作用。AR中的SLAM比其他领域中一般难度要大很多主要是因为AR赖以依存的移动端的计算能力和资源比起其他领域来说要弱很多。目前在AR中还是以视觉SLAM为主其他传感器为辅的局面尽管这个情况正在改变。下面的讨论主要局限于视觉SLAM。

标准的视觉SLAM问题可以这么描述为把你空投到一个陌生的环境中你要解决“我在哪”的问题。这里的“我”基本上等同于相机或者眼睛因为单目即单相机请把自己想象成独眼龙“在”就是要定位就是localization“哪”需要一张本来不存在的需要你来构建的地图就是mapping。你带着一只眼睛一边走一边对周边环境进行理解建图一边确定在所建地图中的位置定位这就是SLAM了。换句线c;在走的过程中一方面把所见到相机拍到的地方连起来成地图另一方面把走的轨迹在地图上找到。下面我们看看这个过程大致需要哪些技术。

那么localization又是怎么回事呢如果有了地图即有了一个坐标系定位问题和前述2D跟踪在目的上基本一致当然更复杂一些。让我们考虑基于控制点的方法那么现在就需要在三维空间找到并跟踪控制点来进行计算了。很巧的是线c;上面的多视几何中也需要控制点来进行三维重建这些控制点就经常被共用了。那么可不可以用直接法呢Yes wecan但是如后面会讲到的由于目前AR中计算资源实在有限还是控制点法经济实惠些。

从三维重建的方法和结果SLAM大致可以分为稀疏、半稠密和稠密三类。下图中给出的典型的示例。

简单的说稠密SLAM的目的是对所相机所采集到的所有信息进行三维重建。通俗的说就是对看见的每一个空间上的点算出它到相机的方位和距离或者知道它在物理空间的位置。在AR相关的工作里面最近的影响力较大的有DTAM和KinectFusion前者是纯视觉的后者则使用了深度相机。由于需要对几乎所有采集到的像素进行方位计算稠密SLAM的计算量那是杠杠的所以不是平民AR比如一般的手机手握6S/S7/Mate8的朋友不要侧漏傲气这些统统都算“一般”。

稀疏SLAM的三维输出是一系列三维点云。比如三维立方体的角点。相对于实心的三维世界比如立方体的面和中腹点云所提供的对于三维环境的重建是稀疏的是以得名。实际应用中在这些点云的基础上提取或推理出所需要的空间结构比如桌面然后就可以根据这些结构进行AR内容的渲染叠加了。和稠密SLAM版本相比稀疏SLAM关心的点数低了整整两个维度从面堕落到点理所当然地成为平民AR的首选。目前流行的稀疏SLAM大多是基于PTAM框架的一些变种比如最近被热捧的ORB-SLAM。

顾名思义半稠密SLAM的输出密度在上述二者之间但其实也没有严格的界定。半稠密SLAM最近的代表是LSD-SLAM不过对于在AR中的应用目前还没有稀疏SLAM热门。

由于稀疏SLAM在AR中的流行度下面我们简单介绍一下PTAM和ORB-SLAM。在PTAM之前由A. Davison在2003年提出的单目SLAM开创了实时单目SLAM的先河。这个工作的基本思想还是基于当时机器人等领域的主流SLAM框架的。简单地说对于每一帧新到来的图像进行“跟踪-匹配-制图-更新”的流程。然而这个框架在移动端手机上的效果和效率都不尽人意。针对移动端AR的SLAM需求Klein和Murray在 2007年的ISMARAR领域的旗舰学术会议展示了效果惊艳的PTAM系统从而成为单目视觉AR SLAM的最常用框架暂时还是之一。

故事显然没有这样结束。我们都知道demo和实用是有差距滴何况还是学术界的demo。但是在PTAM思想的指引下研究人员不断的进行改进和更新。这其中的佼佼者就有上面提到的ORB-SLAM。ORB-SLAM由Mur-Artal,Montiel和Tardos在2015年发表在IEEETransaction on Robotics上由于其优异的性能和贴心的源码迅速获得工业界和学术界两方面的青睐。不过如果打算通读其论文的线c;请先做好被郁闷的心理准备。不是因为有太多晦涩的数学公式恰恰相反是因为基本上没有啥公式而是充满了让人不明觉厉的名词。为什么会这样其实和ORB-SLAM的成功有很大关系。ORB-SLAM虽然仍然基于PTAM的基本框架不过做了很多很多改进加了很多很多东西。从某个角度看可以把它看作一个集大成的且精心优化过的系统。所以区区17页的IEEE双栏论文是不可能给出细节的细节都在参考文献里面有些甚至只在源码里。在众多的改进中比较大的包括控制点上使用更为有效的ORB控制点、引入第三个线程做回环检测矫正另外两个分别是跟踪和制图、使用可视树来实现高效的多帧优化还记得集束约束吗、更为合理的关键帧管理、等等。

尽管近年来的进展使得单目SLAM已经能在一些场景上给出不错的结果单目SLAM在一般的移动端还远远达不到随心所欲的效果。计算机视觉中的各种坑还是不同程度的存在。在AR中比较刺眼的问题包括

单目视觉对于三维理解有着与生俱来的歧义。尽管可以通过运动来获得有视差的几帧但这几帧的质量并没有保证。极端情况下如果用户拿着手机没动或者只有转动算法基本上就挂掉了。

相机快速运动通常会带来两方面的挑战。一是造成图像的模糊从而控制点难以准确的获取很多时候就是人眼也很难判断。二是相邻帧匹配区域减小甚至在极端情况下没有共同区域对于建立在立体匹配之上的算法造成很大的困扰。

当相机做纯旋转或近似纯旋转运动时立体视觉无法通过三角化来确定控制点的空间位置从而无法有效地进行三维重建。

SLAM通常假设场景基本上是静止的。但是当场景内有运动物体的时候算法的稳定性很可能会受到不同程度的干扰。

对AR行业动态有了解的朋友可能会有些疑惑上面说的这么难可是HoloLens一类的东西好像效果还不错哦没错不过我们上面说的是单目无传感器的情况。一个HoloLens可以买五个iPhone6S那么多传感器不是免费的。不过线c;利用高质量传感器来提高精度必然是AR SLAM的重要趋势不过由于成本的问题这样的AR可能还需要一定时间才能从高端展会走到普通用户中。

单目AR即基于单摄像头的AR虽然有着很大的市场想想数亿的手机用户吧但是如上文所忧仍然需要解决很多的技术难题有一些甚至是超越单目AR的能力的。任何一个有理想有追求有情怀的AR公司是不会也不能局限于传统的单目框架上的。那么除了单目AR已经建立的技术基础外AR的前沿上有哪些重要的阵地呢纵观AR和相关软硬方向的发展历史和事态横看今天各路AR诸侯的技术风标不难总结出三个主要的方向语义驱动多模态融合以及智能交互。遵循业界造词的惯例我们将他们总结成

即“语义驱动的多模态增强现实和智能交互”。由于这三个方面都还在飞速发展技术日新月异我下面就勉强地做一个粗浅的介绍表意为主请勿钻牛角尖。

语义驱动语义驱动在传统的几何为主导的AR中引入语义的概念其技术核心来源于对场景的语义理解。为什么要语义信息答案很简单因为我们人类所理解的世界是充满语义的。如下图所列我们所处的物理世界不仅是由各种三维结构组成的更是由诸如透明的窗、砖面的墙、放着新闻的电视等等组成的。对于AR来说只有几何信息的线c;我们可以“把虚拟菜单叠加到平面上”有了语义理解后我们就可以“把虚拟菜单叠加到窗户上”或者地“根据正在播放的电视节目显示相关广告”。

相比几何理解对于视觉信息的语义理解涵盖广得多的内容因而也有着广得多的应用。广义的看几何理解也可以看作是语义理解的一个子集即几何属性或几何语义。那么既然语义理解这么好这么强大为啥我们今天才强调它难道先贤们都没有我们聪明当然不是只是因为语义理解太难了也就最近的进展才使它有广泛实用的可能性。当然通用的对任意场景的完全语义理解目前还是个难题但是对于一些特定物体的语义理解已经在AR中有了可行的应用比如AR辅助驾驶和AR人脸特效下图。

多模态融合随着大大小小的AR厂家陆续推出形形色色的AR硬件多模态已经是AR专用硬件的标配双目、深度、惯导、语音等等名词纷纷出现在各个硬件的技术指标清单中。这些硬件的启用显然有着其背后的算法用心即利用多模态的信息来提高AR中的对环境和交互的感知理解。比如之前反复提到作为AR核心的环境跟踪理解面临着五花八门的技术挑战有些甚至突破了视觉算法的界限这种情况下非视觉的信息就可以起到重要的补充支持作用。比如说在相机快速运动的情况下图像由于剧烈模糊而丧失精准性但此时的姿态传感器给出的信息还是比较可靠的可以用来帮助视觉跟踪算法度过难关。

智能交互从某个角度来看人机交互的发展史可以看作是追求自然交互的历史。从最早的纸带打孔到如今窗口和触屏交互计算机系统对使用者的专业要求越来越低。近来机器智能的发展使得计算机对人类的自然意识的理解越来越可靠从而使智能交互有了从实验室走向实用的契机。从视觉及相关信息来实时理解人类的交互意图成为AR系统中的重要一环。在各种自然交互中基于手势的技术是目前AR的热点。一方面由于手势的技术比较成熟另一方面也由于手势有很强的可定制性。关于手势需要科普的一个地方是手势估计和手势识别是两个紧密相关但不同的概念。手势估计是指从图像或者深度数据中得到手的精确姿势数据比如所有手指关节的3D坐标下图而手势识别是指判断出手的动作或姿态说代表的语义信息比如“打开电视”这样的命令。前者一般可以作为后者的输入但是如果手势指令集不大的情况下也可以直接做手势识别。前者的更准确叫法应该是手的姿势估计。

增强现实的再度兴起是由近年来软硬件的进展决定的是科学和技术人员几十年努力的推动成果。一方面很幸运我们能够赶上这个时代提供的机会另一方面我们也应该警惕过度的乐观需要脚踏实地得趟过每一个坑。