单目视觉里程计性能估计

单目视觉里程计性能估计

D3VO: Deep Depth, Deep Pose and Deep Uncertaintyfor Monocular Visual
Odometry

论文地址:https://arxiv.org/pdf/2003.01060.pdf

摘要

CVPR2020一篇关于视觉里程计和深度估计结合的文章,一作是很多人熟悉的杨楠大佬。这篇文章也是继DVSO又一篇DSO与深度估计结合的文章。

提出D3VO作为单目视觉里程计的新框架,该框架利用网络在三个层面的信息–深度,位姿和不确定性估计。首先提出了一种新颖的训练于双目视频的自监督单目深度估计网络,该网络没有使用任何外部监督信号,通过预测的亮度转换参数将训练图像对调整为相似的光照条件, 此外,还对图像中像素的光度不确定度进行了建模,这样不仅提高了深度估计的准确性还为DSO中的光度残差提供了一个学习过的加权函数。评估结果表明,所提出的网络优于最先进的自监督深度估计网络。D3VO 将预测的深度,位姿和不确定性紧密结合到直接视觉里程计中的前端跟踪以及后端非线性优化模块里。在KITTI和EuRoC MAV数据集对D3VO进行了评估。结果表明,D3VO在很大程度上优于最新的传统单目VO方法。它还可以达到与KITTI上最先进的双目/ LiDAR测距法, EuRoC上视觉惯导SOTA算法相媲美的结果。

单目视觉里程计性能估计

背景知识

深度学习已经席卷了计算机视觉的大部分领域——不仅是像对象分类、检测和分割这样的高级任务[30,39,58],还有像光流估计[12,65]和兴趣点检测和描述[11,13,79]这样的低级任务。然而,在同时定位和映射(SLAM)或视觉里程计(VO)领域,传统的基于几何的方法(16、17、53)仍然占主导地位。虽然单目算法[16,52]具有优势的硬件成本和较少的校准工作,由于尺度漂移[62,77]和低鲁棒性,无法实现与立体声[53,74]或视觉惯性里程计(VIO)[44,54,56,72]相比的竞争性能。通过利用深层神经网络来解决这个问题已经做了很多努力[48,68,80,83]。研究表明,在深度单目深度估计网络[26,27,43,78]中,深度网络能够通过从大量数据中学习先验知识来估计具有一致尺度的深度图,从而提高了单目VO的性能[42]。然而,用这种方法,深层神经网络只能在有限的程度上使用。无监督单目深度估计网络的最新进展[26,86]表明,相邻单目帧的姿态可以与深度一起预测。由于深部神经网络的姿态估计具有很高的鲁棒性,有一个问题产生了:深部预测的姿态是否可以用来提高传统的VO?另一方面,由于SLAM/VO本质上是一个状态估计问题,其中不确定性起着重要的作用[19,63,69],同时许多基于学习的方法已经开始估计不确定性,下一个问题是,如何将这种不确定性预测纳入基于优化的VO中?在本文中,提出了D3VO作为一个框架,用于单目(无特征)视觉探索自监督单目深度估计网络的三个层次:深度、姿态和不确定性估计,如图1所示。为此,首先提出了一个纯自监督的立体视频训练网络。该自监督网络利用深度网预测单个图像的深度,利用PoseNet预测相邻两帧图像之间的姿态。这两个网络是通过最小化由静态立体扭曲与直线基线和使用预测姿势的时间扭曲引起的光度误差来桥接的。这样,在深度训练中加入时间信息,可以得到更精确的估计。为了处理训练图像对之间的不一致照明,网络预测亮度变换参数,这些参数在训练过程中使源图像和目标图像的亮度保持一致。对EuRoCMAV数据集的评估表明,提出的亮度变换显著提高了深度估计精度。为了将深度集成到VO系统中,用一个度量尺度用预测的深度初始化每个新的3D点。然后采用Deep-virtual-stereo-Odometry(DVSO)[78]中提出的虚拟立体项,将预测的姿态纳入到非线性优化中。与DVSO使用依赖于从最先进的立体VO系统中提取的辅助深度的半监督单目深度估计网络[74]不同,网络仅使用立体视频,而没有任何外部深度监督。

