论文笔记_S2D.18_2019-ICRA_DeepFusion: 基于单视图深度和梯度预测的单目SLAM实时稠密三维重建
目录
基本情况
摘要
1 介绍
2 方法
主要贡献
算法结构
A.网络结构
B.半稠密估计
C.优化
主要结果
基本情况
- 题目:DeepFusion: real-time dense 3D reconstruction for monocular SLAM using single-view depth and gradient predictions
- (深度融合: 基于单视图深度和梯度预测的单目SLAM实时稠密三维重建)
- 作者:Laidlow, T., Czarnowski, J., & Leutenegger, S
- Dyson Robotics Laboratory, Imperial College London, UK
- 出处:Laidlow T, Czarnowski J, Leutenegger S. DeepFusion: Real-time dense 3D reconstruction for monocular SLAM using single-view depth and gradient predictions[C]//2019 International Conference on Robotics and Automation (ICRA). IEEE, 2019: 4068-4074.
摘要
虽然由稀疏单目SLAM系统创建的基于关键点的地图有利于相机位姿跟踪,但对于许多机器人任务,可能需要稠密的三维重建。深度相机的相关解决方案受限于工作范围和室内空间,而且基于最小化帧间光度误差的稠密三维重建系统通常约束较差且存在尺度模糊问题。为了解决这些问题,我们提出了一个三维重建系统,利用卷积神经网络(CNN)的输出,为包含度量尺度的关键帧生成完全稠密的深度图。我们的DeepFusion系统能够在GPU上实时的进行三维重建。它利用网络学习的不确定性,以概率的方式将半稠密多视图立体算法的输出与CNN的深度和梯度预测相融合。虽然深度学习网络只需要在每个关键帧上运行一次,但我们可以优化深度地图通过结合新的帧图像,以便不断利用新的几何约束。根据其在合成数据集和真实世界数据集上的性能表现,我们证明了DeepFusion系统至少具有和其他同类的系统一样好的性能。
1 介绍
从运动中恢复结构(SfM)和视觉同时定位和制图(SLAM)系统的目标之一是通过移动摄像机逐步创建3D场景重建。
- 诸如MonoSLAM [1],PTAM [2]和ORB-SLAM [3]之类的稀疏SLAM系统会创建关键点的稀疏3D地图。
尽管这些功能可用于摄像机跟踪,但对于安全的机器人导航,增强现实和操纵任务而言,密集重构可能是首选。密集的重建系统,
- 例如DTAM [4]和REMODE [5],通常通过在几帧上最小化光度误差来优化深度值,来创建稠密的场景表示。
不幸的是,由于存在遮挡物,均匀或重复的纹理,因此通过最小化光度误差进行深度估计并没有得到很好的约束。为了解决这个问题,
- 稠密系统经常使用基于平面([6] – [10])或平滑度假设([4],[5])的正则化器。
- LSD-SLAM [11]通过仅重建那些具有强图像梯度的点解决了这个问题,因此只能产生半密集的重建。
单目重建系统还存在固有的比例模糊性,因为无法仅根据图像对应关系确定相机的平移。
- 通过将基于视觉的测量值与惯性测量单元(IMU)的读数融合在一起,可以解决这种尺度的不确定性。
- 但是,在加速度较低的情况下(例如,相机静止不动时),使用低等级IMU时几乎看不到刻度。
解决单眼密集重建中这些问题的一种方法是使用深度摄像头([12]和[13]采用的方法),但是深度摄像头的范围有限,消耗的功率更多,并且通常不能在强烈的阳光下的室外或户外工作。
近来,随着计算机视觉中深度学习的迅速增长,已经提出了几种数据驱动的稠密重构方法。据推测,这些系统中使用的网络能够通过利用一些有关观测对象及其空间关系的知识来对场景的结构进行预测。尽管许多方法都主张使用完全端到端的框架(例如[14] – [19]),但仍有一些工作证明了将几何约束和先验知识相结合的好处。
- 如[20]所示,基于几何的系统在高图像梯度的区域(通常在对象的边缘)上表现最佳,但在纹理低的内部区域上表现不佳,而基于学习的系统通常在内部点上表现较好,但边缘模糊对象。尽管有互补性的证据,但是将学习与几何相结合的最佳方法仍然是一个未解决的问题。
- 例如,在[21]中,作者创建了基于DTAM的密集单眼SLAM系统,但在深度图上使用CNN的表面法线预测作为强先验,而不是使用平滑度正则化器。其他方法使用几何重构作为网络的输入,然后“填充”任何缺失的深度数据[22]或对其进行优化[23]。
将网络用作重建管道的最后阶段的一个问题是,每次更新底层几何信息时,都必须计算出昂贵的网络传递,这对于实时增量系统而言可能太慢了。因此,已经提出了许多采用网络深度预测并利用几何约束对其进行精炼的方法。
- 在[20]中,作者计算了每个关键帧的网络深度预测,并用每个新帧更新了一个半密集多视图立体深度图。然后根据与图像结构有关的一组可调权重对两个深度估计值进行插值。
- 另一种方法[24]预测每个关键帧图像的表面法线和遮挡边界,然后尝试在深度相机的输出中填充缺失值。不幸的是,求解时间太慢,无法在增量SLAM系统上使用。
- 在[25]中,CRF用于完善回归结果。在[26]中,这极大地启发了我们的工作,作者能够使用完全连接的CRF来创建准确的密集重建,并使用单眼SLAM系统生成的稀疏3D点集来预测网络的不确定性。但是,由于它们使用单目系统的输出来约束密集的重建,因此所得的深度图在比例上不明确。在我们的工作中,我们使用通过深度梯度预测将重建过程中的相邻像素链接在一起来保持全局一致性的想法,并将其扩展为包括绝对比例的估计。
CNN-SLAM [27]也许是与我们最具有可比性的工作,它使用网络预测每个关键帧的缩放深度图,然后通过较小的基线立体约束条件对其进行实时优化。 但是,CNN-SLAM中的改进是在每个像素的基础上完成的,因此无法保持全局一致性。
在本文中,我们提出了DeepFusion,这是一种3D重建系统,能够从RGB图像和单眼SLAM系统提供的比例模糊的姿势中实时实时生成密集的深度图。 我们使用网络预测的深度梯度作为对相邻像素的约束,以确保重建中的全局一致性,并了解到不确定性以概率方式融合了不同的模态。 请参见图1以获得关键帧重建示例。
2 方法
主要贡献
- 1.提出了一种三维重建技术DeepFusion该系统能够根据单目SLAM系统提供的RGB图像和尺度模糊的姿态信息,实时的生成大规模的稠密深度图。
- 2.使用网络预测的深度梯度作为对相邻像素的约束,以确保重建中的全局一致性,并利用深度学习的不确定性,以概率方式融合不同输出。
算法结构
图1 DeepFusion的框架
DeepFusion用一系列关键帧深度图表示观察到的几何体。对于每个新的RGB图像,系统从单目SLAM系统获取姿势,然后使用已有的方法更新活跃的关键帧的半稠密深度估计值。如果在半稠密估计中,摄像机的平移量大于λtrans或内部特征点数小于λinliers,则新的关键帧将被创建。为了保持较高的帧速率,本文的网络输出对于每个关键帧只生成一次。利用CNN,我们从新的关键帧图像中预测了log对数深度、log对数深度梯度和相关的不确定性。这种类型的深度表示在数学运算上更适合于网络预测而且当为负深度值的时候是有意义的,并且两个log深度之间的差能够表示两个深度值之比,具有尺度不变性。本文还选择预测图像平面上x和y方向的log对数深度梯度,而不是曲面法线,以保持优化问题的线性,因为这避免了需要执行点积和归一化的操作。单视图深度预测是一个高度欠约束的问题,在实践中,网络似乎更容易对有细密纹理的局部几何图形进行精确预测,而不是绝对的每个像素的深度。故分别预测绝对log对数深度值和log对数深度梯度,同时利用各自的不确定性来反映网络在这两个不同任务中能力的差异。如果没有新的关键帧被创建,则当前的半稠密深度图和网络输出将融合更新当前深度图。以下是本文算法实现的关键点:
A.网络结构
本文采用了U-Net网络结构,同时增加三个或者更多的相同解码器来预测log深度值的不确定性、log深度梯度和log深度梯度值不确定性。所有的图像输入输出分辨率为256*192。网络学习中采用最大似然函数作为代价函数,进而用来预测均值和方差。
B.半稠密估计
对于关键帧中具有充足纹理特征的每一个像素点xi,会沿着极线搜索其深度值dsemi,i,以使五个等距空间点的平方差之和最小化。如果存在该像素当前深度估计值,则在间隔dsemi,i-2δsemi,i至dsemi,i+2δsemi,i上搜索其值。要不然搜索在整个极线上进行。xi表示关键帧上一个像素点,TWC0表示关键帧的估算位姿,TWC1表示参考帧的估算位姿,则有灰度误差表达式如下:
本文采用有限差分来近似误差函数的雅克比:
采用如下公式近似表示每一次半稠密测量的不确定性,然后将半稠密测量的深度与不确定性转化为对数空间中与深度学习网络的输出进行匹配:
C.优化
通过最小化如下代价函数来更新当前帧深度预测:
半稠密代价函数项对已有效估算得到的半稠密对数深度值的像素集施加一元约束。
其中深度学习网络的深度代价函数项对所有像素的融合深度图施加了一个一元约束,具体如下所示:
为了在将半稠密和深度学习网络的深度值融合在一起的同时保持全局一致性,我们添加了一个额外的代价函数项,该函数项在给定像素及其四个领域像素点之间施加成对约束:
主要结果
图2 关键帧选择的效果图,其中顶部结果来自ICL-NUIM Office2数据集,中部来自ICL-NUIM LivingRoom1数据集,底部来自TUM RGB-D fr2 desk数据集。从左至右:输入图像、地面真实深度、半稠密深度估计、网络深度预测、x方向网络深度梯度预测、y方向网络深度梯度预测、优化后的深度图。
图3 来自SceneNet RGB-D数据集的网络预测示例。从左至右:输入图像、log对数深度预测、log对数深度不确定性预测、x方向log对数深度梯度预测、x方向log对数深度梯度不确定性预测、y方向log对数深度梯度预测、y方向log对数深度梯度不确定性预测。
表1 不同的系统在ICL-NUIM和TUM RGB-D数据集上的重建精度的比较(在地面真实值的10%以内)
表2 DeepFusion正确深度估计所占百分比实验结果
表3 从正确的深度值所占百分比分析成对约束对重建精度的重要性
参考:【泡泡点云时空】DeepFusion:基于单视图深度和梯度预测的单目SLAM实时稠密三维重建
论文笔记_S2D.18_2019-ICRA_DeepFusion: 基于单视图深度和梯度预测的单目SLAM实时稠密三维重建相关推荐
- DeepFusion:基于单视图深度和梯度预测的单目SLAM实时稠密三维重建
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:DeepFusion: Real-Time Dense 3D Reconstruction fo ...
- KinectFusion基于深度的实时稠密三维重建TSDF开山之作
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨安如夏@知乎 来源丨https://zhuanlan.zhihu.com/p/281482545 ...
- NeuralRecon拜读:单目视频实时连贯三维重建
CVPR2021:NeuralRecon: Real-Time Coherent 3D Reconstruction from Monocular Video Code:https://github. ...
- 【论文笔记】半监督的多视图学习:Semi-supervised Multi-view Deep Discriminant Representation Learning
[论文笔记]Semi-supervised Multi-view Deep Discriminant Representation Learning 1. 概念 多视图学习(Multiview Lea ...
- 【EMNLP20 论文笔记】HGN:基于分层图网络的多跳阅读理解模型
Yuwei Fang, Siqi Sun, Zhe Gan, Rohit Pillai, Shuohang Wang, Jingjing Liu Microsoft Dynamics 365 AI R ...
- 【论文笔记】CIRNet:基于CycleGAN的无监督循环配准模型
本文是论文<UNSUPERVISED THREE-DIMENSIONAL IMAGE REGISTRATION USING A CYCLE CONVOLUTIONAL NEURAL NETWOR ...
- [深度学习论文笔记]Knowledge distillation from multi-modal to mono-modal segmentation networks从多模态到单模态分割的知识提取
Knowledge distillation from multi-modal to mono-modal segmentation networks 从多模态分割网络到单模态分割网络的知识提取 MI ...
- 【论文笔记】LARA:基于GAN的解决冷启动问题的推荐系统
本文是关于论文<LARA: Attribute-to-feature Adversarial Learning for New-item Recommendation>的阅读笔记. 由于冷 ...
- 【论文笔记】DSCN:基于深度孪生神经网络的光学航空图像变化检测模型
本文是论文<Change Detection Based on Deep Siamese Convolutional Network for Optical Aerial Images>的 ...
- 行为检测论文笔记【综述】基于深度学习的行为检测方法综述
摘 要: 行为检测在自动驾驶.视频监控等领域的广阔应用前景使其成为了视频分析的研究热点.近年来,基于深度学习的方法在行为检测领域取得了巨大的进展,引起了国内外研究者的关注,对这些方法进行了全面的梳理和 ...
最新文章
- 有效快速的学习微信小程序
- 来玩Play框架05 数据库
- Django中提供的6种缓存方式
- pytorch forward_pytorch使用hook打印中间特征图、计算网络算力等
- AUTOSAR从入门到精通100讲(131)-AURIX中DMA模块对TIM的FIFO数据搬运
- HDFS学习 Java连接hadoop
- 移动互联网“去哪儿”?
- Example-Based Facial Rigging
- 深度学习TensorFlow生产环境部署(环境准备篇)
- Quartz 定时任务 cron 表达式详解
- input onchange事件不触发 oninput onpropertychange onchange 实时监听
- 笑死人啦,史上最恶心的笑话
- HDC1080 驱动程序代码(C语言版)
- Ubuntu系统下搭建svn服务器(及设置SVN提交必须输入注释)
- 2022年版中国碳化硅(SiC)市场深度调研与投资可行性分析报告
- python 获取当前时间(年月日时分秒)
- excel怎么设置打印区域_用offset函数设置打印区域(有新增内容时自动扩展)
- ViewFlipper的用法
- JAVA 设计模式(全)
- windows cmd 执行命令文件路径带有空格的处理方式
热门文章
- 扩展JavaScript原生方法
- Luogu P5008 逛庭院
- can't find '__main__' module in '.'
- MVCPager学习小记
- Visual Basic 2012 借助DataGridView控件将Excel 2010数据导入到SQL server 2012
- SQL server sysobjects表说明
- UIApplication委托信息(多任务)
- struts1.x 标签库
- gridview為什麼分頁後,GridView1_RowDataBound就運行不了
- Java中的断言assert的用法