Deep learning + SLAM小综述

两个月前写的DL+SLAM研究现状综述,刚想起放到博客上。

 

 

 

 

随着近几年深度学习技术的火热,越来越多的研究工作尝试将深度学习引入到SLAM中去,有些工作也取得了较为不错的效果。本文尝试对相关工作进行简单梳理,并探讨深度学习+SLAM的可行性和发展方向。当然个人学识有限,如有疏漏之处望大家不吝指正。

 

首先上个人观点:长期来讲,深度学习有极大可能会去替代目前SLAM技术中的某些模块,但彻底端到端取代SLAM可能性不大。短期来讲(三到五年),深度学习不会对传统SLAM技术产生很大冲击。

 

下面结合具体工作谈谈这么说的理由。目前深度学习+SLAM有几个主要的研究方向:1)单目SLAM学习尺度/深度;2)相机重定位;3)前端提取特征和匹配4)端到端学习相机位姿;5)语义SLAM;

 

  1. 单目SLAM学习尺度/深度

单目纯视觉SLAM最大的问题是缺乏尺度信息,于是最直观的思路就是引入深度学习来脑补图像的尺度/深度信息。

代表工作其实有很多,但很大一部分是端到端架构,两个网络分别计算pose+depth直接出绝对轨迹,这类工作我放在后面端到端学习位姿部分中介绍,这里仅例举估计深度而不计算pose的工作。如TUM发表在CVPR17上的CNN-SLAM: Real-time dense monocular SLAM with learned depth prediction,将LSD-SLAM里的深度估计和图像匹配都替换成基于CNN的方法,取得了较为鲁棒的结果。

Deep learning + SLAM小综述_第1张图片

 

但个人认为用DL估算深度在原理上不是很站得住,DL擅长去做一些高层理解类的任务如特征估计图像匹配等,但深度估计太偏计算几何了。人眼去看一张图像也只能获得大概定性的深度远近,而无法得到精确定量的深度大小,这种任务对于DL来说实在有些强人所难了。而传统的深度计算方法,不考虑误差理论上是可以得到精确数学解的,深度学习无论如何也无法达到这样的解析精度。

实际上,相关工作的精度确实不高,CNN-SLAM在室内每个像素的平均误差约50cm,在室外则高达7米,相比传统三角化计算深度在精度上有一定差距。但优势在于鲁棒性较强,传统三角化所面临的视差太大太小问题在DL这里都不存在。

 

  1. 相机重定位/闭环检测

相机重定位/闭环检测通常需要对当前时刻各类传感器的信息进行特征提取,并与之前得到的历史数据进行搜索匹配,以便在跟丢后重新获取一个初始位置/判断是否到达了某个历史位置。

这一过程与传统的图像匹配有一定相似性,是比较适合用深度学习去完成的一类任务。

代表工作如DL+SLAM的开山之作——剑桥的论文:ICCV15的PoseNet,使用GoogleNet去做6-dof相机位姿的回归模型,并利用得到的pose进行重定位。

Deep learning + SLAM小综述_第2张图片

其结果在当时(15年)非常具有开创性,但其主要意义还是在于开创了一种新的思路,其实用性及精确度并不如传统重定位方案来的可靠。

 

  1. 前端提取特征和匹配

目前DL在图像领域最成功的应用即是feature engineering,因此用于前端特征提取和匹配是一个比较合理的思路。

 

Magic Leap 17年放出的文章Toward Geometric Deep SLAM提出了一种基于CNN的提取特征点及匹配方法,包含两个网络,第一个用于提取二维特征点,第二个用于输出二维特征点的单应矩阵。无需描述子,无需繁杂的图像预处理,高速轻量,在单核CPU上可达30fps。但代码未开源。

Deep learning + SLAM小综述_第3张图片

EPFL发表于ECCV16的LIFT: Learned Invariant Feature Transform提出了一种新型的深度网络,实现了完整的特征处理pipeline:包括检测,方向估计和特征描述。能提取出相比SIFT更加稠密的特征点,且给予了其端到端架构较好的解释性。

从实验结果看来在几个数据集上的表现吊打目前所有传统的及基于DL的特征方案(包括SIFT),但未给出运行时间数据,估计其速度应该比较堪忧。不过不考虑计算量已经做到了state-of-the-art。

Deep learning + SLAM小综述_第4张图片

 

