视觉SLAM(同步定位与地图构建)和深度学习的结合,这几年已经成为机器人领域的一个热门方向。这篇综述就是想系统梳理一下这个方向的最新进展——从前端跟踪、后端优化,到语义建图和不确定性估计,把主要的研究成果都过一遍,同时也对未来的发展趋势做个展望。希望能为从事移动机器人自主定位和建图研究的同行们,在理解和使用深度学习技术方面提供一些参考。
引言
这些年,机器人技术发展得很快,越来越多的机器人开始进入我们的视野,去完成那些重复性高、环境又危险的工作。其中,移动机器人因为灵活、可靠,已经成了研究的一个焦点。它的核心任务其实很明确:在没有人类干预的情况下,靠自身携带的传感器去感知环境、获取未知信息,然后对环境建模,最终实现自主导航和定位。而同步定位与地图创建技术,也就是SLAM,正是实现这个目标的主流方案。
SLAM最早在机器人领域应用时,目标是希望机器人在没有任何先验知识的情况下,能靠传感器的信息实时构建出周围环境的地图,同时根据这张地图反推自己的位置[1]。如果按传感器类型来分,SLAM可以分成基于雷达的和基于视觉的两大类。一个完整的视觉SLAM系统,通常包括传感器数据流、前端跟踪模块(也就是视觉里程计)、后端优化模块、回环检测模块和地图构建模块,如图1所示[2]。

图1 视觉SLAM系统框架
深度学习的兴起,让人工智能在计算机视觉的很多传统领域都取得了突破,比如目标检测、识别和分类。这几年,研究人员开始把深度学习引入视觉SLAM算法,这种结合发展得非常快,在精度和环境适应性上,已经显示出比传统算法更优的表现。
从2015年Kendall等[3]提出在视觉里程计中引入深度学习算起,经过差不多十年的发展,基于深度学习的视觉SLAM系统框架已经逐步成熟。在深度学习与视觉SLAM结合方面,也取得了不少进展[4-8]。其中,文献[4]比较早地对两者的融合方法做了深入调研,并展望了几个未来方向。不过当时语义SLAM的研究才刚刚开始,所以文中讨论得比较简单,没法做全面总结。另外,多数综述都只对SLAM系统的某几个方面进行归纳,比如视觉里程计和回环检测的总结[5],或者视觉里程计、回环检测和地图重建的调研[6-7]。值得一提的是,虽然也有专门讨论不确定性估计的综述[9-10],但它们大部分关注的是基于神经网络的不确定性建模,以及不同不确定性方法的对比。
基于以上分析,本文对深度学习下视觉SLAM方法涉及的几个主要模块——视觉里程计、回环检测、全局优化、语义SLAM以及不确定性估计——进行了分类讨论,如图2所示。同时,也讨论了现有模型的局限性,并指出这个领域未来可能的发展方向。

图2 基于深度学习的视觉SLAM现有方法的分类
深度学习下的视觉SLAM前端跟踪
SLAM前端跟踪,也叫视觉里程计,它的任务是通过传感器获取不同帧之间的感知信息,来估计移动机器人的运动变化[11]。核心目标就是利用传感器的测量数据,准确地预测机器人的运动,并输出相对位姿。在初始状态已知的情况下,系统可以通过这些相对位姿重构出全局轨迹。所以,保证位姿估计的精度,是实现高精度定位的关键因素[8]。
2.1 深度学习与视觉里程计
传统VO估计的流程包括相机标定、特征提取、特征匹配/跟踪、异常值剔除、运动估计、尺度估计和局部优化,系统架构如图3所示[12]。

图3 传统单目VO的框架图
卷积神经网络(CNN)在图像识别上的巨大成功,让研究人员看到了用它来处理VO问题的可能性。相比传统方法,深度学习可以自动提取图像特征,省去了繁琐的人工标注环节,使整个估计过程更直接、更简洁。根据网络训练方式和数据集是否使用标签,我们把VO分成有监督学习、无监督学习和自监督学习三种情况来讨论。
2.1.1 有监督学习VO
有监督学习VO的思路比较简单直接:给模型喂标注好的数据,让它学会从连续图像直接输出运动变换。具体来说,输入是一对连续帧图像,输出是包含平移和旋转信息的矩阵。
2015年,Konda等[13]提出了一个端到端的卷积神经网络架构,用来预测相机的速度和图像的方向变化。整个预测过程分两步:先提取图像序列的深度和运动信息,再估计序列的速度和方向变化。这算是最早把深度学习融入VO研究的成果之一。
Costante等[14]则通过学习图像数据的最优特征表示来估计视觉里程计。他们把稠密光流特征作为CNN网络的输入,设计了三种不同的网络架构:基于全局特征的CNN-1b、基于局部特征的CNN-4b,以及结合两者的P-CNN。这些方案对图像运动模糊和光照变化有很强的鲁棒性,但当图像序列帧间速度过快时,误差会变大,准确性也会下降。
在有监督学习VO模型中,DeepVO[12]算是效果比较好、应用也比较广的。它把CNN和递归神经网络(RNN)结合起来,实现端到端的视觉里程计学习。网络的框架如图4所示。DeepVO不依赖传统VO中的任何模块,而是直接从原始RGB图像或视频中推断出姿态。它可以自动学习有效特征表示,还能利用RNN隐式地学习图像间的内在联系和动力学关系。

