论文笔记_S2D.36_2017-CVPR_CNN-SLAM: 实时稠密单目SLAM与学习深度预测
目录
基本情况
摘要
1 介绍
2 相关工作
SLAM
单视图深度预测
3 提出的单目语义SLAM
3.1 相机位姿估计
3.2 基于CNN的深度预测与语义分割
3.3 关键帧创建和位姿图优化
3.4 逐帧深度细化
3.5 全局模型与语义标签融合
4 评估
4.1 与其他SLAM方法的比较
4.2 纯旋转运动下的精度
4.3 加入三维语义重建
5 结论
参考
基本情况
- 题目:CNN-SLAM: Real-time dense monocular SLAM with learned depth prediction
- 出处:Tateno, K., Tombari, F., Laina, I., & Navab, N. (2017). Cnn-slam: Real-time dense monocular slam with learned depth prediction. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 6243-6252).
- 视频demo: https://www.bilibili.com/video/av49294700/
- 相关代码:
- https://github.com/tum-vision/lsd_slam
- https://github.com/raulmur/ORB_SLAM2
- https://github.com/uzh-rpg/rpg_open_remode
- http://campar.in.tum.de/view/Chair/ProjectInSeg
摘要
随着卷积神经网络(CNN)在深度预测中取得了越来越多的进展,本文探讨了如何将卷积神经网络的深度预测用于高精度稠密单目SLAM系统中。我们提出了一种方法,CNN预测的稠密深度图与从直接单目SLAM获得的深度测量值自然融合在一起。我们的融合方案在单目SLAM方法效果不佳的图像位置进行深度预测,具有优势,例如低纹理区域,反之亦然。我们演示了使用深度预测来估计重建的绝对尺度,克服了单目SLAM的主要局限之一。最后,我们提出了一个框架,该框架可以有效地融合从单个帧获得的语义标签和稠密SLAM,从而从单个视图产生语义一致的场景重构。在两个标准数据集上的评估结果表明了我们方法的鲁棒性和准确性。
图1.提出的单目SLAM方法(a)可以估算出比现有技术(b)好得多的绝对尺度,这对于许多SLAM应用(例如AR)是必需的,骨骼被增强到重建中。 c)我们的方法可以从单一角度?融合3D和语义重建。
1 介绍
SfM和SLAM都是计算机视觉和机器人技术领域非常活跃的研究领域,其目的是实现3D场景重建以及通过3D和成像传感器进行相机姿态估计。最近,与移动深度传感器所获得的深度图融合在一起的实时SLAM方法得到了越来越广泛的应用,因为它们可用于:
- 从移动机器人到无人机以及从导航到机器人的多种类型的自主导航与建图,
- 同时也适用于许多增强现实和计算机图形学的应用。
- 除了导航和建图外,体积融合方法(例如Kinect Fusion [21]以及基于RGB-D数据的稠密SLAM方法[30,11])还可用于高精度场景重建。
但是,这种方法的主要缺点是深度相机有一些局限性:
- 尽管不是不可能在室外环境中工作,但的确大多数相机的工作范围有限,并且基于主动感应的相机无法在阳光下工作(或表现不佳),从而使重建和制图的精度降低。
通常,由于深度相机不如彩色相机普遍存在,因此许多研究兴趣集中在单个相机的稠密和半稠密SLAM方法上[22-DTAM-rgbd稠密重建,4-LSD-SLAM,20-ORB-SLAM]。这些方法通过对相邻帧对进行短基线立体匹配来估计当前视点的深度图,从而实现实时单目场景重建。前提假设是,相机会随着时间在空间中平移,因此可以将成对的连续帧视为一个整体。 而匹配通常是通过灰度不变性(直接法)或关键点提取和匹配(特征点法)来进行的。
单目SLAM方法的主要局限性是对绝对尺度的估计。实际上,即使相机位姿估计和场景重建准确执行,这种重建的绝对尺度本质上仍然是不精确的,这限制了单目SLAM在增强现实和机器人技术领域的大多数应用场景(如图1中b)。 一些方法提出将场景与一组预定义的3D模型进行匹配并通过目标检测来解决问题,基于估计的目标大小来恢复初始比例[6],但是在场景中缺少已知尺度的情况下该方法会失败。
单目SLAM的另一个主要局限在于——
- 在相机纯旋转运动下,由于缺乏立体基线,因此无法使用立体估计,从而导致追踪失败。
最近,出现了一种新的研究方法,该方法通过学习的方法解决了单个图像的深度预测问题。特别是,以端到端的方式使用深度卷积神经网络(CNN)[16、2、3]证明了即使在缺少单目所需条件(纹理,重复图案)的情况下,也能有相对较好的方法和良好的绝对精度,从而使深度图具有回归的潜力,来完成深度估计任务。
深度学习方法的一个优势是,
- 可以从例子中学习绝对尺度,从而可以从单个图像进行预测,而无需基于场景的假设或几何约束,这与[10,18,1]不同。
这种深度学习的主要局限性在于,
- 尽管全局准确,但深度边界往往会局部模糊:因此,如果像[16]中那样将深度融合在一起进行场景重建,则重建的场景将总体上缺少形状细节。
与此相关的是,尽管提出了几种用于单视图深度预测的方法,但迄今为止,深度预测在更高级别的计算机视觉任务中却被大多数人所忽视,文献[16]中给出了几个例子。本文工作的主要思想是,从两种方法中汲取优点,并提出一种单目SLAM方法,
- 该方法将深度网络和直接SLAM计算的单目深度估计融合在一起,进行深度预测,从而进行稠密场景重建,同时具有精确的绝对尺度和鲁棒的追踪能力。
- 为了恢复模糊的深度边界,将CNN预测的深度图作为稠密重建的初始估计,并通过类似于[4](LSD-SLAM)中的短基线立体匹配的直接SLAM方案逐步完善。
重要的是,边缘区域往往很模糊,而
- 短基线立体匹配则具有在预测深度图像上细化边缘区域的能力。
同时,从CNN预测的深度图获得的初始估计可以提供绝对尺度信息来进行位姿估计,因此在绝对尺度方面,与单纯的单目SLAM相比,CNN估计的位姿轨迹和场景重建更加精确。图1的a展示了一个例子,该示例说明了使用本文中提出的精确绝对尺度方法进行场景重建的有效性。此外,由于CNN预测的深度不会受到上述纯旋转问题的影响,因此可以使追踪更加鲁棒,因为它是在单个帧上单独进行估计的。
再者,由于可以在同一架构的不同计算资源(GPU和CPU)上
- 同时执行CNN的深度预测和
- 深度细化这两个过程,
因此该框架可以实时运行。
近期关于CNN的另一个研究方面是,相同的网络结构可以用于不同的高维回归任务,而不仅仅是深度估计:一个典型的例子是语义分割[3,29]。我们根据这一点作为我们框架的扩展,该框架使用像素级标签来将语义标签与稠密SLAM有效地融合在一起,从而从单个视图获得语义连贯的场景重建(如图1所示)。值得注意的是,就我们所知,语义重建仅在近期才有所发展,并且在单目情况下仅基于立体[28]或RGB-D数据[15]的方法还从未提出过。
我们使用两个针对单目SLAM和深度预测的公开数据集来评估我们的方法,重点是位姿估计和重构的精确性。由于CNN预测的深度取决于训练过程,因此我们展示的实验中,训练集是从与评估基准中完全不同的环境和RGB传感器中选取的,以证实我们的方法(特别是实用性)可用于新环境中。我们也展示了在真实环境中联合场景重建和语义标签融合的测试结果。
2 相关工作
在本节中,我们回顾了我们在框架内集成的两个领域(即SLAM和深度预测)的相关工作。
SLAM
关于SLAM有大量文献。 从要处理的输入数据类型的角度来看,方法可以分为
- 对于基于特征点法的单目SLAM,ORB-SLAM [20]是高精度位姿估计方面的最新成果。该方法从输入图像中提取稀疏ORB特征,以进行场景的稀疏重构以及估计相机姿态,还采用了局部BA优化和图优化。
- 对于直接单目SLAM,[22]的稠密追踪和建图(DTAM)通过使用短基线多视图立体匹配和正则化方法在GPU上实时进行稠密重构,因此在在图像中的低纹理区域的深度估计更加平滑。
- 此外,大规模直接SLAM(LSD-SLAM)算法[4]提出了使用半稠密地图表示的方法,该表示仅在输入图像的梯度区域上追踪深度值,这就有足够的效率在CPU上来实现实时直接SLAM。
- LSD-SLAM的扩展是recent Multi-level mapping(MLM)算法[7],该算法提出了在LSD-SLAM的基础上使用稠密方法以增加其密度并提高重建精度。
单视图深度预测
深度学习取得了越来越多的进展,从单一视图进行深度预测已在计算机视觉领域引起了越来越多的关注。
- 经典的深度预测方法采用手工选取的特征和概率图形模型[10,18]来生成规则化的深度图,通常对场景的几何形状有很强的假设性。
- 在深度估计精度方面,最近开发的深度卷积结构明显优于以前的方法[16、2、3、29、19、17]。有趣的是,[16]的工作(Deeper depth prediction with fully convolutional residual networks - S2D.16)展示了将深度预测作为一个模块用于稠密SLAM。特别的,预测的深度图被Keller用作基于点的融合RGB-D SLAM算法的输入[11- S2D.46],这表明虽然由于CNN的压缩,使投影模糊与空间信息丢失,从而使导致形状细节缺失,但基于SLAM的场景重建可以通过深度预测获得。
3 提出的单目语义SLAM
该框架的一个特别重要的阶段,也代表了我们的文章的一个主要贡献,是
3.1 相机位姿估计
3.2 基于CNN的深度预测与语义分割
每次创建新的关键帧时,都会通过CNN预测相关的深度图。我们采用的深度预测结构是基于[16]中提出的最新方法,它将残差网络(ResNet)[9]扩展为全卷积网络。具体来说,
- 架构的第一部分基于ResNet-50[9],并使用图像网络上的预先训练好的权重初始化[24]。
- 该体系结构的第二部分用一系列由非池化层和卷积层组合而成的残差上采样块,取代了ResNet-50中提出的最后一个池化层和全连接层。
- 在上采样之后,是drop-out层,最终卷积层输出表示预测深度图的单通道输出图。
3.3 关键帧创建和位姿图优化
使用预训练的CNN进行深度预测的一个局限是,如果用于SLAM的传感器和用于获取训练集的传感器内参不同,则3D重建的最终绝对尺度将不准确。 为了改善这个问题,我们使用当前摄像机的焦距和用于训练的传感器焦距之比来调整CNN回归的深度。
其中是由CNN直接从当前关键帧图像Ii回归的深度图。
图3展示了在ICLNUIM数据集[8]上进行过程的调整,效果非常显著(5)(比较(a)和(b))。如图所示,与CNN直接预测的深度图相比,调整后的性能有了显著的提高。改进后的位姿追踪精度和深度精度都得到了提高。
图3 (a)直接CNN深度预测 (b)深度调整后和 (c)深度调整和细化后(A)位姿轨迹精度 (B)深度估计精度
蓝色像素表示正确估计的深度,即误差在真实数据的10%以内。这是在ICL-NUIM数据集上进行比较的[8]。
此外,我们将每个深度图Dki与不确定性图Uki相关联。在[4]中,通过将每个元素设置为一个大的常量值来初始化这个图。由于CNN在每一帧上都是稠密图,但不依赖于任何时空正则化,因此我们提出通过基于当前深度图与在最近关键帧上的场景点之间的差异,来计算置信值,从而初始化我们的不确定性图。因此,这种置信度表示了每个预测深度值在不同帧之间的差异性:对于与高置信度相关联的那些元素,连续的求精过程将比[4]中的过程快并且有效得多。
具体地说,不确定性图Uki定义:为当前关键帧ki的深度图与最近关键帧kj的深度图之间的元素平方差,ki到kj的估计变换值为.
为了进一步提高每个新的初始化关键帧的精度,我们在使用新的输入帧(深度细化过程在第3.4小节中描述)对其深度图和不确定性图进行细化后,将其与从最近的关键帧(这显然不适用于第一个关键帧)传播的深度图和不确定性图进行融合。为了达到这个目的,我们首先定义了一个从最近的关键帧kj传播的不确定性图为:
其中 ,根据[4],是用于增加传播不确定度的白噪声方差(白噪声(white noise)是指功率谱密度在整个频域内是常数的噪声。 所有频率具有相同能量密度的随机噪声称为白噪声)。然后,将两个深度图和不确定性图按照加权方案融合在一起。
最后,位姿图也在每个新的关键帧处更新,方法是使用图中已经存在的关键帧创建新边,这些关键帧与新添加的关键帧有着相似的区域(即具有较小的相对位姿)。此外,关键帧的位姿每次都通过位姿图优化进行全局优化[14]。
3.4 逐帧深度细化
此阶段的目的是基于在每个新帧处估计的深度图,连续地细化当前关键帧的深度图。为了实现这一目标,我们使用了文献[5](Semi-dense visual odometry for a monocular camera)中描述的短基线立体匹配策略:在当前帧t的每个像素处计算深度图Dt,和沿极线的5个像素匹配的不确定性图Ut,这两个图通过相机姿态与关键帧进行对齐。
然后,将估计的深度图和不确定度图,直接与最近的关键帧ki的深度图和不确定度图融合,如下所示:
重要的是,由于提出了基于CNN的预测,关键帧与稠密深度图相关联,因此可以稠密地执行此过程,即关键帧的每个元素都被细化,而不是像[5]一样仅沿高梯度区域细化深度值。由于低纹理区域内的观测深度往往具有很高的不确定性(即Ut值较高),因此,所提出的方法自然会产生一个精细的深度图,其中靠近高强度梯度的元素将通过在每个帧处估计的深度进行精细化,而大量的低纹理区域内的元素将逐渐保持CNN的预测深度值,而不受不确定深度观测的影响。
总结:如何优化当前关键帧ki的深度?(关键帧kj -> 关键帧ki -> 新的帧t)
- 第0步,计算新的帧的Dt Ut 基于[5](短基线立体匹配)
- 第1步,使用上述Dt Ut 更新当前关键帧ki的深度图和不确定性图(公式10,11)
- 第2步,使用ki最近的关键帧kj传播过来的不确定图,更新ki的深度图和不确定性图(公式8,9)
图3展示了在ICL-NUIM数据集上进行深度图细化过程的高效[8]。图(c)表示,对深度图进行调整和深度细化后获得的性能,在深度估计和位姿追踪方面,相对于以前的情况有了显著改进。
3.5 全局模型与语义标签融合
4 评估
我们做了一个实验评估,以验证我们的方法在跟踪和重建精度方面的效果,方法是通过与两个公共数据集进行定量比较(4.1)。以及对纯旋转摄像机运动鲁棒性的定性评估(4.2)和语义标签融合的准确性(4.3)。
4.1 与其他SLAM方法的比较
我们将我们的方法与LSD-SLAM[4]和ORB-SLAM[20]这两种能公开实现的方法进行比较,这两种最新的方法分别代表了直接法和特征点法。为了使评估更加完整,我们还与REMODE[23]进行了比较,REMODE[23]是一种专注于稠密的单目深度图估计的最先进的方法。REMODE的实现取自作者的代码。最后,我们还将我们的方法与文献[16]中的方法进行了比较,[16]中的方法基于文献[27]作者提供的可行实现,使用CNN预测的深度图作为最新基于深度的SLAM方法的输入(融合了[11,27])。考虑到单目SLAM方法估计绝对尺度的模糊性,如[4,20]中的评估所示,我们还通过使用真值深度图bootstrapping(???不会翻)其初始尺度来评估LSD-SLAM。对于REMODE,由于需要在每一帧进行相机位姿估计作为输入,所以我们使用LSD-SLAM估计的轨迹和关键帧with bootstrapping(???同不会翻)。
表1 ICL-NUIM和TUM数据集上绝对轨迹误差[m]和正确估计深度百分比的比较(TUM/seq1: fr3/long office household, TUM/seq2: fr3/nostructure texture near withloop, TUM/seq3: fr3/structure texture far.
图4 在ICL-NUIM数据集的(office2)序列上比较深度图精度和密度[8],从左起依次为真实数据、我们的方法得到的优化关键帧、来自CNN的相应原始深度预测、来自LSD-SLAM的优化关键帧[4]与bootstrapping和REMODE的估计密集深度图[23]。精度值表示在此关键帧上正确估计的深度密度。
按照[26]中提出的评估方法,表1给出了基于绝对轨迹误差(ATE)的相机位姿精度,该绝对轨迹误差是根据每个评估序列的估计相机平移和真值相机平移之间的均方根误差计算的。此外,我们还评估了重建精度和密度,通过评估深度值的百分比,其与相应的真实深度的差异小于10%。根据表中的观测值,因为单目SLAM的绝对尺度模糊性,我们的方法总是能够得到比单目方法更高的位姿轨迹精度。有趣的是,即使在应用bootstrapping(???)后,我们的方法的位姿精度平均也高于LSD-SLAM,这意味着所提出的深度融合方法的内在有效性,而不仅仅是估计正确的比例数据。在重建方面也有同样的优势,因为估计的关键帧不仅比LSD-SLAM和ORB-SLAM的更精确,而且密度更高。此外,与文献[16]中–CNN预测深度在不细化的情况下用作SLAM的输入–的方法相比,我们的方法在位姿和重建精度方面也有更好的表现,这再次证明了所提出的优化模糊边缘和CNN预测错误估计深度方案的有效性。最后,在深度图精度方面,我们明显优于REMODE。
图4还展示了精度依次增加深度图——分别是CNN(如[16])和REMODE以及更高密度的LSDSLAM。图中比较了真实情况、使用我们的方法的改进的关键帧、CNN的相应原始深度预测、使用bootstrapping的LSD-SLAM[4]的改进的关键帧,以及ICL-NUIM数据集序列上REMODE的估计密集深度图。与LSD-SLAM相比,我们的方法不仅有更高的密度,而且有助于大幅减少CNN预测的模糊伪影,提高整体深度精度。此外,我们可以注意到REMODE往往会在低纹理区域失败,而我们的方法相反,我们的方法可以通过利用CNN预测的深度值来估计这些区域上的稠密深度。
4.2 纯旋转运动下的精度
前面说过,与标准单目SLAM相比,我们方法的一个优点是,在纯旋转运动下,重建仍然可以依靠CNN预测的深度进行,而其他方法由于连续帧之间没有立体基线而失败。为了描述这一优点,我们对来自TUM数据集的(fr1/rpy)序列(主要由旋转摄像机运动组成)进行了评估。如图5所示,分别为我们的方法、LSD-SLAM获得的重建结果两者和真实情况的比较。可以看出,我们的方法可以重建场景结构,即使摄像机的运动是纯旋转的,而LSD-SLAM的结果是明显的噪声,因为估计深度所需的立体基线对于大多数帧是不够的。我们也尝试了ORB-SLAM,但失败了,因为缺乏必要的基线来初始化算法。
4.3 加入三维语义重建
最后,给出了该方法结合三维和语义重建的一些结果。图6中给出了三个示例,其中展示了使用我们自己的序列和从NYU Depth V2数据集的两个序列[25]获得的办公室场景重建。ICL-NUIM数据集的序列living0的另一个示例如图1 c所示。图中还以绿色显示了估计的相机轨迹。据我们所知,这是第一次用单目相机进行联合三维和语义重建的实验。给出的结果包括位姿和重建质量以及语义标签融合三个方面。
5 结论
我们已经展示了如何通过深度神经网络将SLAM与深度预测相结合,这是解决传统单目重建固有局限性的一个有前途的方向,特别是在估计绝对尺度、在低纹理区域获得稠密深度以及处理纯旋转运动方面。提出的基于短基线立体匹配的CNN预测深度图优化方法,在保持单目SLAM在摄像机平移和高图像梯度情况下的鲁棒性和准确性的同时,自然地克服了这些问题。整体框架能够在融合语义分割标签和全局3D模型的同时重建场景,为单目相机的场景理解开辟了新的视角。一个未来的研究方向是用深度预测来闭合回路,即通过几何上精细化的深度图来改进深度估计。
参考
论文翻译(上):CNN-SLAM_ Real-Time Dense Monocular SLAM With Learned Depth Prediction
论文笔记_S2D.36_2017-CVPR_CNN-SLAM: 实时稠密单目SLAM与学习深度预测相关推荐
- [论文阅读-NeRF+SLAM]NeRF-SLAM:使用神经辐射场表征的实时稠密单目SLAM系统
NeRF-SLAM NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 第一个结合稠密单目SLAM和层次化体素神 ...
- CNN-SLAM:学习深度预测的实时稠密单目SLAM
文章转自(有图):http://bbit.vip/service/main.php?version=1&type=article&id=91 Abstract: 本文提出了一种利用CN ...
- 稠密单目SLAM,实时、稠密地重建三维场景
以下内容来自从零开始机器人SLAM知识星球 每日更新内容 #论文# Probabilistic Volumetric Fusion for Dense Monocular SLAM 论文地址:http ...
- 用于自动驾驶的混合稀疏-稠密单目SLAM系统
点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 作者丨泡椒味的口香糖 来源丨 GiantPandaCV 0. 引言 随着自动驾驶系统的推广,越来越多 ...
- DeepFusion:基于单视图深度和梯度预测的单目SLAM实时稠密三维重建
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:DeepFusion: Real-Time Dense 3D Reconstruction fo ...
- ORB-SLAM:精确多功能单目SLAM系统
ORB-SLAM: a Versatile and Accurate Monocular SLAM System Taylor Guo, 2016年3月18日-9:00 原文发表于:IEEE Tran ...
- 2017CVPR NID-SLAM:基于归一化信息距离的鲁棒单目SLAM系统
原作:Geoffrey Pascoe 翻译:Frank 转载请注明出处 水平有限,错误请指出 NID-SLAM:基于归一化信息距离的鲁棒单目SLAM系统 摘要 本文提出了一种基于归一化信息距离(NID ...
- 基于点云的语义单目SLAM
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:robot L 链接:https://zhuanlan.zhihu.com/p/13043758 ...
- 单目slam基础 特点匹配 光流匹配 单应变换恢复变换矩阵 本质矩阵恢复变换矩阵 深度滤波
非滤波单目slam基础 非滤波方法的单目视觉SLAM系统综述 论文 直接法 特征点法 混合法区别与联系 按照 2D−2D 数据关联方式的不同 ,视觉定位方法可以分为直接法.非直接法和混合法1. 直接法 ...
- PSL‑SLAM:PSL‑SLAM: a monocular SLAM system using points and structure lines in Manh 曼哈顿世界中的点线单目SLAM
文章下载地址:https://download.csdn.net/download/weixin_50508111/85811572 一.文章简介 1. 文章类型/时间/作者/所属单位: 期刊论文/2 ...
最新文章
- linux后台任务部署平台Tac
- 终于!北京无人车,今起也能免费坐
- 英语中十二个月份的由来
- linux配置网卡自动获取的命令,linux 命令行下配置网卡自动获取 IP
- GC参考手册 —— GC 调优(基础篇)
- android 存储私有文件,是否可以只在Android应用程序的私有目录中保存图像,而不是设备的内部或任何外部存储?...
- pyqt5使用按钮跳转界面
- MacOS使用top命令查看进程使用内存
- flume流程之http-memory-hdfs
- UltraEdit v17.10.0,注册机,注册码
- UVa 10141 - Request for Proposal
- Android逆向之某游单机SDK破解
- excel选择性粘贴为何是html,Excel2016中选择性粘贴功能的使用方法
- Pegasus education technical support
- excel表格内文字怎么换行_Excel | 单元格内换行与撤销换行的方法
- converting to execution character set: Illegal byte sequence
- R reticulate 设置 python 环境
- 逻辑运算符:与,或,非,异或
- VS2019安装教程(C语言)
- 洛谷-P1577-切绳子