APP下载

融合自监督单目图像深度估计的视觉里程计

2021-08-06成立明陈建新陈志敏

计算机工程与应用 2021年15期
关键词:单目回环深度

成立明,陈建新,陈 瑞,陈志敏

南京邮电大学 通信与信息工程学院,南京 210003

长期以来,在计算机视觉和机器人领域中,同时定位与建图(SLAM)一直是人们积极研究的对象[1-2]。它是许多应用程序中的关键模块,例如自主移动机器人和自动驾驶。由于相机成本相对较低,并且可以传递丰富的环境信息,相机运动可以经由视觉里程计可靠地估计出来。因此视觉SLAM变得非常受研究者欢迎[3-4]。

通常,视觉SLAM 系统包含三个模块:一个用于跟踪新帧的视觉前端,一个用于创建和维护关键帧的地图的后端以及一个用于优化地图点的模块。求解VO 的最重要步骤之一就是在当前帧和下一帧之间匹配点特征。VO 有两种主流的特征匹配方法:特征点法和直接法。特征点法要求特征提取、特征描述、特征匹配,并使离散的可重复点特征之间的重投影误差最小。相比之下,直接法可以将光度误差降至最低,并且直接对像素强度进行操作。虽然基于特征点的方法长期以来一直都是SLAM 的主流方案,但它也存在明显的缺陷,例如特征描述符不能在弱纹理和像素梯度小的帧中正确匹配。最近,文献[5]提出的直接稀疏里程计在性能方面很出色,即使在没有明显拐角特征的环境中也表现良好。联合优化相机位姿和它们之间的对应关系以及利用任意像素(包括非角像素)都能够提高算法的鲁棒性。

近年来,人们提出了许多比较成熟的基于特征点的单目SLAM 方法,这些方法大多是受经典算法PTAM[6]的启发,PTAM包含用于跟踪新图像帧的前端和基于优化方法的后端建图模块。在这之后,文献[7]提出将局部集束调整(BA)与位姿图优化方法相结合。ORBSALM[8]是特征点法中较为出色的算法之一,该算法在插入关键帧时就开始局部BA,一旦检测到回环闭合就进行全局位姿图优化,最后执行全局BA。与传统的基于点特征来估计相机位姿并重建周围环境的方法不同,文献[9]提出的PL-SLAM是一种双目视觉SLAM方法,它融合了点和线特征,使其可以在包含弱纹理且特征点稀少的环境稳定地运行。

VO 已经由多种方法被扩展到SLAM 系统。其中不乏融合了惯性传感器(IMU)[10-13]或采用双目设备[10,13]的方案,因此系统在恶劣环境中的鲁棒性得以增强。文献[12]提出当卡尔曼滤波在局部里程计估计器中更新时,可以直接将已有地图中的2D-3D 匹配包含进去。

文献[10]提出的Okvis是一种基于特征点法的视觉惯性里程计,该算法在边缘化滑动窗口中维护特征点的局部地图。文献[14]提出了一种新的紧耦合的同时定位和建图算法,该方法可以实现回环闭合功能,并能够重用之前构建的地图在已建图的位置实现精确的定位。它还提出一种新的IMU 传感器初始化方法,可以在几秒钟内以高精度计算出IMU参数。之后,文献[11]提出一种使用类似于Okvis的前端的基于特征点法的单目视惯性里程计系统VINS-Mono。该算法基于BoW(Bag of Visual Words)和位姿图优化方法来检测回环闭合并优化“全局地图”。通过融合IMU,它可以利用具有非旋转不变特性的BRIEF 描述符。然而,闭环检测会导致需要计算额外的特征点和描述符,这必然会消耗大量的内存和时间。与特征点法SLAM方案不同,LSD-SLAM[15]利用极线搜索和块匹配方法来获取图像的深度值。块匹配方法基于如下假设:图像中小区域的灰度是恒定的。DSO正是使用此方法来估计图像深度,并将滑动窗口优化策略添加到后端。随着直接法的发展,文献[16]提出了双目DSO,它可以实时地通过双目相机以高精度感知大规模环境,而且固定基线使它能够解决尺度漂移问题。此后,文献[17]提出的LDSO 将闭环功能和全局地图优化融合到DSO 算法中,并计算ORB描述符建立BoW模型以用于闭环检测。