图4 DeepVO网络的框架结构图
与传统方法相比,DeepVO在精度上没有绝对优势,但它学的是帧与帧之间的位姿关系,因此泛化能力不错,得到了广泛关注。后来的VINet算法[15]和Deep EndoVO算法[16]都是在它的基础上改进的,效果也都不错。
随着对高效小规模网络的研究深入,知识蒸馏作为一种轻量化小模型的方法,也成了深度学习领域的一个热点。2019年,Saputra等[17]首次把知识蒸馏用到位姿回归预测上,提出了一种基于对教师模型结果“信任”程度来附加蒸馏损失的方案,有效减少了网络参数量,增强了移动机器人的实时操作性。其他相关方法还有像Saputra等[18]在ICRA会议上探讨的课程学习方法,他们设计了CL-VO网络,利用几何感知目标函数,在训练中逐步提升数据复杂度。
总的来说,得益于机器学习技术、数据存储量和计算速度的发展,这些有监督学习方法可以从输入图像中自动获取相机的位姿变化,解决实际场景中视觉里程计估计的难题。
2.1.2 无监督学习VO
无监督学习不需要标注数据,学习目标是找出数据之间的关系。随着深度学习在计算机视觉领域的优势越来越明显,研究人员对探索无监督学习在视觉里程计中的应用也越来越感兴趣。
2017年,Godard等[19]在CVPR会议上提出了用无监督学习的方法进行单张图像的深度估计。他们利用图像的多目标损失来训练神经网络,使光度误差最小化,从而得到很好的视差图。需要注意的是,这种方法是在已知相机参数的情况下训练的。为了解决相机参数未知且左右相机不在同一平面的问题,Zhou等[20]提出了一种改进算法,既不需要双目相机,也不用知道相机参数。核心思路是通过深度CNN和位姿CNN两个网络,分别生成深度图和图像间的位姿,再根据这些信息将原图像投射到目标图像上,最后通过比较真实目标图像与投射图像的重建误差来训练网络。这种学习方法在网络结构设计、初始值设定和训练策略上都比较合适,是目前效果最好的无监督学习方法之一。不过作者也提到了一些尚待解决的问题:一是存在绝对尺度问题,深度预测不够完整,无法重建全局轨迹,影响全局定位精度;二是光度一致性计算没有考虑实际场景中可能出现的物体移动和遮挡。
针对尺度一致性问题,学者们提出了不少改进方案[21-23]。比如,Li等[21]在文[20]基础上改进,提出了UnDeepVO网络,通过左右图像分别估计位姿值和深度值,再利用立体图像对得到真实尺度的深度图,能恢复相机位姿的真实尺度。文[22]则用几何一致性损失函数来满足深度估计和位姿估计之间的尺度一致性约束,方法是将预测的深度图转换到3D空间,把局部深度重投影作为损失函数。
在改善位姿估计精度方面,Yin等[24]提出了GeoNet无监督学习框架,可以联合学习单目深度、光流和相机姿态。学习过程通过刚性结构重建器和非刚性运动定位器两个子任务,分别学习刚性流和目标物体的运动。GeoNet还引入了自适应几何一致性损失,增强了对遮挡和非朗伯区域的鲁棒性,提升了位姿估计精度。此外,Zhao等[25]也在精度改进方面做了不少工作。
自2014年Goodfellow等[26]提出生成式对抗网络(GAN)以来,它在计算机视觉、自然语言处理等领域越来越受重视。GANVO算法[27]就是在GAN基础上提出的生成式无监督学习框架,通过GAN和循环无监督学习来预测相机运动姿态和单目深度图。SGANVO[28]是它的改进版,由一堆GAN层堆叠组成,在对抗学习中进行深度估计和自我运动预测,通过增加网络层数,深度估计效果得到了很大改善。
传统的无监督深度估计需要利用双目图片进行自监督,但文[29]提出的SfM-Net网络只需要单目视频流就能恢复深度图和相机位姿。首先通过输入的单张图像生成深度图,然后融合成深度点云,再通过连续两帧图像计算位姿关系,并识别出场景中的运动物体。
相比有监督学习,无监督学习学到的特征更丰富、适应性更强。虽然在性能上还有差距,但在提供未知场景位姿信息方面,它的可扩展性和可解释性更好。
2.1.3 自监督学习VO
在传统VO中,想要获得场景像素点的深度真值很困难。自监督学习方法融合了深度学习框架和经典几何模型,为这个问题提供了方向。
第一种自监督学习法是以立体相机拍摄的图像对作为训练样本,根据视差与场景深度的关系,预测出目标图像的视差图并转换为深度图[30-32]。比如,文[30]用立体图像训练网络,以左右视差之间的双循环一致性作为目标函数,并引入自适应正则化损失,排除遮挡区域。Godard等[19]则用单张图像作为CNN输入,在全局范围内预测每个像素的场景深度,然后利用左右图像一致性损失增强左右视差图的一致性,使结果更准确。此外,Chen等[31]和Choi等[32]从训练策略入手,基于双目深度估计的结果来估计单目图像深度,获得了最佳性能。
另一种自监督深度估计的思路是使用视频序列中的连续帧作为训练样本[33-37]。由于连续帧之间的相机运动是未知的,所以既要估计目标图像的深度,还要预测相机位姿。伦敦大学的Godard等[33]利用深度估计和姿态估计网络,得到图像的逆深度估计和相机位姿估计,再把相机位姿与视差计算的光度投影误差作为损失函数,利用梯度下降优化,提升了算法处理遮挡场景的鲁棒性。Li等[34]利用连续帧之间的时序约束进行自监督学习,把自监督学习VO表示为一个序列学习问题,通过LSTM网络集成序列信息,用对抗学习解决位姿估计中的误差积累,为后端提供了更精确的深度和位姿估计。Zhan等[36]把学习到的深度和光流预测整合到传统VO测量模型中,取得了有竞争力的性能。Li等[37]还提出了基于元学习的在线自监督学习方法。
研究表明,与传统单目VO或视觉惯导里程计相比,将深度学习与传统方法相结合的自监督方法性能更优越[38]。这个结论从侧面说明了自监督领域发展的巨大潜力。
2.2 深度学习与视觉惯导里程计
高精度导航和定位是自动驾驶的核心技术之一。传统视觉里程计方法由于遮挡、尺度不确定性、位置偏移和低帧率等问题,很难达到实际应用需求。相比之下,惯性测量单元(IMU)设备价格低廉,可以直接获得角速度和加速度数据,达到理想的定位效果。所以,在传统VO中融入惯性信息,是提升系统精度和稳定性的有效方案,也取得了一定成果[39-41]。
深度学习是一种端到端的学习方式,在模型训练时直接从原始数据学习到期望输出的映射。与传统方法相比,基于深度学习的视觉惯性里程计(VIO)最大的优势是不用手动提取特征,完全靠数据驱动,能利用数据本身的信息实现深度预测。近年,对这个领域的探索开始引起许多研究者的关注。
VINet网络[15]首次提出结合IMU信息,通过深度神经网络框架解决VIO问题。它用CNN从相邻帧图像中提取视觉运动特征,用LSTM网络建模IMU的惯导特征,然后利用特殊欧氏群把两者结合,预测相机位姿。VINet减少了对手动同步和校准的依赖,在同步误差方面也表现出更强的鲁棒性。
文[42]利用在线纠错OEC模块进行了VIO无监督网络设计,在没有IMU内在参数或缺失外部校准的情况下,将RGB-D图像与惯性测量直接结合,根据像素缩放图像投影误差的雅可比行列式生成运动轨迹。DeepVIO是Han等[43]提出的一种端到端自监督学习框架,用双目序列估计场景深度和密集3D几何约束作为监督信号,结合IMU数据获取绝对轨迹估计。与传统方法相比,DeepVIO减少了相机与IMU校准不正确、数据不同步和丢失的影响,在准确性和数据适应性方面表现更突出。
基于深度学习的VIO方法已被证明是成功的,但这些方法并没有完全解决多传感数据的鲁棒融合策略问题。针对这个问题,Chen等[44]提出了一种新的单目端到端VIO多传感器选择融合策略,融合单目图像和惯性测量单元,根据外部环境和内部传感器动态数据估计运动轨迹,提高了鲁棒性。他们还提出了不同掩码策略下的融合网络模式,在数据损坏的情况下表现出更优性能。
在很多室内外场景中,面对不同的尺度因子,单目SLAM系统需要对相机和IMU之间的空间变换和时间偏移进行标定。针对这一限制,Lee等[45]利用光流神经网络的思想,以连续相邻帧作为输入,提出了一种不需要标定的VIO学习框架,适用于计算能力不高且需要实时处理信息的VIO系统。为了解决单目视觉SLAM实时重构真实尺度场景的困难,浙江大学左星星博士提出了实时的CodeVIO方法[46],采用新的单目相机惯导定位与稠密深度图重建策略。该方法结合深度神经网络与传统状态估计器,利用轻量级的条件变分自动编码器(CVAE),把高维的稠密深度图编码为低维的深度码,提高了稠密深度估计的准确性。CodeVIO一方面利用VIO稀疏深度图的信息,以稀疏视觉特征点的深度作为神经网络输入;另一方面使用高效的网络雅可比矩阵计算方法,使网络在实时单线程运行的同时,具备很强的泛化能力和更高数量级的计算效率。
此外,Liu等[47]提出InertialNet网络,训练端到端模型来推导图像序列和IMU信息之间的联系,预测相机旋转角度。Kim等[48]将不确定性建模引入无监督损失函数中,在不需要用真值协方差作为标签的情况下学习多传感器间深度与位姿的不确定性,克服了学习单个传感器时的不确定性和局限性。文[49]提出了一种新的基于深度学习模型的相机和IMU传感器融合算法,用于预测无人机系统的3D运动。
2.3 方法总结与对比分析
近些年,结合深度学习的视觉SLAM方法越来越受到研究者的高度关注。现有基于深度学习的VO估计方法的性能对比如表1所示。由于各算法的测试数据集和评估性能各有差异,难以精确对比,因此表中只列出了各算法在特定测试条件下的定位误差作为参考指标。需要强调的是,误差的性能指标值越小,说明算法的尺度一致性越佳,定位越准确。
表1 现有基于深度学习的VO估计方法的性能对比

