文章标题:D3VO: Deep Depth, Deep Pose and Deep Uncertainty for Monocular Visual Odometry
摘要:
我们提出的D3VO单目视觉里程计框架从三个层面上利用了深度学习网络,分别是:利用深度学习的深度估计,利用深度学习的位姿估计,以及利用深度学习的不确定度估计。首先我们提出了一个在双目视频上训练得到的自监督单目深度估计网络。特别的,它利用预测亮度变换参数,将训练图像对对齐到相似的亮度条件上。另外,我们建模了输入图像像素的亮度不确定性,从而进一步提高深度估计的准确率,并为之后的直接法视觉里程计提供一个关于光照残差的可学习加权函数。评估结果显示,我们提出的网络超过了当前的sota自监督深度估计网络。D3VO将预测深度,位姿以及不确定度紧密结合到一个直接视觉里程计方法中,来同时提升前端追踪以及后端非线性优化性能。我们在KITTI以及EuRoC MAV数据集上评估了D3VO单目视觉里程计的性能。结果显示,D3VO大大超越了传统的sota视觉里程计方法。同时,它也在KITTI数据集上取得了可以和sota的stereo/LiDAR里程计可比较的结果,以及在EuRoC MAV数据集上和sota的VIO可比较的结果。
一、引入:
深度学习已经扫荡了计算机视觉领域中的很多领域,不仅有高层次的任务,如目标分类,检测以及分割,也包括低层次任务,如光流估计,兴趣点检测以及表述。然而,在SLAM或者是视觉SLAM领域,这个领域主要从图像序列中估计相机的相对位姿,该领域中,传统的基于几何的方法仍然占据主导。虽然基于单目的方法有着低硬件以及标定成本的优势,但他却由于尺度漂移以及低鲁棒性,在性能方面落后于Stereo SLAM以及VIO。最近有很多工作着力从结合深度神经网络方面来解决这些问题。研究表明,通过结合单目深度估计网络,单目VO的性能得到了很大提升,因为深度神经网络能够从大量数据中学习到度量尺度一致的深度信息先验。
然而,这种方式,仅有限的使用了深度神经网络。最近,关于自监督及无监督的单目深度估计网络的最新进展表明,相邻的单目帧位姿可以随深度一起预测。由于利用深度神经网络的位姿估计展现了很高的鲁棒性,那么就提出了一个问题:能否利用基于深度网络的位姿估计来提升传统的VO? 另一方面,因为SLAM/VO本质上是一个状态估计问题,其中不确定度扮演着很重要的地位,同时也有很多基于学习的方法开始估计不确定度。那么还有一个问题是:我们如何将这种不确定度的预测融入到基于优化的VO中呢?
在本文中,我们提出的D3VO作为单目直接法视觉VO,从三个层面上利用了自监督单目深度估计网络:深度,位姿以及不确定度估计,如图1所示。
为什么达到我们的目的,我们首先提出了一个在双目视频上训练的自监督网络。提出的自监督网络利用DepthNet部分从单帧图像中预测深度,利用PoseNet部分从相邻帧图像中预测位姿。利用修正的基线和预测的位姿,通过最小化静态立体翘曲和时间翘曲引起的光度误差,将两个网络联系在一起。通过这种方式,时间信息就被融入到了深度预测训练中,从而提升估计精度。为了解决训练图像对之间光照不一致的问题,我们的网络实时预测了训练过程中对源图像和目标图像进行亮度匹配的亮度变换参数。对EuRoC MAV数据集的评估表明,所提出的亮度变换显著提高了深度估计的精度。为了将deep depth集成到VO系统中,我们首先用有着度量尺度的预测的深度来初始化每个新的3D点。然后,我们采用(DVSO)中提出的virtual stereo term,将预测的位姿纳入非线性优化中。DVSO使用半监督的单目深度估计网络,依赖于从sota的Stereo VO系统中提取的辅助深度,而我们的网络只使用Stereo视频,没有任何外部深度信息监督。
虽然光照变化被明确地建模,但它并不是唯一可能违反亮度恒定假设的因素。其他因素,如非朗伯表面、高频区域和移动的物体,也会破坏这个假设。受最近深度神经网络关于随机不确定性的研究的启发,该网络将光度不确定性估计为以输入图像为条件的预测方差。因此,由可能违反亮度恒定假设的像素产生的误差被向下加权。学习到的光度残差的权重也促使我们将其合并到直接的VO中——因为自监督训练流程和direct-VO有着类似的光度目标,我们建议使用学到的权重来取代在传统的direct-VO中使用的光度残差权重函数,其通常是人工经验设定的,或者只用来解释特定算法的内在不确定度的。
鲁棒性是VO算法设计中最重要的因素之一。然而,传统的单目视觉VO在面对弱纹理区域或快速运动时缺乏鲁棒性。典型的解决方案是引入惯性测量单元(IMU)。但这增加了校准工作,更重要的是,在恒定速度下,IMUs不能在恒定速度下提供度量尺度。为了提高单目VO的鲁棒性,我们提出将来自深度网络的预估位姿合并到前端跟踪和后端非线性优化中。对于前端跟踪,我们用网络估计的位姿代替匀速运动模型的位姿。此外,估计的位姿,除了直接图像对齐,也被用作平方正则化。在后端非线性优化中,我们提出了一个与直接VO的光度能量项共同最小化的位姿能量项。我们在KITTI[25]和EuRoC上评估了所提出的单目深度估计网络和D3VO。我们在单目深度估计和摄像机跟踪方面都达到了sota性能。特别地,通过结合deep depth, deep uncertainty and deep pose,D3VO在KITTI上取得了与最先进的stereo/LiDAR 方法相媲美的结果,并且在EuRoC MAV上也取得了与最先进的VIO方法相媲美的结果,而这是一种单目方法。
二、相关工作:
基于深度学习的单目深度估计
监督学习在单目深度估计任务上展现了强大的性能。Eigen et al. [14, 15] 提出使用多尺度的CNNs,来直接从单个输入图像回归像素级的深度图。Laina et al. [43]提出了一种鲁棒的损失函数来提升估计精度。Fu et al. [24]将单目深度估计网络重构为一个有序回归问题,并取得了较好的性能。最近的研究开始以一种自监督和无监督的方式来解决这个问题,即使用光度误差来学习深度图[27,28,49,73,81,82,82,86],并采用可微插值[32]。我们的自监督深度估计网络是以MonoDepth2 [26]为基础,并通过引入预测亮度变换参数和光度不确定度对其进行了扩展。
基于深度学习的不确定度估计
深度学习的不确定性估计最近在[35,36]中进行了研究,提出了两种不确定性。Klodt et al. [40]提出利用随机不确定度概念来估计光度以及深度的不确定度,从而提升深度估计精度。但是,在表达光度不确定度是,他们没有考虑不同图像间的光照变化,这其实是可以被显式建模的。我们的方法以亮度对齐图像为条件,对光度不确定度进行预测,从而实现更好的光度不确定度估计。此外,我们也试图更好地利用我们已知的不确定性,并建议将其纳入传统的VO系统[16]中
基于深度学习的VO/SLAM
端到端深度学习神经网络已经被开发出来,可以直接预测图像之间的相对姿态[70,75,85]以监督学习模式,或无监督学习[46,73,82,86]。除了位姿估计外,CodeSLAM[2]还通过与相机姿态共同优化稠密几何的学习先验,实现了稠密重建。但在位姿估计精度方面,所有端到端方法都不如传统的基于立体视觉和惯性的VO方法。基于深度单目深度估计的成功,一些研究将预测的深度/视差图集成到单目VO系统中[68,78],以提高性能并消除尺度漂移。CNN-SLAM[68]将监督深度神经网络预测的深度融合到LSD-SLAM[17]中,利用贝叶斯滤波对深度图进行细化,在室内环境中取得了优异的性能[29,64]。其他文献[10,67]探讨了深度神经网络在基于特征的方法上的应用,其中[34]采用生成式对抗网络(GANs)作为一种图像增强方法,提高了VO在弱光下的鲁棒性。与我们的工作最相关的是(DVSO)。DVSO提出了virtual stereo term,将深度估计从半监督网络输入到direct-VO管道中。特别是,DVSO的表现大幅优于其他单目VO系统,甚至可以达到与最先进的立体视觉测程系统相当的性能[53,74]。DVSO仅仅利用了深度,而我们提出的D3VO在多个层面上利用了深度神经网络的power,从而将更多的信息整合到直接的VO管道中
三、方法:
首先,我们介绍了一种新型的自监督神经网络,它可以预测深度,位姿以及不确定度。该网络还估计仿射亮度转换参数,以自监督的方式对齐训练图像的照度。光度不确定度是根据每个像素可能的亮度值[35,40]的分布来预测的。此后,我们将介绍D3VO作为一个direct-SLAM框架,将预测的属性合并到跟踪前端和BA后端。
3.1自监督网络
所提出的单目深度估计网络的核心概念是自监督训练体制,它同时利用DepthNet学习深度,通过PoseNet利用视频序列学习运动[26, 86]。这种自监督训练是通过最小化时间立体图像和静态立体图像之间的光度重投影误差来实现的:
其中V是I_t上面所有像素的集合,t^{’}是所有源帧的索引。在我们的设置中I_t是左图像,而I_{t^{'}}包含了两个相邻的时间帧和它所对应的右帧。也就是说I_{t^{'}}in{I_{t-1},I_{t 1},I_{t^{s}}} 。每像素最小损失是在Monodepth2中被提出来,用来处理不同源图像之间的遮挡问题的。
I_{t^{'}{rightarrow}t}是通过利用预测深度D_t,相机位姿T_t^{t^{'}},相机内参K以及可微分双线性采样器,来变换时间立体图像对合成得到的[32]。注意, I_{t^{s}{rightarrow}t} 中的变换T_t^{t^{s}} 是已知并恒定的。DepthNet也利用左图I_t预测右图I_t^{s}的深度 D_t^{s} ,采用[27]提出的方法。D_t^{s}的训练要求合成 I_{t{rightarrow}t^{s}},以及与 I_t^{s}比较。 为了简化,我们之后将只细节描述关于左图的损失。
通常,公式化的光度误差表示如下(基于关照一致性假设):
然而,由于相机的照度变化和自动曝光的L1和SSIM[76]都不是固定不变的,因此也会违反这一原则。因此,我们建议使用预测亮度转换参数来明确地建模相机曝光变化。
亮度转换参数。相机曝光调整引起的图像强度变化可以用a、b两个参数的仿射变换来表示:
虽然这个公式很简单,但是实践证明它在direct VO/SLAM中非常有效[16, 18, 33, 74],其建立在亮度恒定假设上。受这些工作的启发,我们提出预测这个变换的参数a,b,用来对齐I_t和I_t^{'} 的亮度条件。我们将Eq 1重写成以下形式:
其中a_{t{rightarrow}t^{'}} 和b_{t{rightarrow}t^{'}} 代表对齐I_t和I_{t^{'}}亮度的变换参数。这两个参数都可以以自监督的方式训练。图 3展示了在EuRoC MAV[5]上的仿射变换例子。
光度不确定性 仅仅建模仿射亮度变换是不足以涵盖所有违反亮度恒定假设的失败情况的。其他情况,如非朗伯曲面和运动物体,是由相应物体的固有性质引起的,这些性质对于分析建模来说不是微不足道的[40]。因为这些方面可以被看作观测噪声,我们利用Kendall等人提出的深度神经网络的异方差随机不确定性概念。关键想法是预测每个像素的后验概率分布,用它关于真实标签y的均值和方差p(y|widetilde{y},sigma)参数化。举个例子,假设噪声是Laplacian的,需要最小化的对数似然函数如下:
注意训练时不需要sigma的真实标签。预测的不确定度,使的网络可以依据输入数据调整残差的权重, 从而提升模型对噪声数据以及错误标签的鲁棒性。
这里,我们设定"ground_truth" y是目标图像(I_t)上像素值,对于I_t上越强烈违反亮度一致性假设的区域,网络预测的sigma越大。与[40]相类似,我们通过将Eq 4转换成以下形式来达成目标:
这里,Sigma_t是I_t的不确定图。图 4展示了在KITTI以及EuRoC数据集上的预测不确定度图的结果。下一节,我们将展示学习得到的Sigma_t对于D3VO中加权光度残差有重要作用。
整个损失函数是自监督损失项和正则化损失项在多尺度图像上的和:
正则项是关于亮度转换参数以及D_t上边缘感知平滑损失L_{smooth}[27]。
总的来说,我们提出的DepthNet使用单张输入图像I_t预测D_t,D_t^{s}以及Sigma_t。PoseNet利用按通道拼接的输入(I_t,I_{t^{'}})预测T_t^{t^{'}},a_{trightarrow t^{'}} 以及b_{trightarrow t^{'}}。DepthNet以及PoseNet都是遵循UNet-like形式的卷积神经网络结构。请参阅我们提供的补充材料来了解网络架构和实现细节。
3.2 D3VO
在之前的章节,我们介绍了自监督深度估计网络用来预测深度图D,不确定度图Sigma 以及相对位姿T_t^{t^{'}}。在本节中,我们将描述D3VO是如何集成这些预测到一个窗口式稀疏光度BA范式的,像[16]中提出的那样。 注意,之后我们使用widetilde{.}的形式来指示预测量。
光度能量 D3VO的优化目标是最小化一个总的光度误差E_{photo},定义如下:
其中F是所有关键帧的集合,P_i是关键帧i中的点集合,obs(p)是关键帧集合,在其中点p是可见的,E_{pj}是p投影到关键帧j时的加权光度能量项:
其中N是像素p的8领域,如[16]中所定义的,a,b 是两盒非线性优化中的仿射亮度变换参数[16]。||cdot||_{gamma}是Huber范数。 [16]当图像梯度较大时,残差被降权处理,以补偿较小的独立几何噪声。在实际场景中,有许多噪声源,比如反射[40],这需要建模,以提供准确和稳健的运动估计。我们提出使用学到的不确定度widetildeSigma来制定权重函数:
这不仅依赖于局部图像梯度,而且还依赖于更高水平的噪声模式。如图 4 所示,提出的网络能够预测反射区域的高度不确定性,例如车辆的窗户,像骑自行车的人一样移动的物体,以及深度不连续处的物体边界。
重投影点p^{'}由式 Pi{(T_i^j Pi^{-1}(p,d_p))} 确定,其中d_p是点p在第i个关键帧坐标系下的深度(Z轴),Pi(cdot)是关于相机内参的投影变换函数。不同于传统的单目direct-SLAM随机初始化d_p[16,17],我们使用式d_p=widetilde{D_i}[p]初始化d_p。 受[78]启发,我们引入virtual stereo term E_p^{ } 到Eq 11中:
virtual stereo term优化了从VO估计的深度d_p,使其与所提出的深度网络预测的深度一致[78]。
位姿能量 与传统的direct-VO方法19,23]使用恒定速度运动模型初始化每个新帧的前端跟踪不同,我们利用连续帧之间的预测位姿来构建非线性因子图[41,47]。具体来说,当最新的关键帧(也是前端跟踪的参考帧)更新时,我们创建一个新的因子图。每一个新帧都参照具有直接图像对齐的参考关键帧进行跟踪[66]。此外,从深度网络预测的相对位姿被用作当前帧和最后帧之间的一个因子。优化完成后,我们将最后一帧边缘化,并将因子图用于后续帧的前端跟踪。关于因子图的可视化,请参考我们的支撑材料。跟踪前端估计得来的姿态,之后被用于初始化光度BA后端。我们进一步介绍了关键帧相对位姿T_{i-1}^{i}的先验,它使用预测姿势widetilde{T_{i-1}^{i}}。注意,widetilde{T_{i-1}^{i}}是通过拼接所有在i - 1和i的关键帧的预测位姿计算出来的。
其中,Log变换是李群到李代数的变换,4x4变换矩阵T到6维向量。Sigma^{-1}_{widetilde{xi}_{i-1}^i}是通过在每个连续的帧对之间传播协方差矩阵得来的,协方差矩阵被建模为一个常数对角矩阵。
总的能量函数被定义为:
在Eq 19中包含位姿先验项E_{pose}可以看作是将预先集成的IMU位姿先验以高斯噪声模型集成到系统中的一个类比。用高斯-牛顿法求E_{total}的最小值。综上所述,我们通过将预测的位姿作为初始化引入跟踪前端和优化后端,并将其作正则项添加到光度BA的能量函数中,从而改进了直接VO方法。
四、实验:
我们在KITTI和EuRoc MAV数据集上评估了提出的自监督单目深度估计网络以及D3VO。
4.1 单目深度估计
KITTI 我们在Eigen at el[15]的数据集上(应该是KITTI的一个子集)训练和评估了所提出自监督深度估计网络。网络是在立体图像序列上训练的,并采用了Zhou et al. [86]提出的预处理方法,给予了我们39810个training quadruplets,每个quadruplet包含3个(左)时间序列图像,和一个(右)立体匹配图像,其中4424个拿来做验证。表 1上半部分是与经过立体和单目设置训练的sota的单目方法Monodepth2[26]的比较,以及所提出的亮度变换预测(ab)和光度不确定度估计(uncer)的消融研究。
结果显示我们提出的深度估计网络在所有指标方面都超越了Monodepth2。消融研究揭示出,与Monodepth2相比的显著改善主要来自uncer,可能是因为在KITTI中有许多物体具有非朗伯表面,如窗户,也有独立运动的物体,如汽车和树叶,这些都违反了亮度恒定假设。表下半部分显示了与目前最先进的半监督方法的比较,结果表明我们的方法可以在不使用任何深度监督的情况下获得具有竞争力的性能。
在图 4中,我们展示了从Eigen测试集[15]得到的一些定性结果。从左至右分别显示原始图像、深度图和不确定度图。更多关于Cityscapses数据集[8]的定性结果和泛化能力,请参考我们的支撑资料。
EuRoC MAV EuRoC MAV数据集[5]是一个包含11个序列的数据集,根据光照和摄像机运动分为简单、中等和困难场景。这个数据集是非常具有挑战性的,因为强烈的运动和显着照明变化存在立体和时间序列图像之间。因此,我们认为它是一个很好的测试平台,可以验证我们的深度预测亮度转换参数的有效性。受Gordon et al.的启发,[28]他们最近通过投影提供的Vicon 3D扫描并过滤遮挡点,为序列V2_01生成了ground truth深度图,我们也使用这个序列进行深度评估。我们的第一个实验被设置成与[28]一致,我们用单目设置在MH(中等难度?)序列训练所有的模型并在V2_01上进行测试。结果展示在表 3中。
第二个实验,我们使用5个序列MH 01,MH 02, MH 04, V1 01和V1 02作为训练集来检查我们的方法在一个相对宽松的设置下的性能。为了训练我们移出了静态帧,得到12,691张图像,其中11,422张用于训练,1269张用于验证。我们用不同的对照训练我们的模型,并以Monodepth2[26]作为基线。表 2中的结果表明,我们的所有变化都优于基线,与在KITTI的情况相比,所提出的ab可以显著地改进在该数据集的结果。请参阅附录,获得更多关于ab的实验情况。事实上,值得注意的是表 3中的结果(在一个场景MH上训练,在另一个场景V上测试)比在另一个场景中要差,即表 2(同时在MH和V上训练),结果表明在非常不同的场景下,提高单目深度估计的泛化能力仍然是一个挑战。
4.2 单目VO
我们评估单独训练的D3VO在KITTI和EuRoC MAV上的VO性能。
KITTI Odometry KITTI Benchmark包含11(0-10)个序列,提供了ground truth姿态。如[78]所总结的一样,序列00,03,04,05,07属于本网络使用的Eigen分割训练集,因此我们将其余序列作为D3VO姿态估计评估的测试集。我们使用在[25]中提出的相对平移(trel)误差作为评估的主要指标。表 4显示了与其他最先进的单目(M)以及立体双目(S)VO方法在训练集上的比较。我们参考[78]比较方法的结果。传统的单目方法在大尺度的户外场景如KITTI中,由于尺度的漂移,显示出很高的误差。D3VO虽然也是一种单目方法,但其平均性能最好。表中还包括了深度(Dd)、位姿(Dp)和不确定度(Du)的融合研究。可以注意到,与表 1的结果一致,预测的不确定性对在KITTI的性能有很大的帮助。我们还将测试序列(11-20)的结果提交给KITTI测程评估服务器(link)。在提交时,D3VO的性能优于其他版本DVSO实现了最好的单目VO性能,可与其他最先进的激光雷达和立体声方法相媲美。
我们进一步将D3VO与sota的end-to-end深度学习方法和其他最近的混合方法进行比较,结果如表5所示。
注意,这里我们只显示了Seq.09和10上的结果,因为大多数端到端方法只提供了这两个序列上的结果。我们参考[28,78,83]比较方法的结果。D3VO实现了比所有端到端方法更好的性能。一般而言,将深度学习与传统方法相结合的混合方法比端到端方法的效果更好。
EuRoC MAV 如第4.1节所述,EuRoC MAV由于其强烈的运动和显著的光照变化,对于纯视觉的VO来说是非常具有挑战性的。VIO方法[44、56、71、72]通过集成IMU测量来预先获得一个姿态或运动,同时估计绝对尺度,从而主导这个benchmark。我们比较了D3VO和其他sota的单目VIO (M I)以及立体VIO (S I)方法,在MH_03_medium,MH_05_difficult,V1_03_difficult,V2_02_medium,V2_03_difficult序列上的结果。所有其他序列都用于训练。我们参考了[9]中所提到的M I的方法结果。DSO和ORB-SLAM的结果作为基线。我们还展示了PoseNet(end-to-end VO)的结果。对于评估指标,我们使用绝对轨迹误差(ATE)的均方根(RMS),在估计值与ground truth对齐之后。结果如表 6所示,综合了深度、位姿和不确定性的深度神经网络的框架,D3VO显示了高准确性和鲁棒性,并能够提供与其他的sota的VIO方法可比的结果,且只使用一个摄像头。我们还展示了融合预测深度(Dd)、位姿(Dp)和不确定性(Du)的消融研究,位姿预测的融合显著提高了V1_03_difficult和V2_03_difficult的性能,当摄像机发生剧烈运动时。
图5显示了在MH_03 和V1_03序列上, DSO[16],ORB-SLAM[52],视觉惯性DSO[72],我们提出的end-to-end VO的预测位姿,D3VO的轨迹定量比较结果。5中方法在MH_05_difficult上都表现不错。然而在V1_03_difficult上,即运动较强,在时域和立体图像之间存在很多亮度不一致的情况下,相较于VI-DSO,D3VO仍然可以提供可观的结果,且只使用一个摄像头。
五、结论:
我们将D3VO方法作为一种单目VO方法提出,利用深度网络在三个层次上的预测能力,综合单目深度、光度不确定度和相对相机位姿的预测,提高了几何VO方法的性能。为此,我们首先引入了一种新的自监督单目深度估计网络,该网络利用预测亮度变换参数明确地处理训练集的光照变化。该网络在KITTI和EuRoC MAV上取得了sota的性能。之后,将预测的深度、不确定性和位姿引入直接VO管道的前端跟踪和后端非线性优化。我们系统地评估了两个数据集上D3VO的VO性能。D3VO在KITTI达到了最新的sota性能,并在具有挑战性的EuRoC MAV上实现了sota的性能,可与领先的单目惯性和立体惯性方法相媲美,且只使用一个摄像头。