点击上方 “小白学视觉 ”,选择加" 星标 "或“ 置顶 ”
重磅干货,第一时间送达
题目:DeepSFM: Robust Deep Iterative Refinement for Structure From Motion
DeepSFM:用于运动结构的鲁棒深度迭代细化
作者:X. Ren; X. Wei; Z. Li; Y. Fu; Y. Zhang; X. Xue
摘要
结构从运动(Structure from Motion, SfM)是计算机视觉领域的一个基础问题,深度学习尚未很好地解决这一问题。一个有前景的解决方案是将显式的结构约束,例如3D代价体(cost volume),应用到神经网络中。仅从图像中获得准确的相机姿态可能具有挑战性,特别是在复杂的环境因素下。现有方法通常假设从地面真实(GT)或其他方法获得准确的相机姿态,这在实践中是不现实的,并且需要额外的传感器。在这项工作中,我们设计了一个受物理驱动的架构,即DeepSFM,灵感来自传统的束调整(Bundle Adjustment),由两个基于代价体的架构组成,用于迭代细化深度和姿态。当深度和姿态的显式约束与学习组件结合时,可以从传统的BA和新兴的深度学习技术中带来好处。为了提高学习和推理效率,我们在迭代细化中应用基于门控循环单元(Gated Recurrent Units, GRUs)的深度和姿态更新模块,以及从粗到细的代价体。此外,通过扩展的残差深度预测模块,我们的模型可以有效地适应动态场景。在各种数据集上的广泛实验表明,我们的模型在具有挑战性的输入下实现了最先进的性能和卓越的鲁棒性。
关键词
由粗到细
动态场景
端到端框架
迭代细化
多视图3D几何
结构从运动
I. 引言
结构从运动(Structure from Motion, SFM)是计算机视觉中一个经典的问题,几十年来已经被广泛研究。通过从移动物体或静态场景的投影视网膜多视图图像中恢复3D结构,它使机器能够感知和建模3D结构,这对于各种计算机视觉任务以及实现现实世界人工智能至关重要。经过数十年的研究,SfM取得了许多巨大的成功;然而,它仍然是计算机视觉中一个具有挑战性的任务,因为它需要在多视图输入之间搜索对应关系,并联合优化姿态和结构参数。
为了同时优化每个视图的3D结构和相机参数,传统的SfM方法[1][2][3][4]严重依赖于束调整(Bundle-Adjustment, BA)[5][6],其中通过非线性优化方法,例如高斯-牛顿方法或Levenberg-Marquardt方法[7],最小化跨视图重投影误差。作为SfM的一个子问题,旋转平均技术[8][9][10]也在过去的几年中被研究人员探索,旨在给定场景中图像对之间的相对相机姿态时计算最优的运动解。尽管在某些场景[11][12]中取得了成功,但传统的基于SfM的方法基本上受到所提供多视图的覆盖范围和成像质量以及它们之间的重叠的限制。它们通常也无法重建无纹理表面,因为缺乏提取的特征点和跨视图的缺失对应关系。此外,对于非朗伯(例如,反射性或透明)区域,低级特征匹配变得不可靠,用于搜索对应关系。因此,其在现实世界应用中的使用受到了严重的限制。
最近的研究采用深度网络作为解决传统SfM算法典型弱点的方案。早期的努力采用深度图像特征进行映射,从而回归多个输入视图的结构和运动[13][14][15][16]。不幸的是,这样的网络可能不能直接用于学习底层物理,例如,跨视图特征变形和帧间对应关系,因此容易过拟合,因为结构和运动的几何约束没有通过微分模块显式地建模用于学习。结果,尽管在许多场景[13][15]中取得了合理的结果,它们的性能通常不如传统的SfM方法,具有有限的泛化能力和缺乏鲁棒性。
与传统的深度网络学习到的先验知识[17][18][19][20][21][22][23][24][25]相比,多个输入视图之间的对应关系为深度和运动推断提供了更强的线索。为了更好地泛化到未见过的数据,最近基于学习的[26][27][28][29][30][31][32]方法采用了利用可靠的跨视图对应关系。最近,受到传统立体匹配算法[33]的启发,3D代价体[34]通过以可微方式利用多视图光度一致性被引入,从而显著提高了基于学习的立体方法和多视图立体方法[26][29]的性能。与此同时,不同的策略被可微网络用来提高传统代价体的计算效率,包括级联采样[30]、循环正则化[31]和局部块[32]传播。然而,这些方法通常需要事先知道或预先计算相机运动来构建代价体[26][29]。这要求在高分辨率图像上运行传统的SfM方法或依赖额外的校准设备(图1(b))。与此同时,一些方法直接回归运动[13][15],这仍然受到泛化问题的困扰(图1(a))。很少有深度学习方法[35][36]能够在嘈杂的相机运动下表现良好。特别是,很少有工作能够同时改进结构和运动,并具有合理的泛化能力。
受传统BA[1][2][6]和深度估计中代价体成功使用的启发[26][27][29],我们提出了一个鲁棒的深度学习框架,该框架显式引入了跨视图光度一致性和几何一致性。具体来说,为深度和相机运动的细化构建了代价体。我们的模型执行了一种名为DeepSFM的深度迭代细化结构从运动。我们的主要思想是迭代更新深度和运动,从如DeMoN[13]这样的初始估计开始。特别是,我们的网络包括一个基于深度的代价体(D-CV)和一个基于姿态的代价体(P-CV),它们在迭代中进行更新。采用粗糙的相机姿态和深度图作为初始化,D-CV使用当前相机姿态优化每个像素的深度值,而P-CV使用当前深度估计优化相机姿态(见图1(c))。通过基于深度的代价体和基于姿态的代价体,经典的物理驱动多视图几何算法被应用到可微网络模块中,并且深度图和姿态在端到端可训练的架构中进行优化。在每次新迭代中,D-CV和P-CV通过使用上一次迭代中的相机姿态和深度图估计重新计算代价来进行更新。
传统的3D代价体通过将像素反投影到离散的相机前平行平面并计算作为代价的光度(即图像特征)差异来强制执行光度一致性。除此之外,我们的D-CV通过将几何(即深度)差异添加到代价体中,进一步强制执行相机之间的几何一致性,这使我们的方法能够更好地处理无纹理或甚至具有挑战性的材质,并增强预测深度和相机姿态估计的空间一致性。注意,用于构建D-CV的初始深度估计可以使用传统的3D代价体获得。对于姿态估计,我们的P-CV不是直接回归,而是围绕当前相机位置对假设的相机姿态进行离散化,并像D-CV中的那样通过假设将相机移动到离散位置来计算光度和几何差异。注意,初始相机姿态和深度图可以通过直接回归方法(如[13])获得的粗糙估计。我们的框架通过在深度网络中显式建模光度一致性、几何一致性和相机运动的约束,弥合了传统和基于深度学习的SfM之间的差距。
基于代价体架构的迭代执行通常速度慢且内存效率低。为了解决这个问题,我们提出了递归更新模块(Recurrent Update Modules, RUMs),以提高我们DeepSFM的学习效率,这有助于在执行迭代优化时构建更计算效率高的代价体。RUMs通过基于GRU的网络细化初始深度和姿态,这些网络以较小的采样量递归地构建从粗糙到精细的代价体。具体来说,我们在开始时为D-CV和P-CV使用较大的间隔采样更多的假设深度和姿态。在第一次迭代的初始细化之后,D-CV和P-CV可以被具有较少计算成本的RUMs替换。
我们的DeepSFM甚至能够对动态场景进行建模。这个任务对于传统的SfM和其他基于学习的方法通常很困难,因为普通的基于代价体的方法通常会因为移动物体的多视图光度对应关系违反而失败。相反,我们的模型本质上可以通过新提出的模块——残差运动深度更新模块(Residual Motion Depth Update Module, RMDUM)来轻松处理动态场景。传统上,D-CV被设计为根据光度和几何一致性学习深度图假设的概率分布。正如[26]所示,对于输入视图中的动态区域,这些通常是错误匹配的,概率分布倾向于分散并集中在几个峰值上。因此,我们可以从D-CV获得一个置信度图,该图指示深度估计的质量。有了置信度图,我们的方法可以扩展为预测动态区域的残差深度作为补偿。
本文的贡献主要包括。
受传统束调整的启发,我们在神经网络架构中引入了新颖的D-CV和P-CV,它们结合了光度和几何一致性,用于深度和运动估计,对初始化具有鲁棒性,并且能够很好地泛化到室内和室外场景。
我们提出了递归更新模块。我们展示了基于GRU的高效深度和姿态更新模块,其中代价体以较少的计算成本以从粗糙到精细的方式进行计算。
我们提出了一个新颖的残差运动深度更新模块。这个模块使我们的DeepSFM能够在动态场景的深度预测中使用。
扩展:这项工作的早期和初步版本已经在ECCV 2020 [37]的口头报告中发表。与会议版本相比,我们增加了一系列的扩展,以提高我们DeepSFM的学习效率和推理效率。扩展包括为计算效率新引入的RUMs,为动态场景新提出的RMDUM,以及在各种数据集上对新模块进行评估的实验。同时,遵循最近提出的MVS方法[30],我们在D-CV中引入了更高效的特征提取后端和代价体采样策略,进一步提高了我们提出的DeepSFM的性能,提高了我们算法的有效性。正如额外的广泛实验所展示的,通过为姿态和深度优化新增加的RUMs,与ECCV版本[37]相比,我们的方法在运行速度更快、GPU内存消耗更少的情况下实现了更好的性能。此外,通过RMDUM计算动态区域深度误差的补偿,网络在场景中动态对象的深度预测中产生了更好的结果。
III. 架构
我们的框架接收来自不同视点的场景帧,并为所有帧生成预测的深度图和相机姿态。与传统的束调整算法类似,我们也假设给定的初始结构(即深度图)和运动(即相机姿态)是已知的。初始化不必非常精确,因此可以容易地从一些基于直接回归的方法[13]中获得。
现在我们提供了我们的模型——DeepSFM的概览。不失一般性,我们描述我们的模型以两幅图像作为输入,即目标图像和源图像,所有技术组件都可以很容易地扩展到多幅图像。如图2所示,我们首先通过共享编码器从输入中提取特征图。然后,我们在预定义范围内的逆深度空间内均匀采样深度的解空间,并围绕初始相机姿态分别采样相机姿态。之后,我们相应地构建代价体以评估每个深度和姿态假设的置信度。这是通过验证目标视图的特征与从源图像变形而来的特征之间的一致性来实现的。除了测量颜色图像相似性的光度一致性外,我们还考虑了通过变形深度图的几何一致性。注意,深度和姿态需要不同设计的的代价体以有效采样假设空间。梯度可以反向传播通过代价体,代价体的构建不影响任何可训练参数。然后,将代价体输入到3D CNN中以回归新的深度和姿态。
迭代更新:所提出的网络以迭代方式运行。在每次迭代中,采用上一次迭代预测的深度图和相机姿态作为新的初始化,并用于构建新的代价体。为了在迭代期间提高计算效率,我们引入了递归更新模块(Recurrent Update Modules, RUMs)用于预测深度图和相机姿态的迭代细化,它们被设计为可选模块,并用粗到细的代价体和基于GRU的更新模块替换原始的低效代价体以及3D卷积层。深度和姿态的RUMs都以初始深度图和相机姿态为输入构建代价体,并通过递归GRU基础更新网络预测更新的深度或姿态。
模拟动态场景:基于多视图几何的方法通常会因为动态对象的光度和几何对应关系的失败而出现大的误差。为了适应经常包含动态对象的真实世界场景,例如人类、汽车等,我们设计了残差运动深度更新模块(Residual Motion Depth Update Module, RMDUM)作为扩展。对于包含动态对象的场景的深度预测,该模块可以添加在深度预测子网络之后以获得更好的性能。该模块以预测的深度图和深度预测分支的额外置信度图为输入,并为置信度低的区域(通常对应于动态对象)生成残差深度更新作为补偿。
对于符号,我们表示{Ii}nni=1为一个场景中的所有图像,{Di}nni=1为相应的真实深度图,{Ki}nni=1为相机内参,{Ri, ti}nni=1为相机的真实旋转和平移,{D*i}nni=1和{R*i, t*i}nni=1为用于构建代价体的初始深度图和相机姿态参数,其中n是图像样本的数量。
A. 2D特征提取
给定输入序列{Ii}nni=1,我们提取每个帧的2D CNN特征{Fi}nni=1。首先,应用一个具有3×3核大小的7层CNN来提取低上下文信息。然后我们采用空间金字塔池化(Spatial Pyramid Pooling, SPP)[70]模块,该模块可以通过4个不同池化核大小(4×4, 8×8, 16×16, 32×32)的平均池化块提取分层多尺度特征。最后,我们将这些多尺度特征上采样到相同分辨率后通过2D CNNs,以获得32通道的图像特征。这些图像序列特征被用于构建基于深度和姿态的代价体。
B. 基于深度的代价体(Depth Based Cost Volume, D-CV)
传统的平面扫描代价体[71]旨在将源图像反投影到3D空间中的连续虚拟平面上,并测量变形的图像特征与目标图像特征之间的光度一致性误差。与主流多视图和结构从运动方法中使用的代价体不同,我们构建了一个D-CV以进一步利用由深度图引入的局部几何一致性约束。受传统平面扫描代价体的启发,我们的D-CV是三个组成部分的串联:目标图像特征、变形的源图像特征和齐次深度一致性图。
假设采样:为了将特征和深度图从源视点反投影到目标视点的3D空间中,我们在逆深度空间中均匀采样一组L个虚拟平面{dl}Ll=1,它们垂直于目标视点的前向方向(z轴)。这些平面作为输出深度图的假设,可以在它们的基础上构建代价体。
特征变形:为了构建我们的D-CV,我们首先将源图像特征Fi(大小CH×W×H,简写为通道×宽度×高度)变形到每个假设深度图平面dl上,使用相机内矩阵K和初始相机姿态{Ri, t i},根据以下公式:
其中u和
分别是目标视图中每个像素的齐次坐标和投影到相应源视图的坐标。
表示通过第l个虚拟深度平面变形的源图像的变形特征。注意,投影的齐次坐标
是浮点数,我们采用可微分的双线性插值来生成变形的特征图。没有源视图覆盖的像素被分配为零。按照[29],我们将目标特征和变形的目标特征连接在一起,得到一个2CH×L×W×H的4D特征体。
深度一致性:除了光度一致性外,为了利用几何一致性并提高深度预测的质量,我们在每个虚拟平面上添加了另外两个通道:从源视图变形的初始深度图和从源视图视角看到的投影虚拟深度平面。注意,前者与图像特征变形相同,而后者需要从目标到源相机的坐标变换。
具体来说,第一个通道的计算如下。源图像的初始深度图首先被下采样,然后与图像特征变形类似地变形到假设的深度平面上,作为
,其中坐标u和
在(1)中定义,
表示在第l个深度平面上的变形单通道深度图。深度变形和特征变形之间的一个区别是我们采用最近邻采样而不是双线性插值进行深度变形。我们将在第IV-E节中提供两种方法的比较。
第二个通道包含从源视图视角看到的虚拟平面在目标视图中的深度值。为了将虚拟平面变换到源视图坐标系,我们在每个虚拟平面dl上应用T函数,如下:
我们将变形的初始深度图和变换后的深度平面堆叠在一起,得到一个大小为2×L×W×H的深度体。
通过将特征体和深度体连接在一起,我们获得了一个大小为(2CH + 2)×L×W×H的4D代价张量。给定4D代价体,我们的网络使用几个3D卷积层(核大小为3×3×3)学习一个大小为L×W×H的代价体。当有多个源图像时,我们通过对多个输入源视图进行平均来获得最终的代价体。
C. 基于姿态的代价体(Pose Based Cost Volume, P-CV)
除了构建D-CV之外,我们还提出了P-CV,旨在通过光度和几何一致性优化初始相机姿态(见图3)。与基于假设深度图平面构建代价体不同,我们的新型P-CV是基于一组假定的相机姿态构建的。与D-CV类似,P-CV也是由三个组成部分串联而成:目标图像特征、变形的源图像特征和齐次深度一致性图。给定初始相机姿态参数 R*i, t*i},我们围绕其均匀采样一批离散的候选相机姿态。如图3所示,我们分别平移旋转和平移,同时保持另一个不变。对于旋转,而不是直接在SO3旋转矩阵空间中的初始R周围进行采样,我们在预定义范围内的欧拉角空间中均匀采样δR,并将δR乘以初始R。尽管欧拉角空间和SO(3)空间之间的投影是非线性的,并且采样的旋转分布是不均匀的,1采样的假设旋转和计算的δR非常接近同一旋转点,在该点欧拉角几乎是线性均匀分布且线性可加的,这使得采样策略可行。对于平移,我们均匀采样δt并将其添加到初始t。最后,我们获得了一组围绕输入姿态的P个虚拟相机姿态{R*ip t*ip Pp=1,用于构建代价体。
基于姿态的代价体也是通过串联图像特征和齐次深度图来构建的。然而,源视图特征和深度图是基于采样的相机姿态进行变形的。对于特征变形,我们计算如下:
其中D*i是目标视图的初始深度。与D-CV类似,我们得到变形后的源特征图
,经过双线性采样后,将其与目标视图特征图连接起来。我们还将初始的目标视图深度和源视图深度转换到同一齐次坐标系统中,这增强了相机姿态和多视图深度图之间的几何一致性。
将上述特征图和深度图连接后,我们再次构建了一个大小为(2CH + 2)×P×W×H的4D代价体,其中W和H分别是特征图的宽度和高度,CH是通道数。我们从上述4-D张量中获得输出大小为1×P×1×1,经过八层3D卷积层(核大小为3×3×3),三层3D平均池化层(步长大小为2×2×1)和最后的全局平均池化。
D. 成本聚合和回归
对于深度预测,我们遵循[29]引入的成本聚合技术。我们采用一个上下文网络(即图2中的细化块),它将目标图像特征和经过3D卷积后的粗糙代价体的每一层作为输入,并产生细化的成本层。最终聚合的基于深度的体积是通过将粗糙和细化的成本层相加获得的。得到目标图像的深度预测的最后一步是通过软arg-max[29]进行深度回归。
对于相机姿态预测,我们也在姿态代价体上应用软arg-max函数,并得到估计的输出旋转和平移向量。
E. 递归更新模块
RUMs的设计灵感来自于Recurrent All-Pairs Field Transforms (RAFT) [72],它在4D相关性代价体上构建了一个迭代的光流细化架构。与具有3D CNN的D-CV和P-CV相比,RUMs由粗到细的代价体和GRU架构组成。本质上,GRU在单次前向传播中实现了多次迭代更新操作。由于较小的代价体和GRU,RUMs在推理时间、训练速度和参数计数方面具有更高的计算效率。
如图4(a)所示,我们的递归深度更新模块从粗糙深度预测
估计一系列深度图{
}。重复N次,它产生更新ΔD并将其应用于当前估计:
深度更新模块的架构是一个GRU,它将目标图像特征、代价体和潜在的隐藏状态作为输入,并输出更新ΔD和更新后的隐藏状态。更新操作被训练为执行更新,使得序列收敛到最优预测
。
为了有效地加速迭代的收敛,我们提出了一种粗到细的假设采样策略来构建代价体。与D-CV不同,给定当前深度预测
,我们只均匀采样5个假设深度图围绕它,按照特定的bin大小。在每次迭代中,采样的bin大小减少到上一次迭代的0.8倍。在采样深度假设后,根据第III-B节说明构建基于深度的代价体,然后将其展平为大小为5(2CH + 2)×W×H的3D代价张量,然后输入到深度更新模块。
与深度细化类似,如图4(b)所示,递归姿态更新模块从粗糙深度预测
估计一系列姿态估计{
}。姿态更新模块也以目标图像特征、代价体和潜在的隐藏状态为输入,并输出更新ΔR|t和更新后的隐藏状态。假设的相机姿态从粗到细采样,然后根据第III-C节说明构建基于姿态的代价体。在我们的实验中,我们在每次前向传播中对深度和姿态更新模块都进行10次迭代。
F. 残差运动深度更新模块
为了适应动态场景,我们提出了残差运动深度更新模块(Residual Motion Depth Update Module, RMDUM),如图5所示。由于动态物体引入的重投影误差,代价体会产生错误的匹配,并导致动态场景中深度优化的输出不准确。幸运的是,深度估计质量可以通过代价体中深度假设的概率分布来反映,这为我们提供了关于移动区域的提示,并启发我们引入RMDUM来计算D-CV错误计算的像素的残差深度。
具体来说,如图5所示,我们在深度预测网络中添加了一个卷积块。我们的网络以3D卷积后的代价体为输入,并计算一个额外的输出图,称为置信度图Ci,以及估计的深度图
。同时,目标视图的图像特征被输入到残差深度网络中,其架构设计遵循DispNetS[73]来计算残差深度图
。然后,最终的目标深度预测计算为:
G. 实现细节
整个流程以监督方式进行训练。对于每次迭代,我们表示{
}和{
}为相机姿态的预测旋转角度和平移向量序列。然后定义损失函数为预测值和真实值之间的L1距离:
其中在我们的实验中设置γ=0.8。同样,我们表示{
}为预测深度图序列,然后定义深度损失函数为:
其中我们采用Huber损失[74]作为Huber范数,对异常值不太敏感,定义为:
我们遵循两条规则来设置Lfinal的λr、λt、λd和λc:1) 损失项在数值大小上提供相同的梯度幅度,以便没有单一的损失项在训练过程中占主导地位。这是因为深度和相机姿态的准确性对于达到良好的共识都很重要。2) 我们发现在实践中相机旋转对深度的准确性有更大的影响,但反之则不然。为了鼓励更好的姿态性能,我们设置了相对较大的λr。在实践中,权重参数设置为λr=0.8、λt=0.1、λd=0.1和λc=0.001。
初始深度图和相机姿态从DeMoN获得。为了保持正确的尺度,我们将平移向量和深度图乘以真实相机平移的范数。整个训练和测试过程作为4次迭代执行。在每个迭代过程中,采用上一次迭代预测的深度图和相机姿态作为新的初始化。在训练和测试过程中,默认情况下,每个步骤都以两视图作为输入。我们使用PyTorch[75]实现我们的系统。训练过程需要6天,在3个NVIDIA TITAN GPU上收敛所有160k训练序列。训练批量大小设置为4,使用Adam优化器(β1=0.9,β2=0.999),学习率为2×10^-4,在2个周期后减少到4×10^-5。在前两个周期内,2D CNN特征提取模块的参数使用[29]的预训练权重初始化并冻结,使用真实深度图构建D-CV和P-CV,后面的周期中用网络预测的深度替换。在训练期间,输入序列的长度设置为2(一个目标图像和一个源图像)。D-CV的采样数量L设置为64,P-CV的采样数量P为1000。在训练和测试期间,两个代价体的范围都会适应。对于D-CV,其范围由真实的最小深度值确定,与[29]相同。对于P-CV,旋转采样的bin大小为0.035,平移采样的bin大小为0.10×norm(t*),对于每个初始化平移向量t。对于深度RUM,第一次迭代的bin大小设置为最小深度值,并在每次迭代中减少到上一次迭代的0.8倍。对于姿态RUM,旋转采样的bin大小为0.075,平移采样的bin大小为0.15×norm(t ),对于每个初始化平移向量t*,在每次迭代中减少到上一次迭代的0.8倍。
IV. 实验
A. 数据集
我们的DeepSFM在几个广泛使用的数据集和动态场景数据集上进行了评估。除非另有说明,我们在实验中采用与DeMoN相同的训练和测试数据分割。我们与最新技术在准确性、泛化能力和对初始化的鲁棒性方面进行了比较。
DeMoN数据集[13]:这是从各种来源的子集重新利用的数据集,包括SUN3D[76]、RGB-D SLAM[77]、Scenes11[78]和MVS数据集[79]。请注意,MVS数据集中没有包含训练数据在DeMoN数据集中。因此,在DeMoN的MVS子集上的测试性能应该反映泛化能力。这四个数据集共同提供了室内和室外、合成和真实世界场景的多样化集合。
ETH3D数据集[80]:它提供了各种室内和室外场景,通过激光扫描仪捕获的高精度地面真实3D点,这是一个更可靠的基准数据集。通过将点云投影到每个相机视图来获得地面真实深度图。原始图像具有高分辨率,但调整为810×540像素进行评估[29]。
ScanNet数据集:ScanNet[81]提供了大量室内序列,相机姿态和深度图由商品RGBD传感器捕获。按照BA-Net[35]的做法,我们利用这个数据集通过在DeMoN数据集上训练模型并在此处测试来评估泛化能力。测试集与BA-Net相同,从100个序列中筛选出2000对。
坦克和寺庙[82]:这是基于图像的大规模3D重建的基准。基准序列在真实条件下获取,质量很高。提供了使用工业激光扫描仪捕获的点云作为地面真实。同样,我们的方法在DeMoN上训练,并在该数据集上测试,以显示对嘈杂初始化的鲁棒性。
动态场景数据集:我们进一步在包含动态对象的数据集上评估我们的模型。RefRESH[83]是一个半合成动态场景数据集,通过在真实室内场景背景上合成动态前景对象(纹理化SMPLObject模型)构建。按照[83]中的训练/测试分割,我们微调网络,总共有69218对帧,并在包含6390对帧的验证集上报告测试结果。KITTI[84]是用于深度估计的广泛使用的基准,包含动态对象的场景。为了公平比较,我们微调网络,并在Eigen[20]的测试设置上报告测试结果,包括697对评估。
B. 迭代改进的评估
我们的模型可以迭代运行以减少预测误差。图6(实线)展示了当以DeMoN的预测作为初始化时,我们的性能随迭代次数的增加。可以看出,我们的模型有效地减少了深度和姿态误差。在迭代过程中,更好的深度和姿态互相促进,通过构建更准确的成本体,并且两者都持续改进。为了展示DeepSFM在比训练时更多的迭代次数下的表现,我们在DeMoN数据集上进行了测试,结果见表II。我们测试了最多20次迭代,并在第6次迭代时收敛。考虑到运行速度和准确性之间的权衡,我们在所有实验中测试时运行4次迭代。
通过在迭代中引入RUMs,DeepSFM可以在推理时实现更好的计算效率。为了评估RUMs的效率和准确性,我们将原始的DeepSFM[37]与扩展模块在DeMoN数据集上进行了比较。如表I所示,两种模型都采用DeMoN预测的相机姿态和深度图作为初始化。DeepSFM(4次迭代)是原始的DeepSFM模型,在推理期间运行4次迭代。DeepSFM(1次迭代) + RUMs意味着在给定DeMoN初始化后,我们首先只运行一次迭代的DeepSFM模型,然后用RUMs替换DeepSFM模型中的D-CV、P-CV和3D卷积层进行两次前向传递细化迭代。在每次迭代中,预测的深度图和相机姿态被用作RUMs的新初始化粗糙深度图和相机姿态。在表VIII中,DeepSFM(1次迭代) + RUMs在大多数评估指标上表现最佳,特别是深度图预测,这表明粗到细的采样策略和递归更新模块在大多数情况下比固定采样bin大小的D-CV和P-CV工作得更好。同时,在我们的实验中观察到,仅运行RUMs而不使用DeepSFM D-CV和P-CV在DeMoN数据集上失败了,这表明从固定采样D-CV和P-CV获得的初始化深度图和相机姿态是RUMs合理起点的重要依据。
两种方法的运行时间和GPU内存成本在表I中显示。两种方法均以640px×480px分辨率的图像对进行测试。与原始DeepSFM流程相比,即使在每次前向传递中执行了10次细化迭代,DeepSFM(1次迭代) + RUMs仍然获得了45%的速度提升和16%的GPU内存消耗降低,这显示出比原始DeepSFM更好的计算效率。
我们还在ETH3d和Scannet上展示了RUMs的评估结果。如表III和表IV所示。DeepSFM(1次迭代) + RUMs在两个数据集上展现出了可比的性能和更好的计算效率,这显示出RUMs在未经训练的数据集上的泛化能力。
C. 动态场景的评估
我们进一步进行了实验,调查了我们的残差运动深度更新模块(Residual Motion Depth Update Module, RMDUM)处理动态场景的能力。实验在两个具有挑战性的数据集上进行——RefRESH和KITTI,它们包含大量动态场景图像。我们比较了原始DeepSFM和我们的方法配备RMDUM的深度预测结果。
我们在表V中首先展示了在RefRESH[83]上的评估。我们还展示了在KITTI[84]数据集上的评估结果。如图7所示,与GeoNet[65]、Casser等人[67]、MonoDepth2等人[85]和MiDas[86]的比较,并采用了与GeoNet[65]相同的评估指标。我们的方法配备RMDUM一致地优于基线方法。这证明了我们的模型在处理动态场景中的有效性。如图7所示,置信度图显示了场景中移动对象的提示,通过这些提示,RMDUM改进了预测深度图的准确性。最近,DeepV2D[28]在Kitti数据集上取得了最先进的性能,与其他方法不同,DeepV2D是在5视图设置中训练的。为了公平比较,我们在5视图输入设置中重新训练了我们的方法。
DeMoN仅设计用于2视图设置,因此我们采用DeepV2D的预测作为我们的初始化。请注意,DeepV2D在5视图输入的情况下在KITTI数据集上给出了非常准确的相机姿态和深度估计:abs_rel为0.0365,在KITTI数据集上非常有竞争力。因此,通过在KITTI上使用DeepV2D初始化,我们设计了一套新的实验,以进一步评估我们DeepSFM方法的细化能力,我们在DeepV2D深度输入中添加了一些高斯随机噪声,标准差为预测值的10%,我们发现我们的模型可以在表VII中一致地很好地细化结果。这评估了我们方法的有效性。
D. 每个数据集的评估
DeMoN数据集:我们在DeMoN数据集上的结果和与其他方法的比较显示在表VIII中。我们引用了一些强大基线方法的结果,从DeMoN论文中命名为Base-Oracle、Base-SIFT、Base-FF和Base-Matlab[13]。Base-Oracle使用SGM[87]以真实相机运动估计深度。Base-SIFT、Base-FF和Base-Matlab使用特征、光流和KLT跟踪对应关系从8点算法[88]中解决相机运动和深度。我们还与最近的一些最新技术方法LS-Net[63]、BA-Net[35]和DeepV2D[28]进行了比较。LS-Net引入了学习到的LSTM-RNN优化器,以最小化立体重建的光度误差。BA-Net和DeepV2D是最近的工作,通过可微分的非线性最小二乘算法最小化多视图之间的特征度量误差。为了公平比较,我们采用了与DeMoN[13]相同的评估指标。
我们的方法在所有传统基线方法和DeMoN的深度和相机姿态上都表现更好。与最近的LS-Net和BA-Net相比,我们的方法在四个数据集的大多数指标上都产生了更好的结果。在RGB-D数据集上,由于RGB-D真实值相对较高的噪声,我们的表现与最先进技术相当。LS-Net训练了一个初始化网络,它在添加LSTM-RNN优化器之前直接回归深度和运动。RNN优化器的性能受到回归初始化准确性的高度影响。尽管LS-Net在RGB-D和Sun3D数据集上通过非常好的初始化估计了更好的旋转参数,但其深度结果始终比BA-Net和我们的方法差。我们在L1-rel指标上略逊于BA-Net,可能是因为我们均匀采样了64个虚拟平面作为假设深度集,而BA-Net基于一组128个通道的估计基础深度图进行深度预测,这在经验上具有更细粒度的结果,但更消耗内存。尽管如此,我们表明我们学习到的具有几何一致性的成本体在大多数场景中比基于光度的束调整(例如,BA-Net中使用)工作得更好。特别是,我们在Scenes11数据集上取得了最大的改进,其中真实值是完美的,但输入图像包含许多无纹理区域,这对于基于光度一致性的方法具有挑战性。我们的方法与DeMoN的定性比较如图9所示。
ETH3D:我们进一步在ETH3D上测试了泛化能力。我们在ETH3D上提供了与COLMAP[12]和DeMoN的比较。COLMAP是一种最先进的结构从运动方法,而DeMoN引入了一种经典的深度网络架构,以监督方式直接回归深度和运动。请注意,所有模型都是在DeMoN上训练的,然后在[27]提供的数据上进行测试。在准确性指标中,误差δ定义为max(y*i/yi, yi/y*i),阈值通常设置为[1.25, 1.252, 1.253]。在表III中,我们的方法在所有比较方法中总体表现最佳。我们的方法一致地优于DeMoN,因为我们在网络中施加了几何和物理约束,而不是直接学习回归。与COLMAP相比,我们的方法在大多数指标上表现更好。COLMAP在准确性指标(即abs_diff)上表现良好。然而,COLMAP的预测中经常观察到异常值,这导致在其他指标上表现较差,如abs_rel和sq_rel,因为这些指标对异常值敏感。作为一个直观的展示,我们计算了ETH3D中选定图像序列的相机运动,如图10(c)所示。从估计的深度图中计算得到的点云如图10(b)所示,质量良好。
ScanNet:在此数据集上,我们保持与BA-Net[35]相同的评估指标:模型仅在DeMoN数据集上训练,并在ScanNet上测试以展示泛化能力。表IV中的结果显示了在DeMoN上训练的模型的定量评估结果。BA-Net、DeMoN[13]、LSD-SLAM[44]和Geometric BA[89]的结果来自[35]。结果表明了DeepSFM在ScanNet上的泛化能力。可以看出,我们的方法显著优于所有以前的工作,这表明我们的模型很好地泛化到了一般室内环境中。
坦克和寺庙:为了评估对初始化质量的鲁棒性,我们在坦克和寺庙[82]数据集上将DeepSFM与COLMAP和最先进的R-MVSNet[31]进行了比较,因为它包含密集捕获的高分辨率图像,从这些图像中可以精确估计姿态。为了给姿态添加噪声,我们降低了图像分辨率并抽样了时间帧。评估指标采用该数据集中使用的F分数(分数越高越好)。所有7个训练序列都用于评估,F分数是平均值。图8显示了重建质量。观察到,当输入质量降低时,R-MVSNet和COLMAP的性能显著下降,而我们的方法在一定范围内保持了性能。值得注意的是,当图像数量被抽样到1/16时,COLMAP完全失败了。
E. 模型分析
在本节中,我们将从几个方面分析我们的模型,以验证其优越性,并展示其相比以前方法的优势。
P-CV的影响:我们比较了DeepSFM与我们P-CV的基线方法。在这个基线中,深度预测与DeepSFM相同,但姿态预测网络被直接视觉里程计模型[62]替换,该模型通过最小化图像特征之间的像素级光度误差来更新相机参数。两种方法都以DeMoN结果初始化。如图6所示,DeepSFM在所有迭代中始终产生更低的深度和姿态误差。这表明我们的P-CV预测了更准确的姿态,并且在早期阶段对噪声深度更加鲁棒。图10(c)显示了基线(青色)和我们方法(黄色)在ETH3D上估计的姿态轨迹的可视化。
视图数量:DeepSFM在较少视图的情况下仍然表现合理,因为它不受基于优化的组件限制。为了展示这一点,我们在ETH3D上比较了DeepSFM和COLMAP关于输入视图数量的性能。如图11所示,更多的图像对两种方法都带来了更好的结果,这是意料之中的。然而,我们的性能下降速度比COLMAP慢得多,尤其是在输入数量较少时。具体来说,DeepSFM在与COLMAP相同数量的视图下将深度误差减半,或者在COLMAP所需的视图数量的一半时达到类似的误差。这清楚地表明,当输入较少时,DeepSFM更加稳健。
双线性插值与最近邻采样:在构建D-CV和P-CV时,深度图通过最近邻采样而不是双线性插值进行变形。由于深度图中的深度值是不连续的,双线性插值可能会带来一些副作用。它可能会破坏几何一致性并平滑深度边界。作为比较,我们用双线性插值替换了最近邻采样,并在MVS数据集上展示了性能。如表IX所示,我们的模型在采用双线性插值时性能略有下降,这表明最近邻采样方法在几何上对深度确实更有意义。相反,可微分的双线性插值是必需的,用于图像特征的变形,其梯度被反向传播到特征提取层。进一步的探索将是未来有趣的工作。
几何一致性:我们在成本体中同时包括了图像特征和初始深度值,以强制执行光度一致性和几何一致性。为了验证几何一致性,我们在MVS数据集上进行了消融研究,并展示了在相同真实姿态下有无几何一致性的深度精度,如表X所示。同时,如图12所示,几何一致性对于光度一致性较弱的区域特别有帮助,例如无纹理、镜面反射。
对噪声初始化的鲁棒性:为了评估对初始化的鲁棒性,我们通过手动向DeMoN姿态和深度图输入添加小高斯随机噪声,并以原始值的2%、5%和10%的标准差进行测试,然后在MVS数据集上测试我们的方法,而网络并未在该数据集上训练。如表XI所示,添加噪声后,我们网络的性能略有下降。作为进一步比较,我们还展示了使用真实相机姿态初始化的深度评估结果。
V. 结论
A. 局限性和未来工作
在本文中,我们的方法旨在迭代更新SFM任务的姿态和深度。特别是,我们的DeepSFM利用了两个视图的交叉视图对应关系。请注意,我们并未在深度网络中建立多视图对应关系,因为这将指数级地扩大成本体的规模,导致计算成本过高。因此,在多视图情况下,我们基本上采用了通过平均源视图来计算成本体的简单策略。因此,充分探索多视图对应关系以更新SFM的姿态和深度确实是未来的工作。
我们为结构从运动提出了一个深度学习框架,该框架在深度网络中显式地强制执行光度一致性、几何一致性和相机运动约束。这是通过假设移动重建的场景点(结构)或相机(运动)分别测量光度和几何误差来实现的。我们的深度网络可以被视为一种增强的基于学习的BA算法,它结合了可学习的先验知识和几何规则的优势。通过以递归方式细化深度和相机姿态,构建了具有更高学习和推理效率的成本体。此外,通过扩展的残差运动深度更新模块,我们的网络在动态场景中表现出色。因此,我们的方法在传统的BA和基于深度学习的SfM方法中都取得了超越。
声明
本文内容为论文学习收获分享,受限于知识能力,本文对原文的理解可能存在偏差,最终内容以原论文为准。本文信息旨在传播和学术交流,其内容由作者负责,不代表本号观点。文中作品文字、图片等如涉及内容、版权和其他问题,请及时与我们联系,我们将在第一时间回复并处理。
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉 」公众号后台回复: 扩展模块中文教程 , 即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理 等二十多章内容。
在「小白学视觉 」 公众号后台回复:Python视觉实战项目 , 即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别 等31个视觉实战项目,助力快速学校计算机视觉。
在「小白学视觉 」 公众号后台回复:OpenCV实战项目20讲 , 即可下载含有20 个基于OpenCV 实现20个实战项目 ,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉 、传感器、自动驾驶、 计算摄影 、检测、分割、识别、医学影像、GAN、算法竞赛 等微信群(以后会逐渐细分), 请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过 。添加成功后会根据研究方向邀请进入相关微信群。请勿 在群内发送广告 ,否则会请出群,谢谢理解~