今天读的是一篇发表在ICCV 2023上的MVS文章,作者来自于北京大学。已经很久没有见到无监督的方法了。
项目地址:Github
文章链接:点击前往
文章目录
Abstract
无监督多视图立体方法最近取得了可喜的进展。 然而,以前的方法主要依赖于光度一致性假设,这可能会受到两个限制:低识别度的区域和依赖于视图的效果,例如低纹理区域和反射。 为了解决这些问题,我们提出了一种新的双对比学习方法,称为 CL-MVSNet。 具体来说,我们的模型将两个对比分支集成到无监督 MVS 框架中,以构建额外的监督信号。 一方面,我们提出了图像级对比分支来引导模型获得更多的上下文感知,从而在不可区分的区域中实现更完整的深度估计。 另一方面,我们利用场景级对比分支来提高表示能力,提高依赖于视图的效果的鲁棒性。 此外,为了恢复更准确的 3D 几何形状,我们引入了 L 0.5 L_{0.5} L0.5 光度一致性损失,这鼓励模型更多地关注准确的点,同时减轻不良点的梯度惩罚。 对DTU和Tanks&Temples的大量实验表明,我们的方法在所有端到端无监督框架中实现了最先进的性能,并且在无需微调的情况下大幅优于有监督的对应框架。
1 Introduction
主要贡献如下:
- 提出了图像级对比一致性损失,这鼓励模型更加具有上下文感知能力并在不可区分的区域中恢复更完整的重建。
- 提出了场景级对比一致性损失,这增强了表示能力,从而提高了视图相关效果的鲁棒性。
- 提出了L0.5光度一致性损失来进一步推进对比学习框架,使模型能够专注于准确的点,从而实现更准确的重建。
- DTU和Tanks and Temples基准测试的实验表明,我们的方法优于最先进的端到端无监督模型,并超越其有监督模型。
2 Related Work
介绍相关背景。
把没有监督信号的MVS框架分为两类,End-to-end unsupervised和Multi-stage self-supervised。前者主要依赖光度一致性假设,它强制重建的图像和reference image保持光度一致性,但是这在很多场景下是无法保证的,所以近年来也有研究者考虑法线一致性、语义一致性等等;后者力求通过处理推断得到的深度图来得到可靠的伪标签来监督训练,但是这使得训练过程不是端到端的。并且额外产生的标签数据也占用存储空间,自监督训练也十分耗时。
3 Method
本节将详细阐述文章的主要贡献。 我们首先描述无监督主干(第 3.1 节),然后描述所提出的图像级对比度一致性(第 3.2 节)、场景级对比度一致性(第 3.3 节)和L0.5光度一致性(第 3.4 节)。 最后,我们介绍了训练期间的整体损失函数(第 3.5 节)。 我们的架构概述如图2所示。CL-MVSNet是一个适用于任意基于学习的 MVS 的通用框架。 我们以代表性的CasMVSNet作为这项工作的backbone。
3.1 Unsupervised Multi-view Stereo
输入一张ref图和若干张src图、分阶段特征提取这些步骤和CasMVSNet一样。在代价体聚合阶段,我们将
N
C
N_{C}
NC通道的
N
N
N个feature volume
{
V
i
}
i
=
1
N
\{V_{i}\}^{N}_{i=1}
{Vi}i=1N分成
N
G
N_{G}
NG组,然后构造原始成本量C如下:
然后使用3D的CNN来处理这个raw cost volume,使用softmax来获得prob volume
P
v
P_{v}
Pv,然后使用regression的方式获得最终深度图
D
D
D:
D
=
∑
d
=
d
m
i
n
d
m
a
x
d
×
P
v
(
d
)
D = \sum_{d=d_{min}}^{d_{max}} d \times P_{v}(d)
D=d=dmin∑dmaxd×Pv(d)
Depth estimation with Confidence Mask
在深度估计期间,存在副产品prob volume
P
v
P_{v}
Pv,用于度量深度假设的像素级置信度。 然后,通过对关于深度估计的4个最接近的深度假设进行概率和,可以获得概率图
P
m
P_{m}
Pm。 我们生成一个二元置信掩码
M
c
M_{c}
Mc,标志着模型是否对逐像素深度估计有信心:
M
c
=
P
m
>
γ
M_{c} = P_{m} > \gamma
Mc=Pm>γ
在我们的实现中,
γ
\gamma
γ设置为0.95。 来自正则分支的深度估计
D
R
D_{R}
DR和置信mask
M
c
M_{c}
Mc将用于正则化两个提出的对比分支的输出。
Vanilla Photometric Consistency Loss
之前的无监督方法会使用photometric consistency loss来在没有GT的情况下进行训练,如图3所示。
具体来说,给定ref图像
I
1
I_{1}
I1、src图像
I
i
I_{i}
Ii、内参
K
K
K、外参
T
T
T和推断的深度图
D
R
D_{R}
DR,src图像被warp以重建ref图像。 对于重构ref图像
l
i
^
\hat{l_{i}}
li^中的特定像素
p
p
p,可以通过inverse warping计算其在src图像
I
i
I_{i}
Ii中的坐标
p
′
p^{′}
p′:
然后可以通过可微分的双线性采样得到重建的图片
I
i
^
\hat{I_{i}}
Ii^,即
I
i
^
(
p
)
=
I
i
(
p
′
)
\hat{I_{i}}(p)=I_{i}(p')
Ii^(p)=Ii(p′)。
随着这个过程,生成了二进制valid mask
M
i
M_{i}
Mi,指示重建图像
I
i
^
\hat{I_{i}}
Ii^中的有效像素。 在以前的无监督MVS方法中,所有src图像根据推断的参考深度warp到ref视图,然后光度一致性损失可以计算为:
其中
∇
\nabla
∇是梯度操作,
⊙
\odot
⊙是element-wise product,
θ
\theta
θ为1或2,也就是L1或者L2的意思。
3.2 Image-level Contrastive Consistency
如前所述,局部光度一致性无法在难以区分的区域(例如具有低纹理或重复图案的区域)提供有效的监督信号。 为了克服这个问题,引入了逐块光度一致性损失以增强匹配的鲁棒性。 然而,由于patch大小不合适,该模型可能会遭受性能下降,例如,大patch可能会导致纹理丰富的区域的准确性损失。 在这项工作中,我们提出了一种替代方案,通过引入图像级对比分支来隐式鼓励模型具有上下文感知能力。 接下来将详细阐述图像级对比样本和图像级对比一致性损失。
Image-level Contrastive Sample
图像级对比样本是通过人为地对给定的常规样本应用变换来生成的。 对于大小为
H
×
W
×
C
H \times W \times C
H×W×C的src图像,我们设置遮挡率
α
\alpha
α来构造大小为
H
×
W
H \times W
H×W的二值像素级掩模。具体来说,掩模中的任何元素都会绘制值为1根据给定的遮挡率
α
α
α:
其中
B
B
B表示伯努利分布,遮挡掩模记为
M
o
M_{o}
Mo。然后用
M
o
M_{o}
Mo对图像
I
i
I_{i}
Ii进行掩模,如图4所示。这样简单地处理所有src图像,就得到了图像级对比样本被生成。 然后将困难正样本输入网络以获得深度估计
D
I
C
D_{IC}
DIC 。 为了确保训练稳定性,我们采用课程学习策略来逐渐增加遮挡率
α
\alpha
α,在我们的实施中,遮挡率从0增长到0.1。
Image-level Contrastive Consistency Loss
为了强制常规分支和图像级对比分支之间的一致性,我们将图像级对比一致性损失
L
I
C
C
L_{ICC}
LICC计算为:
其中
D
R
D_{R}
DR和
D
I
C
D_{IC}
DIC分别表示常规分支和图像级对比分支的推断深度。
3.3 Scene-level Contrastive Consistency
据我们所知,所有无监督MVS方法都应用光度和几何先验来遵循MVSNet进行视图选择。 具体来说,与参考图像重叠较多的图像将获得较高的分数,并且将选择分数最高的
N
−
1
N-1
N−1张图像作为常规样本中的源图像。 请注意,一些监督方法随机选择源视图以提高鲁棒性。 由于严重的视图相关效应和遮挡导致局部光度一致性失败(如图 5 所示),直接在无监督MVS的常规分支中使用此策略将导致性能更差。 然而,从对比学习的角度来看,这些图像可以用来构建困难正样本。 下面,我们将详细介绍如何生成场景级对比样本并强制场景级对比一致性。
Scene-level Contrastive Sample
对于给定的参考图像 I 1 I_{1} I1,可以通过将ref图像与同一场景的 N − 1 N-1 N−1个随机选择的图像相结合来构造场景级对比样本。 然后,将为对比样本推断出深度图 D S C D_{SC} DSC。 值得注意的是,使用场景级对比样本构建的成本量代表了与常规场景相同的3D场景。 因此,网络应该从场景级对比样本中获得与常规样本相同的深度估计。
Scene-level Contrastive Consistency Loss
然后将场景级对比一致性损失
L
S
C
C
L_{SCC}
LSCC应用于场景级对比分支。 该损失用于使场景级对比样本更接近常规样本,从而提高对视图相关效果的鲁棒性:
其中
D
R
D_{R}
DR和
D
S
C
D_{SC}
DSC分别指来自常规分支和场景级对比分支的深度图。
3.4 L 0.5 L_{0.5} L0.5Photometric Consistency
在MVS的通用流程中,在深度融合之前应用深度过滤过程,以屏蔽掉最不需要的点,如图 6 所示。为了清楚起见,我们将推断的深度图中的点分为三类:
- accurate point:具有准确预测的像素,它将在深度过滤后幸存下来并有助于最终的重建。
- ordinary point:与精确点接近的像素点,将被过滤掉。
- terrible point:预测相当错误的像素,其中大部分位于无用的背景或遮挡区域,将被过滤掉。 此外,在这些点上强制执行的光度一致性可能会误导模型。
在MVS系统中,理想的深度图应该包含更精确的点。 此外,由于这一观察,需要对精确点施加更多约束的损失函数。 我们对L1范数和L2范数进行了分析,它们广泛用于普通光度一致性损失(方程(5))。 我们首先写出它们的表达式和梯度公式:
其中
e
e
e表示
x
−
x
′
x-x'
x−x′的绝对值,表示在光度一致性强制执行期间重建图像与原始图像在特定像素处的距离。
k
1
k_{1}
k1是一个特定常量。
在训练期间,网络参数以反向传播方式更新,使用相对于损失函数计算的梯度。 根据式(9),我们可以得出L1范数是一个公平范数,对所有点一视同仁,旨在获得平均绝对误差较低的深度图; 而L2范数更关注误差较大的像素,以减少异常点,即terrible point。 然而,这两个规范并不能直接聚焦于准确的点。 因此,我们提出了基于L0.5范数的光度一致性损失。 L0.5范数及其梯度公式可表示为:
与L1-norm或L2-norm不同,L0.5-norm更注重精确点。 由于其梯度特性,将此范数应用于光度一致性损失可以使准确的点更加准确,将ordinary point变成accurate point,并减少对糟糕点的关注。 根据上述分析,我们提出L0.5光度一致性损失为:
3.5 Overall Loss
4 Experiment
下图是在DTU和Tanks and Temples数据集上面的评分。
值得一提的是,作者单独开了一个小节作为卖点,即和自监督SOTA方法的效率比较。多阶段自监督方法无法进行端到端训练。 具体来说,KD-MVS需要多轮训练进行蒸馏,每轮之前需要复杂的预训练和预处理,使用额外的数据集来生成伪标签,并且需要额外的存储空间来保存伪标签。 没有上述限制,CL-MVSNet方法采用与他们相同的主干网,但仅在16个epoch内就收敛并取得了有竞争力的结果,在单个NVIDIA Tesla V100上每个epoch的训练时间仅为10小时。
5 Conclusion and Limitation
Conclusion
利用双层对比学习来处理不可区分区域和视图相关效应的问题。 对于难以区分的区域,提出了图像级对比分支,以鼓励模型考虑更多上下文信息。 对于依赖于视图的效果,采用场景级对比分支来提高鲁棒性。 此外,我们探索了L0.5光度一致性损失来强调精确点的惩罚,从而实现更准确的重建。 我们通过实验证明,CL-MVSNet在DTU和Tanks&Temples基准上优于所有 SOTA 端到端无监督MVS方法和有监督对应方法。
Limitation
我们的模型解决了不可区分区域和视图相关效应的局限性,但对象边缘区域的准确深度估计仍然是一个挑战。 值得注意的是,这是无监督 MVS 方法中的常见问题。 为了缓解这个问题,我们采用[17]中提出的边缘感知深度平滑度损失,它基于输入参考图像的梯度图和推断的深度图应该相似的假设。 然而,这个简单的假设在很多情况下可能是无效的。 例如,同一对象内可能存在显着的颜色梯度变化。