然而,无论是基于特征点的方法还是直接法方案,匹配特征都需要恢复像素的深度,这对于视觉SLAM来说至关重要。在单目视觉SLAM 方法中获取图像深度的传统方法可以分为两种:一种是在移动相机产生足够的视差后通过三角化测量像素距离;另一种是直接从RGB-D相机的深度图获取图像深度。三角化通常很费力,需要昂贵的计算成本,并且它只能获取到微弱的深度值,而RGB-D相机在应用范围和光照方面受到限制,因此,RGB-D通常用于密集重建,单目三角化则一般用于室外或大型场景。

尺度不确定会带来两个问题:在邻近帧中沿极线可能存在错误的特征关联;大量的深度测量都收敛到同一个深度值。这些因素均会严重影响算法的定位精度。

本文的贡献主要有以下几个方面:

(1)提出了一种新颖关键的初始化算法,将基于深度学习的自监督单目图像深度估计算法[18]与DSO 算法相结合,解决单目DSO算法的尺度不确定性,从而提高系统的定位精度。

(2)提出运用PCG 算法加速系统后端比较耗时的舒尔补方程求解模块,从而进一步节省系统的时间成本。

(3)本文对所提出的算法在自动驾驶公开数据集上进行了大量的实验测试,以验证系统的定位精度和后端优化性能,同时提供了详细的实验数据和结果分析。

1 系统和方法

1.1 DSO算法概览

由于本文的工作是对DSO 算法的改进,尤其在前端部分,所以这里大致简单介绍下DSO算法的框架,如图1。DSO 是基于关键帧的后端采用滑动窗口优化的SLAM 方案,它联合优化所有的模型参数,不需要特征检测和特征描述。在滑动窗口中,光度误差能量函数可以定义为:

图1 系统框图Fig.1 Frame of system

在公式(1)中,是Pk的相邻模式,a,b是光度仿射变换参数,t是图像曝光时间,I指的是一幅图像,wp是权重因子。P1为点P在图像Ij上的重投影像素位置,可以由公式(2)计算得到。

公式(2)中,Π是重投影函数,R是两帧之间的旋转矩阵,t是平移向量,这两个参数都可以由Ti和Tj(第i和第j帧的相机姿态)计算得到,为点Pk的逆深度。

当有一幅新的图像输入时,它的位姿经由DSO 算法的直接配准得到。如有必要,这一帧会被考虑进局部BA。追踪到的帧被用于进一步优化或者在DSO的深度地图估计模块充当当前帧的候选者。当新的帧被选作关键帧时,它的深度地图会通过将上一帧中追踪到的点投影到当前帧来初始化,然后进入空间正则化和野点剔除流程。因此,平均逆深度将被径向合并到帧的姿态中。最后,将最后一个关键帧替换为当前帧,该关键帧用于跟踪新的后续帧。

1.2 新颖的初始化方案

1.2.1 图像增强预处理

在真实场景中,由相机等图像采集设备采集到的图像信息通常存在光照不均和图像退化的问题。直接法有强烈的灰度不变假设,因此图像灰度信息的准确性直接影响算法的精度和稳定。DSO 通过光度标定减小光照不均带来的影响,但是,光度标定需要在真实环境中获取不同时刻下同一场景的大量图像,并且这种方法有很大的局限性,即有且仅在当前场景有效,当应用于与当前场景不同的环境中,光度标定的结果必然会受到质疑,所以不具备普遍性。本文提出基于限制对比度的自适应直方图均衡化(Contrast Limited Adaptive Histgram Equalization,CLAHE)对图像进行增强处理,解决图像中存在的区域亮或区域暗的光照不均问题以及图像退化问题。

CLAHE 是一种限制对比度过度提高的自适应直方图均衡算法,相比于普通的自适应直方图均衡,该算法对每个子块进行直方图均衡的同时使用对比度限幅,由于对比度放大的程度与像素点的概率分布直方图的曲线斜度成比例,所以为了限制对比度,将大于一定阈值的部分平均分配到直方图的其他地方,可以有效地限制噪声放大。本文中CLAHE 图像增强效果如图2所示。

图2 图像增强预处理Fig.2 Preprocess by image enhancement

1.2.2 初始化方法

与现有的单目直接法相比,即使在弱纹理环境中(如白墙),DSO仍然具有高鲁棒性的优点。然而,DSO不可避免地存在尺度不变问题,这在传统的单目SLAM方法中是固有的缺点。针对这一至关重要的问题,本文改进了DSO 的初始化部分,融合了基于深度学习的自监督单幅图像深度估计模型,系统框架如图1所示。该模型结合了三种结构和损失函数创新,从而在用单目和双目视频进行训练时,极大地改善了单目深度估计。

