Unsupervised MVS论文笔记(2019年)
Tejas Khot and Shubham Agrawal and Shubham Tulsiani and Christoph Mertz and Simon Lucey and Martial Hebert. Tejas Khot and Shubham Agrawal and Shubham Tulsiani and Christoph Mertz and Simon Lucey and Martial Hebert. arXiv: 1905.02706, 2019.
https://doi.org/10.48550/arXiv.1905.02706
Project webpage: https://tejaskhot.github.io/unsup_mvs.
摘要
在2019年6月6日,作者提出了一种基于学习的无监督的多视图立体视觉(MVS)方法。虽然目前的深度MVS方法取得了令人印象深刻的结果,但它们关键地依赖于真实的3D训练数据,而获取这种精确的3D几何图形用于监督是一个主要障碍。相反,作者的框架利用多个视图之间的光度一致性作为监督信号,在一个较宽的基线MVS设置中学习深度预测。然而,仅用光度一致性约束是不可取的。为了克服这一问题,作者提出了一个有效的损失公式: a)强制一阶一致性,b)对每个点,有选择性地强制与一些视图进行一致性,从而隐式地处理遮挡。在不使用真实数据集进行3D监督的情况下,此方法是有效的,并表明提出的有效损失每个组成部分都对重建结果具有显著的改进。作者定性地观察到,作者的重建往往比获得的事实数据更完整,进一步显示了这种方法的优点。
1 引言
从图像中恢复场景密集的三维结构一直是计算机视觉的一个长期目标。多年来,有几种方法通过利用潜在的几何和光度约束来解决这个多视图立体视觉(MVS)任务——一个图像中的一个点沿着极线投射到另一个图像上,并且正确的匹配在光学上是一致的。虽然实施这一见解导致了显著的成功,但这些纯粹的基于几何的方法对每个场景独立,并无法对世界隐式地捕获和利用通用先验,例如表面往往是平的,因此当信号稀疏时有时表现不佳,如无纹理表面。
为了克服这些限制,一项新兴的工作集中于基于学习的MVS任务解决方案,通常训练CNN来提取和合并跨视图的信息。虽然这些方法产生了令人印象深刻的性能,但它们在学习阶段依赖于真实的3D数据。作者认为,这种形式的监督过于繁琐,不是自然可行的,因此,寻求不依赖这种3D监督的解决方案具有实用性和科学意义。
作者建立在最近的这些基于学习的MVS方法的基础上,这些方法呈现了具有几何归纳偏差的CNN架构,但在用于训练这些CNN的监督形式上存在显著差异。作者不依赖于真实的三维监督,而是提出了一个以无监督的方式学习多视图立体视觉的框架,仅依赖于多视图图像的训练数据集。能够使用这种形式的监督的见解类似于经典方法中使用的见解——正确的几何形状将产生光学上一致的重投影,因此可以通过最小化重投影误差来训练CNN。
虽然类似的重投影损失已经被最近的方法成功地用于其他任务,如单眼深度估计,但作者注意到,天真地将它们应用于学习MVS是不够的。这是因为不同的可用图像可能捕获到不同的可见场景。因此,一个特定的点(像素)不需要在光度学上与所有其他视图一致,而是只需要那些它没有被遮挡的视图。然而,明确地推理遮挡来恢复几何,提出了一个鸡和蛋的问题,因为遮挡的估计依赖于几何,反之亦然。
为了避免这一点,作者注意到,虽然正确的几何估计不需要与所有视图的光度一致性,但它应该至少与某些视图一致性。此外,在MVS设置中,跨视图的照明变化也很重要,因此只在像素空间中强制执行一致性是不可取的,而作者认为强制执行额外的基于梯度的一致性。
作者提出了一个有效的重投影损失,使我们能够捕获上述要求的照片,并允许使用所需的监督形式学习MVS。该方法的公式允许处理遮挡,但没有明确地为图像建模。该方法的设置和示例输出如上图1所示。该模型在没有三维监督的情况下进行训练,以一组图像作为输入,预测每幅图像的深度图,然后将其结合起来,得到一个密集的三维模型。
总之,该论文的主要贡献是:
1)提出一个以无监督的方式学习多视图立体视觉的框架,只使用来自新视图的图像作为监督信号。
2)一种用于学习无监督深度预测的有效多视图光度一致性损失,允许隐式地克服跨训练视图之间的照明变化和遮挡。
2 相关工作
多视图立体视觉重建
关于MVS的工作有着悠久而丰富的历史。在这里只讨论有代表性的作品,感兴趣的读者可以进行相关调查。MVS的实现有四个主要步骤:视图选择、传播方案、补丁匹配和深度图融合。已经有研究为每个像素聚合多个视图的方案,作者的构思可以看作是在训练过程中通过损失函数整合了其中的一些想法。基于补丁匹配的立体匹配的方法取代了经典的种子和扩展传播方案。补丁匹配已被用于多视图立体视觉结合迭代实现传播方案,深度估计和法线。深度图融合将单个深度图合并到一个单一点云中,同时确保结果点在多个视图之间保持一致,并删除不正确的估计。深度表示继续主导MVS基准测试和寻找深度图像作为输出的方法,从而将MVS问题解耦成更易于处理的部分。
基于学习的MVS
利用CNN学习到的特征能够很自然地适合于MVS的第三步:匹配图像补丁。CNN特征已被用于立体匹配,同时使用度量学习来定义相似度的概念。这些方法需要一系列的后处理步骤来最终生成成对的视差图。专注于学习MVS所有步骤的工作相对较少。体素表示自然地从不同的视图编码表面可见性,这已经在一些工作中得到证实。选择这种表示的常见缺点是不清楚如何将它们缩放到更多样化和大规模的场景。有些工作使用CNN特征创建代价体,视差值通过可微soft argmin操作回归获得。结合上述方法的优点,并借鉴经典方法的见解,最近的工作为多个视图生成深度图像,并将它们融合以获得三维重建。至关重要的是,上述所有方法都依赖于3D监督,本篇工作放宽了这一要求。
无监督深度估计
由于减少监督需求的类似动机,最近的一些单目]或双目立体深度预测方法利用了光度一致性损失。作为监督信号,这些图像依赖于训练过程中来自双目图像对或单目视频的图像。作为可见性推理的手段,网络用于预测可解释性、失效掩模或通过加入观察置信度的概率模型。这些方法在一个狭窄的基线设置上运行,在训练过程中使用的帧之间的视觉变化有限,因此不会由于遮挡和照明变化而遭受显著的影响。当前的目标是在MVS设置中利用光度损失进行学习,因此Unsupervised MVS提出一个有效的构思来处理这些挑战。
3 实现方法
MVS设置的目标是给定一组输入图像重建场景的密集三维结构,其中这些视图的内参和外参是已知的——这些参数通常可以通过前面的运动结构(SFM)步骤来估计。虽然MVS问题有一些方法集中于不同的3D表示,但我们在这里关注的是基于深度的MVS方法。因此,作者推断出与每个输入相关联的每像素深度图,然后通过将这些深度图反向投影到一个组合的点云中,从而获得密集的三维场景。
利用一个基于学习的系统来预测深度图的步骤,学习一个CNN网络将相邻视图的图像作为输入,并预测中心图像的每个像素的深度图。与以往基于学习的MVS方法有些不同,我们只依赖于可用的多视图图像作为监控信号,而不需要一个地面真实的3D场景。为了利用这种监督,我们建立在经典方法的基础上,发现当投影到其他视图上时,对一个点(图像像素)的精确几何预测应该会产生光度学上一致的预测。我们将使用光度一致性损失来训练我们的深度预测CNN网络,惩罚原始图和可用的新视图中像素强度之间的差异。然而,我们注意到光度一致性的假设并不总是正确的。相同的点并不一定在所有视图中都可见。此外,不同视图之间的照明变化会导致像素强度之间的差异。为了考虑可能的光照变化,我们在光度损失中添加了一阶一致性项,因此也确保除了像素强度外梯度匹配。然后,我们通过提出一个有效的光度损失来隐式地处理可能的遮挡,迫使一个点应该与某些点一致,但不一定与所有的观点一致。
我们描述了用于推断深度的CNN的体系结构,并介绍了普通版本的光度损失,它可以用于以无监督的方式学习这个CNN。然后,我们介绍了另一个有效的光度损失,并描述了总的学习设置、额外的先验和实现细节。而且我们主要关注于深度预测CNN网络的学习,简要总结了在推理过程,以及学习到的CNN网络是如何集成到一个标准的MVS设置中的。
3.1 网络架构
作者采用已经被提出的模型作为具有代表性的网络架构,在一些工作中也提出了类似的架构。该网络以N幅图像作为输入,使用CNN提取特征,创建一个基于平面扫描的代价体,并为每个参考图像推断一个深度图。图2给出了该架构的草图。该论文的重点是研究一种使用有效的光度损失用无监督的方式训练CNN网络。
3.2 通过光度一致性学习
(讲的不太好,可参考链接)
在不需要地面真实深度图的情况下,有效地训练我们的深度预测网络,其核心思想是使用基于变换的视图合成损失,这在双目和单目深度预测任务中相当有效,但尚未在非结构化的多视图场景中进行探索。给定一个输入图像
I
s
I_s
Is和额外的相邻视图,我们的CNN网络输出一个深度图d。在训练过程中,我们还可以通过M个同一场景的的新视图{
I
v
m
I_v^m
Ivm}来监督预测的深度d。
对于具有相关的内参和相对的外参(K,T)的一对特定视图(
I
s
,
I
v
m
I_s,I_v^m
Is,Ivm),预测的深度图
D
s
D_s
Ds允许我们使用空间变换网络“逆变换”新视图到源视图,然后使用可微双线性采样来产生
I
^
i
\widehat{I}_i
I
i。对于源图像
I
s
I_s
Is中的一个像素u,我们可以通过变换得到其坐标:
u
^
=
K
T
(
D
s
(
u
)
⋅
K
−
1
u
)
(
1
)
\widehat{u} =KT(D_s(u)·K^{-1}u)~~~~(1)
u
=KT(Ds(u)⋅K−1u) (1)
然后,在新视图中围绕变换后的坐标周围进行双线性采样,可以获得变换后的源图像:
I
^
s
m
(
u
)
=
I
v
m
(
u
^
)
(
2
)
\widehat{I}_s^m(u) =I_v^m(\widehat{u})~~~~(2)
I
sm(u)=Ivm(u
) (2)
其中的变换关系如下图所示:
除了变换后的图像外,还生成了一个有效的二值化掩模
V
s
m
V_s^m
Vsm,表示在合成视图中,当一些像素在新视图中投射到图像边界内时的“有效”像素。正如单目深度估计中所做的那样,我们可以制定一个照片一致性目标,指定变换的图像应该与源图像匹配。在我们的多视图系统场景中,可以扩展所有M个新视图到参考视图的逆变换,它的损失是:
L
p
h
o
t
o
=
∑
m
M
∥
(
I
s
−
I
^
s
m
)
⊙
V
s
m
∥
(
3
)
L_{photo}=\sum_{m}^{M} \left \| (I_s-\widehat{I}_s^m)\odot V_s^m \right \| ~~~~(3)
Lphoto=m∑M
(Is−I
sm)⊙Vsm
(3)
这种损失使我们能够学习一个没有真实3D数据来预测深度的CNN网络,但是这个公式有几个问题,例如无法解释遮挡和照明的变化。虽然类似的重投影损失在单眼或立体重建中已经成功地用于KITTI数据集中,但在这些数据集在不同视图的遮挡和光线变化最小。然而,在MVS数据集中,自遮挡、反射和阴影是一个很大的问题。因此,我们扩展了这种光度损失,并提出了一个适合我们的设计的更有效的框架。
3.3 MVS的鲁棒光度一致性
我们提出的鲁棒光度损失公式是基于两个简单的原则——图像梯度对光照变化比光强度变化更重要,并且一个点只需要与一些新点的光度一致,而不是所有。
我们所做的第一个修改实际上利用了多年来MVS研究的见解,其中许多传统方法发现,基于绝对图像强度和图像梯度差异的匹配代价比前者要好得多。我们还发现,由于图像之间的像素强度变化很大,对绝对图像差异方面进行绝对损失是很重要的。因此,基于等式3的逆变换的光度损失被修改以反映这一点:
L
p
h
o
t
o
=
∑
m
=
1
M
∥
(
I
s
−
I
^
s
)
⊙
V
s
m
∥
ϵ
+
∥
(
▽
I
s
−
▽
I
^
s
m
)
⊙
V
s
m
∥
(
4
)
L_{photo}=\sum_{m=1}^{M} \left \| (I_s-\widehat{I}_s)\odot V_s^m \right \|_\epsilon + \left \| (\bigtriangledown I_s-\bigtriangledown \widehat{I}_s^m)\odot V_s^m \right \| ~~~~(4)
Lphoto=m=1∑M
(Is−I
s)⊙Vsm
ϵ+
(▽Is−▽I
sm)⊙Vsm
(4)
我们将此称为一阶一致性损失。
接下来,我们将解决在不同图像中遮挡三维结构所引起的问题。上面讨论的损耗公式要求源图像中的每个像素应该在光度学上与所有其他视图一致。如图3所示,这是不可取的,因为一个特定的点由于遮挡,可能只能在新视图的一个子集中可见。
我们的关键见解是只使用M中评分最高的k个视图来加强每个像素的光度一致性。设
L
m
(
u
)
L^m(u)
Lm(u)表示一个特定像素的一阶一致性损失。我们最终的有效的光度损失可以表述为:
L
photo
=
∑
u
min
m
1
,
⋯
m
K
m
i
≠
m
j
V
s
m
k
(
u
)
>
0
∑
m
k
L
m
k
(
u
)
(
5
)
L_{\text {photo }}=\sum_{u}\min_{\substack{\\ m_1, \cdots m_K \\ m_i \neq m_j \\ V_s^{m_k}(u)>0}} \sum_{m_k} L^{m_k}(u)~~~~(5)
Lphoto =u∑m1,⋯mKmi=mjVsmk(u)>0minmk∑Lmk(u) (5)
上面的方程简单地说明,对于每个像素u,在像素投影有效的视图中,我们使用最佳的K个不相交视图计算损失。这一点如图4所示。为了实现这种鲁棒的光度损失,我们将M个新视图图像与参考图像进行逆扭曲,并计算每像素的一阶一致性“损失图”。所有损失图然后堆叠成一个尺寸W×H×M的3D损失体。对于每个像素,我们找到K个具有有效掩码的最小值条目,并将它们求和得到像素级一致性损失。
图4:用于训练的鲁棒像素级聚合损失的可视化。从网络中预测的深度图与参考图像一起用于变换和计算M个非参考相邻视图的损失图,如等式4所示。然后M个损失图被连接成一个维度为H×W×M的体积,其中H和W是图像维度。这个体积沿着体积的第三维(即M损失图)选择K个“最佳”(最低损失)值,然后取平均值来计算有效的光度损失。
3.4 学习设置和实施的细节
在训练过程中,我们的深度预测网络的输入包括一个源图像和N = 2个相邻视图。然而,我们使用更大的视图集(M = 6,K = 3)来加强光度一致性。这允许我们从更大的图像集中提取监控信号,而只需要更小的推理集。除了上述有效的光度损失外,我们还添加了结构相似性(
L
S
S
I
M
L_{SSIM}
LSSIM)和深度平滑性(
L
S
m
o
o
t
h
L_{Smooth}
LSmooth)损失。平滑性损失强调在预测的视差图上具有与边缘相关的平滑性。SSIM损失在变换的图像上是一个更高阶的重建损失,但由于它是基于更大的图像补丁,我们不应用我们的像素级选择方法的光度损失,相反,使用视图选择得分最高的两个相邻视图来计算SSIM损失。我们最终的端到端无监督学习目标函数是前面描述的损失的加权组合:
L
=
∑
α
L
p
h
o
t
o
+
β
L
S
S
I
M
+
γ
L
S
m
o
o
t
h
(
6
)
L=\sum \alpha L_{photo }+\beta L_{S S I M}+\gamma L_{S m o o t h}~~~(6)
L=∑αLphoto+βLSSIM+γLSmooth (6)
在我们所有的实验中,我们都使用了
α
=
0.8
,
β
=
0.2
和
γ
=
0.0067
α = 0.8,β = 0.2和γ = 0.0067
α=0.8,β=0.2和γ=0.0067。该网络采用ADAM优化器进行训练,学习速率为0.001,动量衰减因子为0.95。使用TensorFlow来实现该算法。网络的高GPU内存要求意味着在训练中使用更小的图像分辨率和更粗的深度步长是有效的,而更高的设置可以用于评估。在实验部分中提到了图像分辨率的使用。
3.5.预测每幅图像的深度图
在测试时,我们通过我们的网络取一组三维场景的图像预测每幅图像的深度图。这是通过网络传递一个参考图像和2个相邻的图像来实现的,这些图像是根据相机基线或一个视图的选择评分来选择。然后将这一组深度图像进行融合形成点云。我们使用了 Fusibile一个开源的实用工具来进行点云融合。
4 实验
4.1 在DTU上的结果
使用官方规定的指标在DTU数据集的测试分割上评估我们的模型:
精度(Accuracy):重建点到真实值的平均距离。
完整性(Completion):真实值到重建点的平均距离。
总体性能(Overall):准确性和完整性的平均值。
此外,我们报告了在坦克和寺庙数据中使用的百分比度量和f-score(测量点云的总体准确性和完整性)。
我们定量地评估了三种无监督模型,即:
- 光度一致性:该模型结合使用了如方程3中所述的原始光度图像重建损失,以及SSIM和平滑损失。
- 光度+一阶损失:我们用我们提出的方程4的一阶梯度一致性损失来代替原本的光度损失,这使得网络更加适应局部照明的变化(在表1中表示为光度+G)
- 鲁棒性:我们的最佳模型,它结合了一阶梯度一致性损失和top-K视图聚合方案。
为了在无监督的背景下替换成将我们的方法,除了无监督的光度设置外,我们还将我们的模型与两种经典方法进行了比较,以及另外两种最近的深度学习方法,它们都是完全监督的,SurfaceNet和MVSNet。据我们所知,在2019年 6月前,我们不知道任何其他现有的基于深度学习的模型以无监督的方式学习这项任务,但我们的方法做到了。
我们发现,对于我们的模型,一个具有稳健损失的模型,在所有指标上都显著优于没有稳健损失的模型。为了表征我们模型的模型性能,我们进一步计算距离阈值高达10mm的百分比指标,并在图7中报告F-score图。
如表1所示,虽然我们的模型在高分辨率(< 1mm)上遇到了困难,但在增加分辨率方面,我们优于所有其他方法(除了完全监督的MVSNet模型)。这表明,虽然一些经典的方法在非常低的阈值下比我们的方法更准确,但我们的方法产生的异常值更少。表1中的定量结果和图5中误差的定性可视化显示,我们的鲁棒模型获得了更高质量的重建。图8显示了我们的模型在低纹理区域的优越性能。
4.2 消融实验
Top-K选择频率
为了说明top-K的优质选择,我们可视化从不同的视图中被选择的光度一致性的像素频率。我们在训练和验证数据集上运行训练后的模型50次,并存储top-K操作的频率计数,如图6所示。我们可以观察到两件事: 1)一个视图的选择频率与它的视图选择分数成正比。这验证了用于选择图像集进行训练的视图选择标准直接对应于光度一致性;2)超过50%的选择来自排名低于2的视图,这就解释了为什么增加相邻图像可以获得更好的性能。
Top-K选择阈值
在我们的稳健损失公式中,我们消除了变化K的影响。从表3中可以看出,使用K = 3(M=6张图输入),即50%的相邻图像具有更好的验证精度。请注意,为了进行验证针对真实深度图的精度。表3报告了深度值的绝对差值小于3%的像素的百分比。K=3时,精度是最好的。
损失方面的影响
我们进行消融实验来分析我们的光度损失的不同成分。虽然我们的模型是以无监督的方式进行训练的,但我们使用DTU验证集的真实深度图来评估它们的性能。特别是,我们根据3个指标来评估这些方法: 1)预测和地面真实深度之间的绝对差异(以mm,越低越好)2)真实深度1mm内预测深度的百分比(越高越好)3)真实深度3mm内预测深度的百分比。具体的定量结果见表2。我们观察到,对原始基线(仅采用光度一致性)的两种建议的修改都产生了显著的改进。
4.3 在ETH3D数据集上的微调
我们还测试了鲁棒一致性构思的有效性,将它作为一种在没有真实标签的数据集上对预训练模型进行微调的方法。在ETH3D数据集的低视图数据集上,我们比较了预先训练的MVSNet模型与在ETH3D数据集上微调的模型的结果进行比较。对于深度图的融合,我们运行Fusibile并使用相同超参数。表4中的结果表明,在没有可用的三维真实标签的情况下,使用我们提出的损失进行微调可以提高性能。
4.4 在坦克和寺庙数据集上的泛化性能
我们做了一个实验来检查我们的网络的泛化能力。因为这个网络已经被明确被训练来匹配对应图像,而不是记忆场景先验,我们的假设是,它应该能很好地推广到完全看不见的数据。为此,我们选择坦克和模板数据集,其中包含大型物体户外场景的高清图像。我们使用在DTU上的图像数据集上训练的模型,没有进行任何微调。我们将图像缩小到832x512的分辨率,并使用256个深度间隔作为平面扫描体积。结果如图9所示。我们注意到,像坦克和寺庙这样的户外世界数据集的非常高的场景深度范围不适合当前MVS的深度架构,因为它们都依赖于某种体积架构。因此,以更精细的分辨率采样深度以获得更高质量的重建变得极其困难,这可能是未来工作的一个有前途的研究方向。
5 讨论
我们提出了一种基于无监督学习的多视图立体视觉方法(Unspervised MVS),并提出了有效的光度损失。然而,这只是一个初步的尝试,需要进一步的努力来实现这项任务的无监督方法的潜力。因为一个无监督的方法更容易扩展,大量的训练数据可以更容易地获得。此外,正如我们的实验所证明的那样,这些无监督方法可以与监督的方法结合使用,并进一步改进监督方法,进而利用监督的好处以及无监督方法的可扩展性。最后,我们也希望所提出的有效的光度损失构思将更广泛地适用于无监督的三维预测方法。
5.1 补充材料
在本文档中,我们提供了在DTU、坦克和寺庙数据集上的结果的额外的定量结果、技术细节和更多的定性例子。在第5.2节中,我们详细介绍了用于我们所有实验的模型架构的细节。第5.3节描述了所使用的各种损失项的数学公式。在第5.4节中,我们展示了在DTU数据集上的一些详细的定量结果。在第5.5节中,我们可视化了DTU数据集中其余实例的定性输出结果。关于坦克和寺庙数据集的更高分辨率的定性结果包含在第5.6节中。
5.2 模型架构
我们采用了与MVSNet相同的网络架构(博客链接),以强调我们的关键贡献是用于训练此任务的损失函数。每个输入图像首先通过具有对所有图像共享权值的特征提取网络。对于这个网络,我们使用一个8层的CNN,在每次卷积操作后进行批归一化和ReLU,直到倒数第二层。最后一层为每张图像生成一个32个通道缩小的特征图。利用可微分单应性变换公式,将特征图在128个深度值处扭曲成参考相机的不同平行平面,形成每幅非参考图像的一个代价体,并使用基于方差的代价度量,将所有这些代价体汇总成单个体积。请注意,MVSNet在训练期间使用了256个深度值作为代价体。由于12GB GPU内存不足,我们只使用128个深度值。这种减少确实对输出的重构质量具有影响,但我们将这种优化留给了未来的工作,因为我们的贡献仍然有效。
为了细化代价体并合并深度值的平滑变化,我们使用了一个三层的3D UNet。通过沿深度通道进行soft argmin操作,可以得到预测深度图的初始估计。与赢者通吃方法不同,它需要不可微的argmax操作,这种体积的软聚合允许亚像素精度,同时由于其可微性而易于训练。因此,尽管对于构建代价体有深度的离散化值,得到的深度图仍然遵循连续分布。
输出体积所代表的结果概率分布很可能包含异常值,而不一定包含单个峰值。为了解释这一点,建立了深度估计质量的概念,其中任何像素的估计质量被定义为四个最近的深度假设的概率之和。然后,以阈值0.8对该估计值进行过滤,并作为掩码应用于输出体积。然后将预测的深度图连接到参考图像上,并通过一个四层CNN输出一个深度残差图。最终的深度图是通过将残差图添加到初始估计的深度图中而得到的。关于超参数的完整细节,我们请读者参阅MVSNe论文笔记及其相应的补充。
5.3 损失函数
虽然最小化通过视点合成获得的光度一致性损失是我们的主要目标,但我们利用了在损失目标中的两个额外成分来提高模型性能,即图像补丁级结构相似度损失(SSIM,the structured similarity of image)和深度图梯度上的图像感知光滑度损失(Depth Smoothness loss)。
SSIM:从最近的工作中得知感知损失对评估图像预测质量的有效性。类似地,我们也使用结构化相似度(SSIM)作为训练的损失项。两个图像补丁之间的SSIM相似度为:
SSIM
(
x
,
y
)
=
(
2
μ
x
μ
y
+
c
1
)
(
2
σ
x
y
+
c
2
)
(
μ
x
2
+
μ
y
2
+
c
1
)
(
σ
x
+
σ
y
+
c
2
)
(
7
)
\operatorname{SSIM}(x, y)=\frac{\left(2 \mu_x \mu_y+c_1\right)\left(2 \sigma_{x y}+c_2\right)}{\left(\mu_x^2+\mu_y^2+c_1\right)\left(\sigma_x+\sigma_y+c_2\right)}~~~~(7)
SSIM(x,y)=(μx2+μy2+c1)(σx+σy+c2)(2μxμy+c1)(2σxy+c2) (7)
这里,
µ
µ
µ和
σ
σ
σ分别为局部均值和方差。我们使用平均池化和设置
c
1
=
0.0
1
2
c_1=0.01^2
c1=0.012和
c
2
=
0.0
3
2
c_2 = 0.03^2
c2=0.032来计算
µ
x
、µ
y
、
σ
x
、
σ
y
µx、µy、σx、σy
µx、µy、σx、σy。由于SSIM值越高越好,所以我们归一化它到0-1范围内。将最大化变为最小化,一个图像对的SSIM损失随后变为:
L
S
S
I
M
=
∑
i
j
[
1
−
SSIM
(
I
s
i
j
,
I
s
i
^
j
)
]
M
s
i
j
(
8
)
L_{S S I M}=\sum_{i j}\left[1-\operatorname{SSIM}\left(I_s^{i j}, I_s^{\hat{i }j}\right)\right] M_s^{i j}~~~~(8)
LSSIM=ij∑[1−SSIM(Isij,Isi^j)]Msij (8)
在这里,
M
s
i
j
M_s^{ij}
Msij是一个掩模,它排除了所有在逆变换后的投影位于源图像之外的像素。忽略这些区域可以改善边界周围的深度预测。我们只在参考图像和按视图选择评分排序的两个最近的图像之间应用SSIM损失。
深度平滑损失:为了鼓励平滑的梯度变化,并在图像尖锐变化处深度中断,规范深度估计是很重要的。在深度梯度上添加了一个
l
1
l_1
l1惩罚。
L
S
m
o
o
t
h
=
∑
i
j
∥
∇
x
D
i
j
∥
e
−
∥
∇
x
I
i
j
∥
+
∥
∇
y
D
i
j
∥
e
−
∥
∇
y
I
i
j
∥
(
9
)
L_{S m o o t h}=\sum_{i j}\left\|\nabla_x D^{i j}\right\| e^{-\left\|\nabla_x I^{i j}\right\|}+\left\|\nabla_y D^{i j}\right\| e^{-\left\|\nabla_y I^{i j}\right\|}~~~~(9)
LSmooth=ij∑
∇xDij
e−∥∇xIij∥+
∇yDij
e−∥∇yIij∥ (9)
5.4 定量结果
DTU数据集的评估是在准确性和完整性方面衡量重建质量,同时也报告了它们的中值和方差。我们在表5中列出了两种经典的(上)、两种基于监督学习的(下)和三种无监督学习(中间)方法的结果。此外,我们在图10中展示了f分数的两个组成部分,即精度和召回率的比较。
精度(预测为正样本中,预测正确的正样本比例): Precision
=
T
P
T
P
+
F
P
(
10
)
召回率(实际为正样本中,预测正确的正样本比例): Recall
=
T
P
T
P
+
F
N
(
11
)
F
分:
F
-score
=
2
Precision
∗
Recall
Precision
+
Recall
(
12
)
\begin{aligned} &精度(预测为正样本中,预测正确的正样本比例):\text { Precision }=\frac{T P}{T P+F P}~~~(10)\\ &召回率(实际为正样本中,预测正确的正样本比例):\text { Recall }=\frac{T P}{T P+F N}~~~~(11)\\ &F分:F \text {-score }=\frac{2 \text { Precision } * \text { Recall }}{\text { Precision }+ \text { Recall }}~~~~(12) \end{aligned}
精度(预测为正样本中,预测正确的正样本比例): Precision =TP+FPTP (10)召回率(实际为正样本中,预测正确的正样本比例): Recall =TP+FNTP (11)F分:F-score = Precision + Recall 2 Precision ∗ Recall (12)
5.5 定性结果
DTU测试集的其余17个实例的定性结果如图11、12所示。
5.6 坦克和寺庙
我们展示了来自坦克和寺庙数据集的中间集的定性结果如图13所示。该模型没有在数据集上进行微调,但产生了合理的重建,证明了模型学习到了的光度一致性行为。