DL用于特征提取及图像匹配是一个比较有潜力的方向,因为传统的特征提取、描述、匹配方案在数学上并没有一个非常清晰完整的解释,并且目前看来也很难用数学去进行清晰的描述:如SIFT、FAST各类特征点对图像的理解仅局限于非常有限的点信息,光流跟踪一直没有一个非常完美的数学框架。这一块去使用DL去进行high-level regression可能会取得意想不到的效果。同时,特征提取及描述一直是SLAM算法中的耗时大户,花费大量的计算才能得到比较鲁棒精确的结果,并且其中很多计算是不可避免难以优化的。那么利用DL直接出特征会是一个值得一试的思路,毕竟目前DL的优化方法数不胜数。

 

  1. 端到端学习相机位姿

端到端SLAM最大的优势即“端到端”:完全舍去前端提点跟踪、后端优化求解的一系列过程,直接输入图像给出位姿(或者位姿+深度)。

 

近一两年端到端SLAM的相关研究较多(因为粗暴无脑?),代表性工作如下:

16年印度理工的DeepVO是最早用DL去估计位姿的工作之一,采用了一种基于AlexNet的网络,仅使用CNN输入前后图像给出旋转角和平移的变化量。在同一场景下效果还ok,但换个场景效果惨不忍睹,几乎不具有泛化性。

Deep learning + SLAM小综述_第5张图片

Deep learning + SLAM小综述_第6张图片

Deep learning + SLAM小综述_第7张图片

另一篇发表于ICRA17上的DeepVO(名字一样,不同研究组的)在前一篇的网络基础上加进了串联的RNN,即在CNN后面又串联了LSTM,在网络中引入了时间尺度的信息。因此效果要大大好于前一篇DeepVO,但依然不如传统方法,并且泛化能力一般。

Deep learning + SLAM小综述_第8张图片

Deep learning + SLAM小综述_第9张图片

AAAI17的VINet: Visual-Inertial Odometry as a Sequence-to-Sequence Learning Problem使用图像加IMU数据将VIO当做一个序列到序列的学习问题来处理。使用了一个CNN和两个LSTM,在中间特征表示层面上融合视觉及IMU数据进行端到端训练,对相机进行绝对位姿估计。其精度可以媲美state-of-the-art,但由于是绝对位姿估计,必须在相同的场景中训练和测试,并没有解决领域迁移(模型泛化)问题。

与之类似的还有出自同一个实验室的CVPR17论文VidLoc。

Deep learning + SLAM小综述_第10张图片

Google CVPR17的SfM-Learner,利用光度一致性原理来估计每帧的depth和pose,其原理类似于直接法中优化光度误差。仅用一段单目视频就可以训练两个网络,分别输出pose和depth。在KITTI数据集上的效果优于不开闭环重定位的ORB-SLAM,但略逊于开了闭环重定位的ORB-SLAM。

Deep learning + SLAM小综述_第11张图片

还有同样来自Google的SfM-Net,可以说是SfM-Learner的升级版,除了计算pose和depth以外,还计算了光流,场景流,三维点云等,并且可以做场景运动目标分割。

 

ICRA18的UnDeepVO: Monocular Visual Odometry through Unsupervised Deep Learning,利用双目图像信息进行无监督训练网络得到尺度,并用于单目SLAM。在KITTI数据集上的效果高于前面的SfM-Learner和不开闭环的ORB-SLAM。

Deep learning + SLAM小综述_第12张图片

Deep learning + SLAM小综述_第13张图片

 

CVPR17的DeMoN: Depth and Motion Network for Learning Monocular Stereo,和前面的SfM-Learner较为相似,使用pose,depth作为监督信息,来估计pose和depth。

Deep learning + SLAM小综述_第14张图片

  

用DL做端到端SLAM非常简单粗暴,能够绕开许多传统SLAM框架中极为麻烦的步骤如外参标定、时间戳同步,同时避开前后端算法中许多棘手的问题。作为一种全新的思路具有一定的意义。

但同样端到端SLAM的问题也非常明显,和前面所说的深度估计类似,SLAM这样一个包含很多几何模型非常数学的问题,通过深度学习去端到端解决,在原理上是完全没有依据的,而且也没理由能得到高精度解。另一个很大的问题是模型的泛化性难以保证。目前的SLAM系统(视觉里程计)通常会有一个非常复杂的框架,从前端到后端每一步都有明确的目的,有完整的数学理论支撑,具有很强的解释性。而用高度依赖数据的DL去粗暴地近似SLAM系统,对于某些数据集可能效果不错,换个场景可能就无法跟踪。

事实上,目前的端到端深度学习SLAM确实在精度上并不能和state-of-the-art的传统方法媲美,同时在泛化性上表现较差。大部分工作无法直接用视频进行训练,训练过程较为麻烦。

 

  1. 语义SLAM

语义SLAM是SLAM未来发展的一个重要方向。目前SLAM领域对图像的理解通常只限于低级且有限的点特征,而理想的情况应当能像人类一样对图像进行高层语义层面理解。要实现这一目的,深度学习是一个非常有力的工具。因此,在语义SLAM方面也涌现出很多工作。

 