(1)一种新的外观匹配损失,解决了使用单目监督时出现的像素遮挡;(2)一种新的简单的自动遮罩方法,可以忽略在单目训练过程中没有观察到相对相机运动的像素;(3)多尺度外观匹配损失以输入分辨率对所有图像进行采样,这可以减少深度伪影的产生。

图3显示了初始化过程的细节,初始化操作可以大致分为两个阶段。第一阶段是第一帧的处理,第二阶段是后续帧的跟踪。当新图像到达时,通过对原始图像进行下采样来构建图像金字塔,并计算金字塔图像每一层的像素值和梯度。然后,在点选择部分中,首先将图像划分为32×32块,然后将每个块的平均梯度用作选择点的阈值。选择点时,第一个选择是将图像划分为d×d(d=3)个块,然后选择梯度最大且超过阈值的点。如果在第一次选择之后选择的点数不足,则将图像划分为2d×2d块,降低阈值,并重复先前的操作,直至提取的像素点个数满足要求。

图3 初始化流程Fig.3 Flow of initialization

在点初始化部分,为了在地图点初始化部分提供深度预测,本文采用了文献[19]的编码-解码器体系结构Resnet50 的变体。并且将它在KITTI 数据集视频序列00~10 进行了训练。本文使用深度学习网络预测单幅图像的深度值,并将其作为地图点场景几何的先验信息,当新帧到达时进行初始化进程,从而使系统能够获得更为准确的平均深度估计值,并使其收敛到真实的地图点深度。单幅图像深度估计效果如图4 所示。在后续帧的跟踪阶段,从金字塔图像的顶层向底层优化姿态、光度参数和逆深度。迭代求解后,逆深度被向上传播并作为下一次优化的初始值。在连续跟踪五帧后,将第一帧作为关键帧,然后将其插入能量方程。

图4 深度图像估计Fig.4 Depth estimation of image

1.3 PCG求解舒尔补方程

在基于优化的SLAM方法后端,舒尔补方程求解的复杂度很高,使用LM(Levenburg-Marquardt)算法迭代的滑动窗口优化方程如公式(4)所示:

在公式(4)和(5)中,H是Hessian 矩阵,X是优化变量,J是雅可比,r是残差。将上述公式以矩阵的方式表达如公式(6)所示:

在公式(6)中Xp指当前窗口中关键帧的位姿,Xd是由逆深度参数化的点,Xpp是位姿之间的约束,Hdd是路标点之间的约束。对公式(6)应用舒尔补操作得到舒尔补方程:

其中,Hdd是对角化矩阵,可以利用它右下角的稀疏性执行稀疏BA。本文采用了PCG算法[20]加速求解过程。

2 性能分析

本文将所设计的算法与ORB-SLAM2[21]、DSO 以及LDSO在KITTI数据集的视频序列00~10上进行测试对比,测试设置均为单目。ORB-SLAM2是一个基于稀疏特征的SLAM 系统,它包括视觉里程计和回环检测。DSO是一种直接稀疏视觉里程计,并不是完整的系统。LDSO是添加了回环闭合功能的直接稀疏里程计。

2.1 KITTI数据集

KITTI 数据集[22]包含22 个校准的、同步的、带有时间戳的灰度序列,包括由大众帕萨特旅行车记录的6小时视频(配有四个摄像头,一个旋转的3D激光雷达和一个组合的GPS/IMU惯性导航系统),均为在现实世界中的交通情况下,捕获到的各种场景。由于数据集还提供了真值轨迹,可以利用ATE(Absolute Trajectory Error)评估算法的追踪定位精度,因此它在机器人技术和计算机视觉的许多领域都备受青睐。

2.2 TUM-Mono数据集

TUM-Mono 数据集[23]是包含50 个室内和室外序列的单目数据集。它提供相机光度校准,但没有完整的地面真实相机轨迹。该数据集包含具有不同场景复杂度的序列,非常适合估算系统的时间成本。因此,本文利用该数据集来评估用于舒尔补方程求解的加速算法。

2.3 测试环境

为了尽可能全面地对给定的可用数据进行评估,对于每种方法,本文在每个视频序列上均进行5次正向运行和5次逆向运行,以考虑非确定性因素。该算法的测试平台为:配备Ubuntu 18.04,Intel Xeon®CPU,E5-2620 v3、24 核,2.40 GHz,QuadroK2200/PCle/SSE2 GPU 和48G RAM的联想工作站。