从现有的成果来看,深度学习在SLAM领域取得了一定进展。与无监督学习方法相比,有监督学习方法表现出的尺度漂移误差更小、跟踪鲁棒性更佳。从深度估计结果来看,目前提出的基于无监督/自监督的VO算法都能达到较好的预测效果。
值得一提的是,无监督学习是通过学习数据之间的规律来提取输入图像特征的,所以能学到更丰富多样的特征表征,在未知场景下具有更好的适应性和泛化能力。
自监督学习方法既保留了传统算法的特点,又融合了深度学习的优势,能够较好地恢复场景尺度,与无监督学习相比更有优势。比如,自监督模型D3VO方法[38]的跟踪精度甚至超过了现有的单目深度视觉里程计或视觉惯导里程计系统。当然,在特定限制的任务环境中,具体采用哪种学习方式还需要根据具体情况来决定。
近年来,将惯性单元数据与相机地标信息进行融合,已成为构建高精度、高鲁棒SLAM系统的重要途径。部分现有基于视觉/惯性融合的视觉SLAM算法的总结如表2所示。表中,表示平均平移误差百分比,ATE表示绝对轨迹误差,RE表示旋转误差,RMSE表示均方根误差。不难看出,基于学习的VIO研究虽然才起步,但在定位精度、尺度一致性以及运动轨迹生成等方面表现突出。另外,IMU和相机之间具有较强的互补性,两者融合是提升SLAM系统精度和鲁棒性的重要途径。
表2 现有视觉惯导里程计融合算法的简要比较