主要贡献

  1. 本文提出了一个双目视频自监督深度估计网络,另外为了解决训练图片对之间的光照不一致,网络还预测了亮度变换参数,对原图片和目标图片之间的亮度进行了校准。为了将深度网络与VO系统进行结合,作者将每一个3D点用预测的深度进行初始化,然后利用DVSO中的virtual stereo term将预测的位姿整合进非线性优化中。

  2. 尽管已经对光照变换进行了建模,但是光照并不是唯一违反光照不变假设的因素(动态物体等等也会),所以作者还对光度不确定性进行了预测,降低违反假设的像素的权重,这个学习到的权重函数可以替换传统VO系统里面基于经验设置的加权函数。

  3. 鲁棒性也是VO算法的一个特别重要的因素,因此作者将预测出的位姿整合进前端跟踪和后端非线性优化中。在前端跟踪模块,作者用预测的位姿去替换之前的匀速运动模型,另外这个位姿也作为直接图像校准的平方正则项。在后端优化中,作者提出了位姿能量项和之前的能量目标函数放在一起优化。

算法流程

  1. 自监督深度估计

本文的深度估计模块其实是源自于monodepth2(细节可以参考原论文)。优化目标函数如下

单目视觉里程计性能估计

函数的目的是最小化静态双目图片之间的光度重投影误差损失,V表示所有的像素, It表示左目图片,
It’包括相邻帧和右目图片. 函数是由SSIM和L1loss组成,这个目前比较固定的深度估计损失函数搭配。

单目视觉里程计性能估计

创新点在于作者对图片之间的光照参数进行了预测,这部分其实借鉴于DSO。

单目视觉里程计性能估计

将修改后的I带入原来的目标函数就是新的的深度估计自监督损失。但是仅仅考虑光照变换是远远不够的,所以正如前面提到的, 作者对光度不确定性进行了预测,所以自监督损失函数又引入了有关不确定性的参数,

单目视觉里程计性能估计

最终的损失函数是自监督损失和多尺度图片的正则化损失之和。

单目视觉里程计性能估计

其中,

单目视觉里程计性能估计

s代表多尺度因子。

  1. D3VO

单目视觉里程计性能估计

系统框图,最左边是网络结构,中间是视觉里程计可视化结果,最右边是网络输入和输出可视化。

2.1 光度能量

D3VO目的优化如下光度能量函数,

单目视觉里程计性能估计

这个能量函数和DSO中的一致,不再过多介绍,本文中的不同点是作者引入了virtual stereo
term,关于这一点可以去看看DVSO的原文.

单目视觉里程计性能估计
单目视觉里程计性能估计
这个新增项会优化VO得到的深度,使其和深度网络的结果保持一致。

2.2 位姿能量

与传统使用匀速运动模型的VO系统不同,作者利用连续帧之间预测出的位姿新建了一个非线性因子图,每有一个最新关键帧就会创建一个新的因子图。另外,来自深度网络预测出的位姿会作为当前帧和最后一帧的因子(关于这部分可以去看作者的补充材料)。
单目视觉里程计性能估计

这个位姿能量其实可以看做VIO系统中的IMU预积分先验,因为下面新的能量函数和VIDSO特别像. 通过引入预测出的位姿作为初始化来提升跟踪和非线性优化模块,同时也把他们作为正则项加入到光度BA中。

单目视觉里程计性能估计

实验结果

作者分别再KITTI和EuRoC数据集上进行了深度估计评测。

单目视觉里程计性能估计

KITTI上的深度估计结果对比,uncer代表光度不确定性,ab代表亮度变换参数,full代表两个全都包括。

单目视觉里程计性能估计

作者提出的深度估计模块优于之前的SOTA算法monodepth2.引入光照变换参数和不确定性被证实确实可以提升深度估计的效果.

EuRoC数据集上的结果

单目视觉里程计性能估计

数据集上的可视化结果,最左边是原输入图像,中间是深度估计结果,最右侧是不确定性可视化结果.

单目视觉里程计性能估计

KITTI数据集上的视觉里程计结果, D3V在这些sequence上的表现超过之前的传统SLAM工作.

单目视觉里程计性能估计

与其他深度估计位姿估计网络在09,10上的评测结果对比,D3VO的性能也是最好的.

单目视觉里程计性能估计

不同VO系统在EuRoC数据集上的位姿结果对比

单目视觉里程计性能估计

单目VO系统,VIO系统和深度网络在EuRoC数据集上的量化结果对比