单目视觉里程计性能估计

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数据集上的量化结果对比

单目视觉里程计性能估计相关推荐

  1. 基于地平面的单目视觉里程计绝对尺度估计

    点云PCL免费知识星球,点云论文速读. 文章:Ground Plane based Absolute Scale Estimation for Monocular Visual Odometry 作者 ...

  2. 基于平面几何精确且鲁棒的尺度恢复单目视觉里程计

    标题:Accurate and Robust Scale Recovery for Monocular Visual Odometry Based on Plane Geometry 作者:Rui T ...

  3. 基于地面几何约束的单目视觉里程计精确鲁棒尺度恢复(ICRA 2021)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨paopaoslam 来源丨泡泡机器人SLAM 标题:Accurate and Robust S ...

  4. 基于点线特征的激光雷达+单目视觉里程计

    标题:Lidar-Monocular Visual Odometry using Point and Line Features 作者:Shi-Sheng Huang1, Ze-Yu Ma1, Tai ...

  5. SLAM论文笔记-使用点和线特征的激光雷达-单目视觉里程计

    使用点和线特征的激光雷达-单目视觉里程计 首发在泡泡机器人slam公众号 标题:Lidar-Monocular Visual Odometry using Point and Line Feature ...

  6. 单目视觉里程计的尺度问题的疑问?

    SLAM是个坑- 经过一段时间对SLAM的了解,原来是我理解有错误,得到的尺度已经是统一的,只是不知道它的真实尺度是多少. 贴一个不错的视觉里程计简介的链接: https://blog.csdn.ne ...

  7. 单目视觉里程计--基于视差角的单目视觉里程计MPVO

    单目视觉里程计–基于视差角的单目视觉里程计MPVO 图像预处理说明 在介绍本算法之前,先说明图像处理的基本知识.环境中的地图点,地图点的集合就是点云,地图点就是图像处理时的特征点.地图点在相机上的观测 ...

  8. DEMO: 一种单目视觉里程计的深度增强方法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:robot L | 来源:知乎 https://zhuanlan.zhihu.com/p/149 ...

  9. SLAM | 使用三维位姿图优化减少单目视觉里程计(3D Visual Odometry)定位轨迹的漂移(附源代码)

    ===================================================== github:https://github.com/MichaelBeechan CSDN: ...

最新文章

  1. linux shell 字符串 文件内容 大小写 转换 替换
  2. 安装ESXI 5.1
  3. Xcode中C、C++、Object-C3种语言的混编
  4. Java伪装csrss_结束伪装成系统进程名的进程的批处理
  5. python 【递归 及 二分法】
  6. java中this关键字的作用
  7. 快讯:永中集成Office的核心技术落入谁的手?
  8. 专业的屏幕录像软件使用教程?
  9. 运营人必备工具,收藏帖
  10. 牛顿法 泰勒二次展开式
  11. Java项目:调查问卷管理系统(java+SpringBoot+Vue+ElementUI+Maven+mysql)
  12. Kaggle Top1% 是如何炼成的!
  13. 怎么进入云计算这个行业?新手怎么学习云计算?
  14. java mongodb开发_Java 操作 MongoDB
  15. 网络设备监控之思科Cisco设备监控及SNMP配置
  16. cesium的鼠标事件
  17. Scala与Java语言的差异
  18. 微软Exchange服务器被黑客攻击以部署Cuba勒索软件
  19. 淘宝系统 B2C电子商务系统UML建模 范例
  20. 力扣算法学习(十二)

热门文章

  1. 2022-2028年中国康养地产行业市场需求前景及投资战略分析报告
  2. 最常见NLP任务练手项目汇总
  3. c/c++中的const
  4. 将文件名和文件修改时间批量输出至Excel中
  5. shell 批量转换文件编码
  6. 操作系统学习笔记 第六章:设备管理(王道考研)
  7. PyTorch 图像分类
  8. MindSpore接口mindspore::api
  9. 车联网,挖掘数据价值
  10. 在 CUDA C/C++ kernel中使用内存