总的来说,深度学习在SLAM中的实际应用效果虽然还不是特别理想,但毫无疑问,这个领域已经成为近年来的研究热点。
深度学习下的视觉SLAM后端优化
SLAM的后端优化主要是对不同时刻视觉里程计预测得到的相机位姿以及局部地图进行优化调整。在VO中,无论是位姿估计还是建图,都只利用相邻帧之间的运动信息,这很容易导致误差逐帧累积,最终产生较大的累积漂移[11]。在对这些区域进行地图重构时,可能会导致与同一区域已建地图不重合,出现重影现象。所以,有必要把所有地图数据放到一起做一次全局优化,降低系统各部分的误差,提高准确性。因此,为了减小误差漂移对SLAM系统性能的影响,后端优化至关重要。
3.1 深度学习与回环检测
在视觉SLAM领域,回环检测是另一个值得关注和研究的热点问题。它主要解决机器人位姿估计的累积漂移,帮助实现在大规模复杂环境下的精确导航。准确的回环检测可以进一步优化移动机器人的运动估计,建立全局一致的地图;反之则可能导致地图重建失败。所以,回环检测算法的好坏,对整个视觉SLAM系统的精度与鲁棒性提升至关重要[11]。
早期的回环检测方法是手工标注特征点,然后使用词袋(BoW)模型来进行图像匹配。随着深度学习、目标识别、语义分割等领域的迅速发展,研究者更倾向于使用先进技术来实现回环检测。2015年,国防科技大学的张宏等[50]较早地将深度学习应用在回环检测中,利用Caffe框架下预先训练好的AlexNet模型生成适合回环检测的描述符。他们先把图像输入到CNN中,以每个中间层的输出作为特征值来描述整幅图像,然后使用二范数进行特征匹配来判断是否存在回环。仿真结果表明,在光照变化明显的环境下,这种深度学习的特征描述符比传统的BoW和随机蕨法更稳定、鲁棒性更强,而且生成描述符的时间更短。
自动编码器是一种无监督学习模型,能自动提取数据中的有效特征,泛化性较强。近些年,这种方法受到了广泛关注,并已成功应用于许多领域。清华大学的Gao翔等[51]提出使用堆叠去噪自动编码器(SDA)的无监督学习方式来描述整幅图像并进行图像匹配,最终获得了较好的回环检测效果。此外,文[52]也是在自动编码器结构基础上,以无监督学习的方式压缩场景数据来提取紧凑的特征表示向量。
随着CNN训练的飞速发展,针对光照变化、天气变化和物体快速移动等复杂场景,有不少研究者开始考虑将CNN学习特征与人工设计特征相结合的方式进行场景识别。文[53]在局部特征聚合描述子(VLAD)的基础上进行了扩展,提出了端到端的场景识别NetVLAD算法。该算法将传统VLAD结构与CNN网络结构结合,利用卷积网络的反向传播进行算法优化,提高了对同类图像的表达能力,同时大大提升了图像匹配精度。Bampis等[54]提出了新的回环检测方法,主要通过旋转不变和尺度不变的局部特征描述向量以及动态序列识别技术来提高系统性能。此外,文中还引入时间一致性过滤器来进一步提升所产生序列的相似性度量结果。参照文[54]的思路,Memon等[55]提出了有监督学习与无监督学习相结合的回环检测方法,利用深度学习在特征提取方面的优势,引入超级字典的概念来加快场景比较速度,同时结合自动编码器对新场景进行回环检测,提高了检测效率。
虽然基于深度学习的回环检测方法可以从原始数据中自动学习特征,更充分地表达图像信息,对复杂环境变化有更好的适应性和鲁棒性,但如何针对不同场景自动选择不同隐含层的结果、如何找到更好的场景识别特征、如何建立合适的回环检测性能评估基准等问题,仍然是未来研究的重点。
3.2 深度学习与全局优化
SLAM全局优化需要考虑的是,如何利用不准确的关键帧建立起全局约束,来优化各帧的相机位姿。实现全局优化,可以通过建立和优化位姿图来求解各帧的相机位姿。位姿图以关键帧的全局位姿作为节点,以关键帧之间的相对位姿误差作为边的权重,通过最小化整个图的所有边权重总和,来优化每个节点的值。另一种方法是目前比较主流的图优化方法,同样可以获得全局最优解。不论采用哪种优化方法,一般的求解器都是高斯-牛顿法或LM算法[11]。
深度学习的实质,是利用观察到的相机位姿和场景表征来提取图像特征并构建映射函数。近年来,研究者们针对如何将深度学习融入全局优化问题进行了探索,获得了一些不错的优化结果。文[56]提出的CNN-SLAM法,将CNN预测的稠密深度地图引入到直接单目SLAM法获得的深度测量值中,使SLAM系统在回环检测和图形优化方面具有更强的鲁棒性和更高的准确性。Zhou等[57]提出了DeepTAM学习方法,核心是将来自CNN的相机位姿和深度估计引入到经典DTAM系统[58]中,然后通过后端全局优化实现更精确的位姿估计和场景重构。
基于无监督学习的单目视觉里程计,由于缺少累积误差的校正技术,在大规模里程计估计方面的精度还不太理想。针对这个问题,Li等[59]将无监督学习的单目VO与图优化后端集成在一起,提出了一种混合的视觉里程计系统。系统以时间和空间光度损失作为主要监督信号,在后端根据估计得到的局部闭环6自由度约束构建全局位姿图并进行优化,从而改善定位精度和鲁棒性。除了文[59]的方法,DeepFactors算法[60]也值得一提。它提出的深度SLAM系统,将学习到的稠密地图与三种不同类型的后端概率因子图结合起来,在概率框架中整合了一致性度量、先验学习等算法,对位姿和深度变量进行联合优化的同时还能保持实时性。
目前,深度学习方法在全局优化中的应用还处于初步探索阶段。随着各种深入研究的解决方案不断提出,深度学习在该领域的应用会吸引更多关注,相关方案也会得到进一步改进。
深度学习下的语义SLAM
语义SLAM是语义信息和视觉SLAM的相互融合,核心任务是对目标物体进行检测与识别。而深度学习算法是当前主流的物体识别算法,因此,在语义SLAM系统中引入深度学习,是SLAM系统发展的必然趋势。
真正意义上的语义SLAM——也就是语义建图和SLAM定位相互促进——发展得相对较晚。2017年,Bowman等[61]引入了期望最大值方法来动态估计物体与观测的匹配关系。他们把语义SLAM转化为概率问题,利用概率模型计算出的物体中心在图像上重投影时应该接近检测框的中心这一思想,来优化重投影误差。虽然文[61]解决了语义特征的数据关联问题,以及如何用语义信息获取路标和摄像头位姿的问题,但没有考虑语义元素之间的互斥关系,以及连续多帧的时序一致性。Lianos等[62]提出的视觉语义里程计(VSO)方法,在文[61]的基础上,利用距离变换将分割结果的边缘作为约束,同时利用投影误差构造约束条件,实现了中期连续点跟踪。
为了提高语义SLAM系统识别动态物体的准确性,清华大学的Yu等[63]在2018年IROS会议上提出了一种动态环境下鲁棒的语义视觉SLAM系统(DS-SLAM)。DS-SLAM将语义分割网络放在一个单独运行的线程中,结合语义信息和运动特征点检测,剔除每一帧中的动态物体,从而提高位姿估计的准确性和系统运行效率。在动态环境下,这个系统降低了对动态目标的影响,极大地提高了定位精度,还能生成密集的语义八叉树地图用于执行高级任务。不过,该方法要求所使用的语义网络运行速度足够快。
Kaneko等[64]利用语义分割能将图像中每一类物体进行分类和标注的特点,用语义分割产生的掩模来排除不可能找到正确对应的区域。在检测特征点阶段,他们添加了“不检测掩蔽区域中的特征点”的操作,可以排除大部分不准确的对应关系,减小随机一致性采样误差。这种方法引入了语义分割的全局信息,弥补了视觉SLAM局部信息的不足,因此具有较高的精度。
为了解决实际应用中的动态遮挡问题,文[65]提出了一种新颖的动态分割方法,实现对相机自我运动的准确跟踪。该方法首先将语义信息与对象级的几何约束相结合,快速提取出场景中的静态部分,再对静态部分从粗到细分两步实现精确跟踪。对动态部分,则提出了分层次掩码的动态物体掩码策略。相比其他动态视觉SLAM方法,这种方法在效率和动态跟踪精度上都有了明显提升。
随着语义分割技术的发展,借助语义信息将数据关联升级到物体级别,提升复杂场景下的识别精度成为了可能。目前,有很多研究(如文[66-69])都是基于物体级别关联的语义SLAM算法。2019年,Yang等[66]提出了用于联合估计相机位姿和动态物体轨迹的CubeSLAM方法。该算法对静态物体和动态物体分别采用不同的关联方法:对静态物体,将SLAM提取到的特征点和2D检测框关联;对动态物体,直接用稀疏光流算法跟踪像素,动态特征的3D位置通过三角化测量得到。在数据关联中,使用立方体来表示物体。除了这种方法,还有学者提出用椭圆体(特殊双曲面)来表示物体[67-68]。但椭圆体只是一种近似,它的检测框和实际测量结果不可能完全重合。因此,QuadricSLAM算法[67]对精度提升没有帮助,但CubeSLAM方法对精度提升很大。DSP-SLAM算法[69]的基础框架是把物体级的三维重建算法加到传统SLAM算法中,它的数据关联还是要用到特征点,在地图优化中也加入了物体与相机以及物体与地图点之间的约束。
在复杂多变的环境下,基于深度学习的语义信息具有光线不变性,因此语义分割下的定位比较稳定[70-71]。比如,Stenborg等[70]通过结合深度学习来解决SLAM中的位置识别问题。核心思想是在已有三维地图的基础上,用图像语义分割后得到的描述子代替传统描述子,再去建模,同时考虑二维点到三维点的映射关系。
虽然对语义SLAM已有不少初步探索,但由于发展较晚,许多工作还处于起步阶段,很多问题还没有考虑。但可以预见,未来几年这个方向的研究会越来越多。
深度学习下的不确定性估计
尽管深度神经网络在无人驾驶车辆控制或医学图像分析等高风险领域非常有吸引力,但它们在重视安全的现实生活中的应用仍然有限。造成这种限制的主要原因是,模型给出的预测结果并不总是可靠的。比如在无人驾驶这类对安全性要求极高的领域,完全依赖深度模型做决策,有可能导致灾难性的后果。因此,对基于深度学习的移动机器人进行不确定性预测,以确保安全性,就显得很有必要。
一般来说,预测的不确定性大致可以分为两类:由模型引起的认知不确定性(模型不确定性),和由数据引起的任意不确定性(数据不确定性)[10]。近年来,很多研究者对捕捉深度神经网络(DNN)中的不确定性表现出越来越大的兴趣。贝叶斯模型就是预测认知不确定性的重要方法之一[72]。它使用随机失活方法(dropout)来训练DNN,训练得到的均值是预测值,方差就是不确定度。本节重点讨论定位与建图过程中的不确定性估计和运动跟踪过程中的不确定性估计,以及这些估计的用途。表3对现有的深度学习下不确定性估计算法进行了总结。
表3 现有的深度学习下不确定性估计算法

