基于视觉SLAM算法的研究现状分析
2021-07-30张玉河
张玉河
(河北地质大学 信息工程学院,河北 石家庄 050031)
0 引言
SLAM(Simultaneous Localization and Mapping)即同时定位与地图构建,是指机器人搭载特定的传感器在没有环境先验信息的情况下,在运动过程中根据位置估计进行自身定位并对周围的环境进行建图。当搭载的传感器为相机时,称为“视觉SLAM”。视觉SLAM的工作流程如图1所示。
图1 视觉SLAM工作流程图Fig.1 The flow chart of Visual SLAM
SLAM问题起源于1986年[1],文献[1-2]全面回顾了SLAM近些年的发展并探讨了SLAM的未来发展趋势;文献[3]将SLAM的发展划分为三个时代:classical age(1986-2004)、algorithmicanalysis age(20014-2015)以及robust-perception age(2015-现在),1986-2004年引入了SLAM的概率公式,包括扩展卡尔曼滤波器和最大似然估计等;2004-2015年主要研究SLAM的基本性质,包括可观测性、收敛性与一致性;目前这一时期对 SLAM 系统的鲁棒性等性能提出了更高的要求。视觉SLAM主要分为两大类,一是基于图像特征点的间接法,2007年 Davison[4]提出MonoSLAM,这是第一个实时单目视觉SLAM系统,被认为是许多工作的发源地[5];2015年Raul Mur-Artal和 Juan D.Tardos等人[6]提出 ORBSLAM,在这个系统中,作者首次使用三线程的方法完成 SLAM,而且作者还在对该系统进行完善,分别于2017年和2020年推出ORB- SLAM2[7]和 ORB-SLAM3[8];另一类是根据像素亮度信息直接估计相机运动的直接法,直接法避免了图像特征的计算,在一定程度上提升了SLAM系统的效率。2014年 J.Engel[9]等人提出 LSD-SLAM(Large Scale Direct monocular SLAM),LSDSLAM的提出标志着单目直接法在SLAM的应用中取得成功,在该系统中实现了半稠密场景的重建且保证了跟踪的实时性与稳定性。随着深度学习技术的快速发展,将深度学习技术与视觉SLAM 结合成为一个研究热点,Gao[10]等人提出通过无监督学习的方式,采用堆叠去噪自动编码器(Stacked Denoising Auto-encoder,SDA)的方式描述整幅图像来进行图像的匹配实现回环检测,取得了较好的效果[11]。
视觉SLAM技术主要应用于无人机、机器人以及虚拟现实等领域,在水下或恶劣环境中可以发挥巨大作用,方便人们对未知环境进行探索。本文首先对视觉SLAM原理进行介绍,将SLAM问题数学化,然后对具有代表性的特征法与直接法的视觉SLAM算法进行分析讨论,再对深度学习与视觉SLAM结合的现状进行讨论,最后对视觉SLAM算法进行总结与展望。
1 视觉SLAM原理
视觉SLAM以多视图几何[12]为基本原理,如图2所示。视觉SLAM主要目的是恢复每帧图像对应的相机运动参数C1…Cm,同时恢复场景的三维结构X1…Xn。相机运动参数 Ci由3× 3的旋转矩阵 Ri和一个三维位置变量pi组成,通过Ri、pi可以将世界坐标系下的三维点Xj变换至相机坐标系[13],其表达式为:
图2 多视图几何原理Fig.2 The principle of multi-view geometry
进而投影至图像中,即变换至像素坐标系:
其中,fx、fy分别为沿图像x、y轴的焦距,(cx,cy)为镜头光心在图像中的位置。由式(1)(2)可知,将世界坐标系下的三维点投影到像素坐标系[13]中可表示为:
其中,hij表示三维点投影在图像中的位置,h表示由世界坐标系变换至像素坐标系的转换函数。通过求解目标函数得到最优解:
其中,xij表示观测到的图像点位置。通过求解的目标函数得到一组最优解C1…Cm、X1…Xn,使得所有Xj在 Ci图像中的投影位置 hij与观测到的图像点位置xij尽可能靠近[13]。
2 间接法
间接法是指首先提取图像特征,然后在视觉里程计中根据图像特征信息估计相机运动。该方法利用图像特征提供的丰富信息计算相机位姿,性能比较稳定,在视觉 SLAM 中一直占据主导地位。
2.1 MonoSLAM
单目视觉SLAM系统由Davison等人在2003年首次提出[14],2007年提出实时MonoSLAM系统。MonoSLAM证明了用一个可自由移动的摄像机作为唯一数据源,可以实现实时定位和建图。该系统的设计思路如下:首先给定从初始时刻到当前时刻的控制输入及观测数据;然后通过构建联合后验概率密度函数来描述摄像机姿态和地图特征的空间位置,再通过递归的贝叶斯滤波方法对此概率密度函数加以估计;最后实现对摄像机定位,同时构建周围环境地图[15]。在单目视觉SLAM中常用扩展卡尔曼滤波器实现同时定位和地图构建。MonoSLAM系统由以下两部分组成:(1)通过已知的对象完成地图初始化;(2)使用EKF估计相机运动和特征点的3D位置。
在该系统中计算复杂度随环境规模增大而成比例的增大,因此,在较大环境中不能实时计算[16]。
2.2 PT AM
为了解决 MonoSLAM 中计算复杂度高的问题,Klein[17]等人在2007年提出PTAM (Parallel Tracking and Mapping)算法。在PTAM中,后端模块采用非线性优化方法,首次将跟踪和建图分到两个线程中并行执行,同时首次使用 BA[18](Bundle Adjustment)技术处理关键帧。PTAM算法主要分为四步:(1)通过五点法[19]初始化地图;(2)根据地图点和输入图像之间匹配的特征点估计相机位姿;通过三角化估计特征点的 3D位置,利用BA对3D位置优化;通过随机树的搜索方法恢复跟踪过程[20]。
由于PTAM算法在相机快速移动时会产生运动模糊,破坏图像的角点特征,导致跟踪失败,一些研究者对PTAM算法做了扩展,如Castle[21]等人开发出一个多地图版本的 PTAM,以及Klein[22]等人开发出移动版的PTAM。
PTAM 中首次引入基于关键帧建图的方法并将跟踪和建图分离到不同的线程中并行处理,对视觉SLAM的发展具有重大意义。基于PTAM算法发展出许多开源视觉SLAM算法,最具代表性的为2015年提出的ORB-SLAM算法。
2.3 ORB-SLAM
Mur-Artal等人2015年提出的ORB-SLAM系统是当前视觉SLAM系统中最完善且易于使用的系统之一。最初的ORB-SLAM只可以用单目相机作为传感器,2017年作者对其进行改进得到ORB-SLAM2系统,在ORB-SLAM2中可以利用单目、双目及RGB-D相机作为传感器。2020年提出ORB-SLAM3,在ORB-SLAM3中不仅支持单目、双目和RGB-D相机,同时支持针孔相机、鱼眼相机等,ORB-SLAM3是第一个同时具备纯视觉数据处理、视觉与惯性传感器数据处理和构建多地图功能的SLAM系统。ORB-SLAM系统由PTAM发展而来,将两线程并行运行改为三线程,三线程分别为Tracking、Local Mapping以及Loop Closing,如图3所示。
图3 ORB-SLAM 系统的三线程Fig.3 The three threads of the ORB-SLAM system
在整个ORB-SLAM系统中,均围绕ORB[23]特征进行计算。ORB特征是非常具有代表性的实时图像特征,它使得 FAST[24]特征点具有方向性与旋转不变性,并采用速度极快的BRIEF[25]描述子,相比于SIFT[26]和SURF[27]特征,ORB特征可以在CPU上实时计算,极大的提升了视觉SALM系统的性能。
在ORB-SLAM系统中,加入闭环检测模块是一大亮点。闭环检测模块通过判断当前设备之前是否到过当前位置来消除位姿累积误差形成的轨迹漂移,且可以在跟踪丢失后快速找回,从而构建全局一致性地图。ORB-SLAM的不足之处在于跟踪、建图等过程都要用到ORB特征,虽然提取图像的ORB特征速度较快,但对每一幅图像都提取ORB特征,当场景非常大时将特别耗时,而且三线程同时执行会加重CPU的负担,很难将其嵌入到移动设备中。
3 直接法
与上文所述的间接法相比,直接法在视觉SLAM系统中直接使用输入的图像,不使用图像的任何抽象特征。G.Silveira[28]等人于 2008年提出将直将接法用于视觉SLAM系统,因其忽略了图像特征点的提取与描述子的计算过程而节省了时间,基于直接法的视觉SLAM系统得到快速发展,随后出现了 DTAM[29]、LSD-SLAM[30]以及DSO[31]等使用直接法的开源项目,使得直接法逐渐成为主流算法。
3.1 DT AM
DTAM(Dense Tracking and Mapping)是Newcombe等人2011年提出的直接法视觉SLAM系统。它是一个实时跟踪和重建的系统,不使用提取的图像特征,而是依赖于图像中的每个像素。文献[29]指出基于直接法的DTAM系统与基于特征法的SLAM系统相比,DTAM系统在设备快速移动的情况下具有更好的跟踪性能。DTAM系统由三部分组成:(1)通过立体测量完成地图初始化;(2)根据重建的地图估计相机运动;(3)先对每个像素的深度信息进行估计,再通过空间连续性对其优化。
DTAM算法在实时几何视觉方面取得了重大进展,在增强现实、机器人等领域具有潜在应用价值,但DTAM算法在跟踪和重建的过程中,需假设亮度恒定不发生变化,对周围环境有较高的要求。
3.2 LSD-SLAM
LSD-SLAM (Large Scale Direct monocular SLAM)是J.Engel等人在2014年提出的直接法SLAM系统。在LSD-SLAM系统中,可以在较大规模的环境中构建一致性地图,并且利用基于图像对齐的高精度位姿估计方法,将三维环境实时重建为基于关键帧的位姿图。在该算法中,主要包含两个创新点:一是创新的提出一种直接跟踪算法,可以明确的检测尺度漂移;另一个是通过概率的方法解决噪声值对跟踪的影响。
LSD-SLAM算法包括三个模块:跟踪、深度图估计及地图优化。跟踪模块持续跟踪相机拍摄的图像;深度图估计使用跟踪帧来完善或替换当前关键帧,如果相机移动太快,则通过现有距离较近的关键帧中的投影点重新初始化一个新的关键帧;当关键帧被跟踪帧替换后,它的深度图不被进一步完善,而是通过地图优化模块将其添加到全局地图中。完整的LSD-SLAM算法流程图如图4所示[30]。
图4 LSD-SLAM 算法流程图Fig.4 The flowchart of LSD-SLAM algorithm
与其它直接法相比,LSD-SLAM算法可以在全局地图上维护和跟踪,包括关键帧的位姿图和相关的概率半稠密深度地图。通过考虑移动设备的CPU架构[32],对LSD-SLAM算法做进一步优化,将LSD-SLAM算法迁移到移动设备上,获得不错的效果。在单目相机的基础上,J.Engel等人在2015年将LSD-SLAM算法扩展到双目[33]和全方位相机[34]。
4 视觉SLAM与深度学习
近几年深度学习技术发展迅速,在图像识别、图像分类以及目标检测等领域表现突出。视觉SLAM同样以图像为处理对象,将深度学习技术用到视觉 SLAM 系统中可以极大的促进视觉SLAM的发展。
目前主要是将深度学习技术用于视觉 SLAM系统中的视觉里程计模块和闭环检测模块。
4.1 深度学习与视觉里程计
视觉里程计通过分析关联图像间的几何关系确定机器人的位姿信息,将位姿信息传递到后端优化模块进行优化,从而构建全局一致性地图。基于深度学习的视觉里程计无需特征提取、特征匹配及复杂的几何运算,使得整个过程更加直观简洁。
基于深度学习的视觉里程计中运动估计的准确性和鲁棒性依赖于神经网络估计器的设计和训练的图像是否涵盖待测场景的全部变化[35]。2015年,Konda[36]等人通过提取视觉运动和深度信息实现基于深度学习的视觉里程计;Kendall[37]等人利用 CNN(卷积神经网络)实现了输入为 RGB图像,输出为相机位姿的端到端定位系统,该系统提出了 23 层深度卷积网络的 PoseNet网络模型,利用迁移学习将分类问题的数据用于解决复杂的图像回归问题,其训练得到的图像特征相较于传统的手工特征,对光照、运动模糊以及相机内参等具有更强的鲁棒性。2017年,Wang[38]等人使用 RCNN(递归卷积神经网络)提出一种新的端到端的单目视觉里程计框架,在该框架中可以利用CNN为视觉里程计问题提供特征表示,也可以利用RCNN模型对运动模型和数据关联模型建模,实验结果表明该算法具有非常好的性能[35]。Costante G[39]等人构建了一个自编码深度网络模型,用来学习产生光流的非线性潜在空间描述,将此自编码网络与其它神经网络模型联合训练,从而估计相机的运动。
与传统的视觉里程计相比,基于深度学习的视觉里程计更加直观简洁,无需构建复杂的几何模型,但当训练场景发生变化时,视觉里程计会产生错误的结果。随着深度学习技术的不断发展,以及对视觉里程计更加深入的研究,将会进一步提升各种网络模型的泛化能力。
4.2 深度学习与闭环检测
闭环检测即检测机器人是否经过同一位置,通过检测机器人获取的当前帧图像与历史帧图像的相似性来实现。闭环检测主要用于消除视觉里程计中机器人位姿累积误差所造成的轨迹漂移,从而得到全局一致的轨迹和地图。传统的闭环检测方法大多是基于词袋模型来实现,使用人工设计的特征描述图像,不能充分利用图像的深层信息,而基于深度学习的闭环检测则通过神经网络学习图像的深层特征,以获得更高的准确率。
基于深度学习的闭环检测主要利用预训练的神经网络模型对图像进行特征提取,充分利用图像深层次的特征信息。2015年国防科技大学[40]提出将深度学习用于闭环检测模块,将AlexNet[41]迁移到闭环检测问题中,用中间层的输出作为特征来描述整幅图像,通过二范数进行特征匹配来确定是否存在回环。Gao[42-43]等使用无监督学习的方式,采用自编码网络提取图像特征,并使用相似度矩阵检测闭环,在公开的数据集上取得了很好的效果[44];2019年Liu[45]等人提出基于改进的混合深度学习结构的闭环检测方法,利用该网络模型生成高层次的语义图像特征,从而提高闭环检测的准确率和效率,利用该网络模型进行检测闭环的过程如图5所示。
图5 利用改进的混合深度学习模型检测闭环的过程Fig.5 An improved hybrid deep learning model is used to detect the closed-loop process
对于第 k个关键帧,首先对其进行预处理,然后利用训练好的网络模型提取特征,将提取的高层次语义特征作为图像向量输出,最后将提取的图像向量与关键帧特征向量库比较,计算相似矩阵检测闭环。实验结果表明,该方法具有较高的准确率。
基于深度学习的闭环检测利用神经网络提取图像特征,获取的图像信息更丰富。当光照、季节等因素变化时,提取的特征信息仍然具有较好的鲁棒性。
5 总结与展望
随着机器人、虚拟现实等领域的快速发展,视觉SLAM技术发展迅速。最初由利用图像特征的间接法占主导,但随着直接法的不断发展完善,两种方法相互促进,共同发展,提升了视觉SLAM系统的性能。基于深度学习的视觉SLAM方法当前正处于快速发展阶段,将深度学习技术用于SLAM系统中,不仅能推动视觉SLAM技术的发展,也可以促进深度学习技术的发展。
多传感器融合是视觉SLAM未来发展的一个重要方向,将视觉与惯性传感器结合可以得到更完善的视觉SLAM系统,目前深度学习技术只是应用在视觉SLAM系统的中局部模块,随着深度学习技术的不断发展,研究人员对视觉SLAM技术的深入研究,将会进一步促进深度学习与视觉SLAM的融合。