前面提过的CNN-SLAM除了用CNN估计深度外,还用了CNN做图像语义分割,然后将geometry和semantic融合起来,生成具有语义信息的地图。

Deep learning + SLAM小综述_第15张图片

16年的工作Semi-Dense 3D Semantic Mapping from Monocular SLAM在LSD-SLAM的基础上引入DL进行语义地图构建,本质上是做了二维语义分割,然后利用SLAM投影到三维空间中去。可在室内外环境工作。

Deep learning + SLAM小综述_第16张图片

ICRA17 best paper的Probabilistic data association for semantic SLAM在ORB-SLAM2的基础上引入DL来进行语义SLAM中的数据关联,语义识别物体,并将目标检测的结果作为SLAM前端的输入,与传统特征互补提高定位鲁棒性。难点在于detection结果的data association最好能和定位联合优化,即构建紧耦合优化,但前者是个离散问题。文章利用EM算法首次针对融合了语义信息的SLAM问题给出了求解思路。

Deep learning + SLAM小综述_第17张图片

 

18年的icra也有一些语义SLAM的论文,但貌似没有非常开创性的工作,关注与多帧间的语义数据融合,还有用语义数据来校正回环检测的。语义数据与SLAM的结合正在逐渐成熟,迅速发展。

  

目前用DL做语义SLAM的相关工作大部分是利用DL+SLAM进行语义地图构建,按照16年的大综述还处于婴儿期,很少有工作能反过来再将语义地图用来服务SLAM的。而后者应当是语义SLAM的最终目标,即像人类一样对环境进行高层语义理解,进而能解决动态背景、多相机协同等一系列目前SLAM中的难题。在这方面还有很长的路要走。

 

前面提到的这几个应用方向,个人认为按照靠谱程度去排个序:特征提取及匹配 > 闭环/重定位/深度估计 > 端到端SLAM。

总的来讲,从15年第一篇DL+SLAM的工作PoseNet出现,至今还不满三年的时间,DL+SLAM还是一个非常新有非常大探索空间的方向。其前景学界还没有一个定论,但有一点毫无疑问,DL的大潮是不可阻挡的,未来的SLAM中一定会融入DL技术,但怎么去融入,怎么才能融入好,都还不是一时半会可以解决的问题。

 

 

前两天去参加SLAM论坛,在圆桌讨论中国内几位知名SLAM学者(章国锋,沈劭劼,邹丹平,申抒含)也围绕DL+SLAM这一问题谈了谈各自的看法,总结如下。

 

章国锋:端到端SLAM不好,必须结合传统视觉方法,真正能把DL+SLAM做好的一定也需要对传统视觉方法有深入理解。并且DL方法太依赖于数据了,泛化性是一个很大的问题。对于无清晰数学模型支撑的模块,可以引入DL。

 

申抒含:目前2D视觉已经被DL统治了,传统方法基本gg。但3D视觉目前还未被攻占,SLAM领域一时半会还不会受到很大冲击。并且目前3D视觉有一套成熟可解释的理论框架,要远比黑盒的DL要好

 

沈劭劼:用DL是大势所趋,盲目地去抵触DL没有意义。但关键点在于,怎么去用DL?给出了两个观点:1)在一些调参很困难或者调参效果不好的模块去用DL近似。例如feature engineering,例如cost function优化。当人工调参到达瓶颈之后,去用DL会是一个较好的选择;2)用DL去做high-level regression。传统方法无法进行有效建模,此时利用高精度数据+DL去做regression会是好的选择。

端到端可以去做,但是不能盲目地堆网络,需要融合进先验(如特征点、如cost volume)。(事实上这也不是真正意义上的端到端了)

 

邹丹平:端到端SLAM不可能也没必要。不可能:目前传统SLAM方法state-of-the-art已经有了相当好的精确度和实时性,DL端到端SLAM很难效果更进一步。没必要:目前SLAM框架的后端/闭环重定位部分有非常清晰可解释的pipeline,每一步都有明确的目的,扎实的数学基础,是一个很好的白箱,用黑箱的DL去替换是本末倒置。

但是前段部分的匹配、光流等步骤一直以来没有非常清晰的数学模型支撑,非常适合用DL去解决。

 

总结一下:对于完全端到端SLAM各位老师基本持否定态度,但DL与SLAM技术的结合是大势所趋,尤其在SLAM的前端部分深度学习大有可为。短时间内DL不会对SLAM技术产生较大冲击,未来要引入DL也不意味着完整取代,一定是在传统方法基础上进行深度交融结合。

 

(和我之前的观点大致相同

你可能感兴趣的:(Deep learning + SLAM小综述)