在视觉SLAM系统中,定位或场景识别的不确定性是影响系统可信度的重要因素。语义分割是进行长期视觉定位或场景理解的重要工具,有意义的不确定性度量对决策至关重要。随着技术发展,越来越多的工作对上述问题进行了探讨(如文[73-76]),并获得了较理想的性能。
文[73]提出了一种基于信息理论的视觉SLAM特征选择方法SIVO,该方法将语义分割和神经网络不确定性引入到特征选择过程中,利用贝叶斯神经网络把特征的分类熵加到新特征中。每个被选择的特征都显著降低了车辆状态的不确定性,并且多次被检测为静态对象(如建筑物、交通标志等),具有较高的置信度。根据这种选择策略生成的稀疏地图,可以促进长期定位。
贝叶斯SegNet网络[74]能够通过对场景模型不确定性的度量来预测像素级的不确定性。核心思想是在SegNet网络结构的基础上增加随机失活层与贝叶斯决策。算法通过多次前向运算得到多个输出结果,对这些结果求均值得到最终预测的分割结果,再求对应位置像素的方差,得到模型的不确定性图。此外,该算法还可以使用蒙特卡洛算法来生成像素类标签的后验分布,并在多个预测结果中找到最优解。
在实际应用中,除了需要模型预测结果,也需要知道预测结果的置信度。利用神经网络学习给定输入的不确定性估计,已经受到越来越多研究者的重视。2018年,Wang等[77]从深度学习角度出发,探讨了视觉里程计估计的不确定性,针对基于深度递归卷积神经网络的单目VO,提出了端到端的序列间概率视觉里程计(ESP-VO)框架。通过这种方法,在不引入太多额外计算的情况下,可以有效预测运动变换的不确定性。为了验证算法的有效性,文[77]在代表驾驶、飞行和步行情景的几个数据集上进行了广泛的验证实验。结果表明,基于这些最小化误差函数进行全局优化能减少累积漂移,与其他先进方法相比,ESP-VO具有竞争优势。
鉴于单目自监督网络在深度估计时不需要深度标注,越来越多的研究者开始致力于理解和量化自监督网络预测中的深度不确定性估计。2020年,Poggi等[78]提出了一种新颖的不确定性估计方法,用到两个网络:一个用于重建,通过翻转图像输入和多个不同模型对同一张图片的深度不确定性进行预测;另一个用来模拟重建网络生成的分布,通过自监督方式学习一个可以预测不确定度的模型,输出不确定度。在位姿未知的情况下,这种方法可以始终提高深度的估计准确度。另外,文[79]提出了一种自监督的概率归一化卷积网络,可同时对深度与不确定度进行预测。一方面,对输入数据的不确定度进行估计,使网络可以基于数据可靠性进行针对性学习;另一方面,提出概率归一化的卷积神经网络(NCNN),将训练过程转化为最大化似然估计问题,实现对输出不确定度的估计。
可以看出,在视觉SLAM中引入不确定性估计后,可以知道模型对预测结果的置信程度,有助于提高模型在实际场景中的应用性能。但关于这个理论的研究才刚刚起步,学习方法还不多,在实际场景下的适应性也有待进一步验证。
未来发展趋势
尽管基于深度学习的SLAM技术在精度和鲁棒性上已经表现出比传统方法更优的性能,解决方案也更有吸引力,但目前的研究仍处于初级阶段,设计的模型还存在不足,无法完全解决当前的问题。为了提高实际应用中的适用性和安全性,研究人员还面临许多挑战。这里讨论几点可能助力该领域进一步发展的思路。
1) 适应性更强的数据集标注
深度学习严重依赖海量数据。如果想用这些数据训练深度学习模型,首先需要对它们进行处理与标注。从理想角度看,标注的数据数量越多,训练得到的模型效果越好。但在实际标注过程中,不仅需要结合硬件资源和时间,还要注意数据量增大可能会给模型效果提升带来负面影响。数据标注的质量,直接影响训练得到的深度学习模型的可靠性。
所以,提高数据标注的质量也成为这个领域的研究重点。数据标注是一个耗费成本与时间的过程。如何经济、高效地完成数据标注,是研究人员必须面对和解决的难题。在成本与质量之间找到一个平衡点,显得尤为重要。同时,期望未来能够利用SLAM方法构建图像之间存在对应关系的大规模数据集,这可能有助于解决数据标注问题。
2) 深度学习模型的拓展
目前,许多基于深度学习的模型,如CNN、LSTM和自动编码器等,都是端到端的学习方式。尽管这些模型的快速发展提升了系统的鲁棒性和准确性,但在实际应用场景中,很多数据是从非欧氏空间生成的,传统的端到端深度学习方法对此类数据的处理能力难以让人满意。
近几年,越来越多的学者对深度学习方法在图数据上的扩展产生了浓厚兴趣。用于处理图数据的图神经网络[80]应运而生。从本质上看,图神经网络属于几何深度学习的一部分,主要是将端到端学习与归纳推理相结合,研究具有结构属性、拓扑性质的数据的学习和预测任务。因此,对图神经网络结构的深入研究,有助于解决深度学习无法处理的关系推理和组合泛化问题,是未来一个新的研究热点。
3) 多传感器融合算法的研究
在现实生活中,移动机器人或硬件设备往往不只携带一种传感器,而是多种传感器相互配合使用。不同传感器的最远探测距离、精度、功能等各不相同。在使用多种传感器的情况下,要想保证系统决策的可靠性和快速性,就必须进行信息融合。比如,手机VIO系统就是通过融合IMU数据和相机信息,弥补了单一传感器的不足,为实现SLAM的小型化和低成本提供了行之有效的研究方向。DeLS-3D设计[81]融合了相机视频、运动传感器(GPS/IMU)等数据和三维语义地图,可以提升SLAM系统的鲁棒性和效率。这些例子表明,将多种具有互补性的传感器进行融合,是提升SLAM系统精度和鲁棒性的重要途径。
多传感器融合的软硬件其实很难完全分开。当前,在硬件层面实现多传感器融合并不难,重点和难点在于如何实现算法和传感器之间的融合。另外,动态与未知环境下的融合问题也将是多传感器融合面临的另一个难题。相信随着技术不断发展,算法融合问题会得到很好的解决,多传感器融合技术也许很快就会在实际生活中得到广泛应用。
结论
从已有的大量研究可以看出,基于深度学习的SLAM方法虽然还是一个刚起步且在不断发展的研究领域,但已经逐渐引起研究者的广泛关注。
到目前为止,深度学习与SLAM的结合,已经在视觉里程计、场景识别与全局优化等各种任务中取得了显著的成果。同时,由于深度神经网络具有强大的非线性拟合能力,可以任意逼近人工建模难以模拟的非线性函数,因此在实际应用中鲁棒性更佳。
此外,语义信息与传统视觉SLAM算法的集成,有助于提高对图像特征的理解,对构建高精度的语义图也产生了重要影响。基于深度学习的SLAM技术的快速发展,为移动机器人向实用化、系列化、智能化发展提供了有力支撑。