2.4 后端时间成本评估

为了更加公正地对后端耗时进行实验评估,本文在TUM-Mono数据集上对DSO和仅使用PCG优化的系统P-DSO 进行后端求解所需时间成本比较。表1 显示了改进的算法在视频序列11、24 和27 上对每一帧的平均加速效果,其中场景复杂度依次递增。为了将非决定性因素考虑在内,本文取10 次测试结果的平均值作为最终值,实验结果表明本文采用的策略能提升计算效率9%~25%。

表1 后端求解耗时对比Table 1 Comparison of back-end solution time

2.5 全局漂移对比

由于单目相机存在尺度不确定性,随着时间的推移,评估得到的轨迹会累积严重的漂移。为了对比DSO和本文改进的算法,本文采用三维点云地图可视化最终累积的漂移。图5 表明本文改进的方法显著减小了最终累积的漂移,图(a)是DSO算法评估得到的轨迹和点云地图,图(b)是本文改进的算法评估得到的轨迹和点云地图,图(c)是分别从序列07的开始和结束位置采样的图片。视频序列07 是一个具有回环的场景,算法对它评估得到的轨迹应该出现回环闭合。图6 显示了本文改进的算法对KITTI 数据集视频序列00 中环境重建得到的三维点云地图。

图5 点云地图中的漂移对比Fig.5 Drift comparison in point cloud map

图6 本文算法重建的点云Fig.6 Point cloud reconstructed by proposed algorithm

2.6 定位精度评估

本文采用ATE(绝对轨迹误差)评估对比算法的性能。ATE 通过将算法测试得到的轨迹结果和数据集提供的真值轨迹进行Sim(3)配准计算得出。此外,定义n表示由于在运行过程中追踪失败而导致不能成功运行完整个序列的情况。本文中算法在每个序列上最终的绝对轨迹误差取10 次实验评估结果的平均值,其详细对比结果如表2所示。实验数据表明,本文改进的算法在KITTI 数据集提供的所有视频序列上都可以跟踪成功,而ORB-SLAM2 在序列03 上由于在整个过程中不能匹配到点特征进行初始化,导致算法跟踪失败。DSO在序列01~03上早期都追踪失败,LDSO在序列01上追踪失败,原因是数据集没有提供光度校准,算法无法处理这些视频序列中存在的严重光度变化。

表2 绝对轨迹误差RMSETable 2 Absolute trajectory error RMSE m

评估得到的关键帧的轨迹结果可视化对比如图7所示。其中,序列00 和07 是包含回环场景的视频序列,序列02 和09 是不包含回环场景的视频序列。通过对单幅图像进行更为精准的深度估计,单目DSO 算法的深度不确定问题可以得到有效解决。本文提出的方法显著提高了DSO 的性能,在序列01~04、06、08~10 上定位精度均高于ORB-SLAM2、DSO 和LDSO。在序列00 上LDSO 定位精度最佳,在序列05 和07 上ORBSLAM2 定位精度最高。其主要原因是这三个视频序列中都包含回环场景,适合用具备回环检测功能的算法,例如ORB-SLAM2 和LDSO。ORB-SLAM2 在回环检测部分有全局BA,LDSO 在回环检测线程中用图优化方法检测闭环。值得注意的是,在关闭ORB-SLAM2和LDSO 的闭环检测功能后,本文算法在所有序列上的定位精度都是最高。

图7 部分序列轨迹对比Fig.7 Trajectory comparison of some sequences

3 结束语

本文将一种基于深度学习的单幅图像深度估计模块Monodeth2 与DSO 前端融合,通过获取更加精确的深度值以初始化地图点,显著降低了单幅图像的深度不确定性,从而提高了算法的定位精度。本文在公开的KITTI 数据集上将改进的算法与ORB-SLAM2、DSO和LDSO进行了比较,系统在建图和估计相机位姿的过程中表现的更可靠。然而,算法仍有一些方面有待改进,例如如何减少昂贵的计算成本以及如何减小全局漂移。本文计划在下一步工作中将回环检测和关闭功能添加到算法内,以使系统能够减小随着时间累积产生的全局漂移。

猜你喜欢

单目回环深度
深度理解一元一次方程
嘟嘟闯关记
一种单目相机/三轴陀螺仪/里程计紧组合导航算法
深度观察
深度观察
深度观察
基于单目视觉的仓储物流机器人定位方法探讨
透 月
单目SLAM直线匹配增强平面发现方法
基于CAD模型的单目六自由度位姿测量