单目视觉里程计性能估计

摘要:
D3VO被提出作为一种新的单目视觉里程表框架,它使用了三个层次的网络信息——深度、姿态和不确定性估计。D3VO将预测的深度、姿态和不确定性紧密集成到直接视觉里程表的前端跟踪和后端非线性优化模块中。在本文中,D3VO被提出作为单眼(无特征)视觉的框架,以探索三个级别的自监督单眼深度估计网络:深度、姿态和不确定性估计,如图1所示。

单目视觉里程计性能估计 

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算法相媲美的结果。

 单目视觉里程计性能估计第1张

背景知识

深度学习已经席卷了计算机视觉的大部分领域——不仅是像对象分类、检测和分割这样的高级任务[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(细节可以参考原论文)。优化目标函数如下

 单目视觉里程计性能估计第2张

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

 单目视觉里程计性能估计第3张

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

 单目视觉里程计性能估计第4张

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

 单目视觉里程计性能估计第5张

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

 单目视觉里程计性能估计第6张

 其中,

单目视觉里程计性能估计第7张

  s代表多尺度因子。

2. D3VO

 单目视觉里程计性能估计第8张

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

2.1 光度能量

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

 单目视觉里程计性能估计第9张

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

 单目视觉里程计性能估计第10张

 单目视觉里程计性能估计第11张

 这个新增项会优化VO得到的深度,使其和深度网络的结果保持一致。

2.2 位姿能量

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

 单目视觉里程计性能估计第12张

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

 单目视觉里程计性能估计第13张

 实验结果

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

 单目视觉里程计性能估计第14张

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

 单目视觉里程计性能估计第15张

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

EuRoC数据集上的结果

 单目视觉里程计性能估计第16张

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

 单目视觉里程计性能估计第17张

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

 单目视觉里程计性能估计第18张

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

 单目视觉里程计性能估计第19张

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

 单目视觉里程计性能估计第20张

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

免责声明:文章转载自《单目视觉里程计性能估计》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WEBLOGIC启动后,重启后控制台进入缓慢、延迟,探查WEBLOGIC操作关于STATUS_FLOAT_INVALID_OPERATION(0xC0000090)异常下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

QSS基础-设置控件样式

1.QSS基础-设置类似控件的样式“QSS基础:QtStyleSheetQt样式表用于设置控件的样式和样式(例如控件的背景色、字体颜色、字体大小等)。功能与CSS相似。功能类似。“”从PyQt5.Qt重新导入*从PyQt5.QtGuidimport*从PyQt5.QtWidgetsimport*importsysclassBasicQSS(QWidget):...

浅谈 SQL 注入(注入篇)

1、 SQL注入1.1简介什么是SQL注入?它不过滤用户可以严格控制或没有限制的参数,以便用户可以将传入的参数和SQL语句组合成SQL语句,然后将其传输到web服务器。最后,它被传输到数据库以执行添加、删除、修改和查询等操作。基于此,用户可以获取数据库数据或提高其销毁数据库数据的权限。...

【解决方法】ModuleNotFoundError: No module named 'flask._compat'

起源最近发下很多人在我的python课程下面提问,关于安装完扩展运行程序的时候出现如下的莫名其妙的错误Traceback(mostrecentcalllast):File"manage_web.py",line2,infromapplicationimportapp,managerFile"/data/www/private_deploy/python3_y...

差分方程的零输入响应与零状态响应

差分方程的迭代分析方法有以下缺点:没有闭合解,不利于数学分析。某个时间的输出只能从头开始计算。本文介绍了差分方程的零输入响应和零状态响应分析方法。对于系统,这种分析方法可以很好地表达系统响应的物理意义=Y[-1]=0$Input Y[n]。回顾零输入响应和零状态响应的迭代计算,我们发现以下规则:$egin{align*}y[0]&=-&qqu...

利用油猴插件实现全网VIP视频免费看

利用油猴插件实现全网VIP视频免费看第一步:首先打开谷歌应用商店搜索tampermonkey安装这个插件第二步:在百度搜索框搜索油猴可以看到以下页面,点击进入。下载谷歌上网助手解压后,将后缀为crx的文件拖入即可。之后注册一个谷歌上网助手账后登录即可进入谷歌应用商店油猴插件...

Ubuntu安装时怎样分区

应该首先放置启动分区。并将引导设置为主分区。如果是双系统或多系统安装,通常可以选择逻辑分区。首先,Grub可以在1024柱面后面引导Linux内核;第二,即使有多个Linux安装,/boot也可以完全不共享。此外,非独立/引导分区仅占用根文件夹下约20MB的空间。所以决定是否启动。...