今天属于是重读经典了,这是一篇发表在BMVC2020上的文章,试图解决MVS中可见性的问题。该文章最近在拓展之后被发表在了IJCV上。本文的解读是基于扩展之后的IJCV版本,期刊的版本内容更加详细一点。
文章链接:BMVC2020版本和IJCV版本
代码仓库:Github
目录
- Abstract
- 1 Intro
- 2 Related Work
- 3 Method
- 3.1 Overview
- 3.2 Feature Extraction
- 3.3 Cost Volume and Regularization
- 3.4 Pair-wise Joint Depth and Uncertainty Estimation
- 3.5 Volume Fusion
- 3.6 Coarse-to-Fine Architecture
- 3.7 Training Loss
- 3.8 Point Cloud Generation
- 4 Experiment
- 4.1 Implementation
- 4.2 Benchmarking on Tanks and Temples Dataset
- 4.3 Benchmarking on ETH3D Dataset
- 4.4 Benchmarking on DTU Dataset
- 4.5 Ablation Study
- 4.6 Memory and Time Consumption
- 5 Conclusion
Abstract
很少有现有网络明确考虑像素级可见性,从而导致被遮挡像素的错误成本聚合。 在本文中,我们通过匹配不确定性估计明确推断并整合 MVS 网络中的像素级遮挡信息。 成对不确定性图与成对深度图联合推断,进一步用作多视图成本体积融合期间的加权指导。 这样,在成本融合中抑制了被遮挡像素的不利影响。
1 Intro
介绍了MVS的基础内容。
提出了一个端到端网络的结构,考虑了像素可见性信息。深度图由多视图图像分两步估计。首先,匹配ref和src对,得到代表对匹配质量的latent volume,这个volume进一步回归得到深度图和不确定性图的中间估计,其中不确定性由概率体的depth-wise entropy转换而来。其次,利用对匹配的不确定性作为加权引导,将所有成对latent volume融合到一个多视图从上图volume中,以减弱不匹配像素。fused volume被正则化并回归到最终深度估计。同时,我们还集成了组相关和从粗到细的策略,以进一步提高整体重建质量。网络是端到端可训练的,不确定性部分以无监督的方式训练。因此,可以直接利用现有的具有真实深度图的MVS数据集来训练。
2 Related Work
介绍了相关工作,基于学习的MVS、可见性估计、不确定性估计。
3 Method
3.1 Overview
类似于CasMVSNet 。首先,将ref image
I
0
I_{0}
I0和一组相邻的src images
{
I
i
}
i
=
1
N
{\{I_{i}\}}_{i=1}^{N}
{Ii}i=1N输入2D UNet用于多尺度图像特征的提取,用于从低分辨率到高分辨率的三个阶段的深度估计和不确定性图。对于第
k
k
k阶段的重建,根据不确定性对latent volume进行融合,构造代价体,正则化并用于估计与输入特征图分辨率相同的深度图
D
k
,
0
D_{k, 0}
Dk,0。前一阶段的中间深度图将用于下一阶段的代价体构建。最后,
D
3
,
0
D_{3,0}
D3,0作为系统的最终输出
D
0
D_{0}
D0。
3.2 Feature Extraction
使用 hourglass-shaped encoder-decoder UNet,3个层级分别输出分辨率为 1 8 × 1 8 \frac{1}{8} \times \frac{1}{8} 81×81、 1 4 × 1 4 \frac{1}{4} \times \frac{1}{4} 41×41、 1 2 × 1 2 \frac{1}{2} \times \frac{1}{2} 21×21的32通道特征图。
3.3 Cost Volume and Regularization
在第 k k k个尺度阶段,我们首先为每个ref-src的pair来构建pair-wise的cost volume,而不是直接从所有视图构建统一的成本量。对于第 i i i对,通过假设ref图像的深度为 d d d,我们可以从src视图获得warp之后的特征图 F k , i → 0 ( d ) F_{k,i→0}(d) Fk,i→0(d)。我们应用group-wise correlation来计算ref特征图和warp了的src特征图之间的cost map。 具体来说,给定两个 32 通道特征图,我们将所有通道分为 8 组,每组 4 个通道。 然后计算每个对应组对之间的相关性,从而为每个像素产生 8 个值。 然后将所有深度假设的成本图堆叠在一起作为成本量。第 k k k阶段中第 i i i个图像对的最终成本量 C k , i C_{k,i} Ck,i的大小为 N d , k × H × W × N c N_{d,k}×H×W×N_{c} Nd,k×H×W×Nc ,其中 N d , k N_{d,k} Nd,k是第 k k k阶段中的深度假设数, N c = 8 N_{c}=8 Nc=8是分组相关运算的组号。第一阶段的假设集合是预先确定的,第二阶段和第三阶段的假设集合是根据前一阶段的深度图输出动态确定的。
我们的成本调整分两步进行。 首先,第k阶段的第i个对,每个成对成本量分别被正则化为latent volume V k , i V_{k,i} Vk,i。 然后,所有都融合到 V k V_{k} Vk,进一步正则化为概率体积 P k P_{k} Pk,并通过soft-argmax操作回归到当前阶段 D k , 0 D_{k,0} Dk,0的最终深度图。 具体来说,我们首先通过联合推断成对深度和不确定性来测量可见性。 每个latent volume通过额外的 3D CNN 和 softmax 操作转换为概率体积 P k , i P_{k,i} Pk,i。 然后,通过soft-argmax和熵运算联合推断深度图 D k , i D_{k,i} Dk,i和相应的不确定性图 U k , i U_{k,i} Uk,i。不确定性图将用作latent volume融合期间的加权指导。
3.4 Pair-wise Joint Depth and Uncertainty Estimation
深度图是通过 soft-argmax 操作从概率体回归的。 为了简单起见,下面省略了阶段的数字k。 我们将所有深度假设的概率分布表示为
{
P
i
,
j
}
j
=
1
N
d
\{P_{i,j}\}_{j=1}^{N_{d}}
{Pi,j}j=1Nd。 soft-argmax 运算相当于计算该分布的期望,Di 计算如下:
D
i
=
∑
j
=
1
N
d
d
j
P
i
,
j
\begin{aligned} \mathbf {D}_{i} = \sum _{j=1}^{N_d} d_j \mathbf {P}_{i, j} \end{aligned}
Di=j=1∑NddjPi,j
为了联合回归深度估计及其不确定性,我们假设深度估计遵循拉普拉斯分布。 在这种情况下,估计的深度和不确定性最大化了观察到的GT情况的可能性:
p
(
D
g
t
,
i
∣
D
i
,
U
i
)
=
1
2
U
i
⋅
exp
(
∣
D
i
−
D
g
t
,
i
∣
U
i
)
\begin{aligned} p( \mathbf {D}_{gt, i} | \mathbf {D}_{i}, \mathbf {U}_{i} ) = \frac{1}{2\mathbf {U}_{i}} \cdot \exp \left( \frac{|\mathbf {D}_{i} - \mathbf {D}_{gt, i}|}{\mathbf {U}_{i}} \right) \end{aligned}
p(Dgt,i∣Di,Ui)=2Ui1⋅exp(Ui∣Di−Dgt,i∣)
其中
U
i
U_{i}
Ui是像素的深度估计的不确定性。注意,概率分布
{
P
i
,
j
}
j
=
1
N
d
\{P_{i,j}\}_{j=1}^{N_{d}}
{Pi,j}j=1Nd也反映了匹配质量。因此,我们应用
{
P
i
,
j
}
j
=
1
N
d
\{P_{i,j}\}_{j=1}^{N_{d}}
{Pi,j}j=1Nd的熵图
H
i
H_{i}
Hi来衡量深度估计质量,通过函数
f
u
f_{u}
fu将
H
i
H_{i}
Hi转换为不确定性图
U
i
U_{i}
Ui,
f
u
f_{u}
fu为一个浅层的2D CNN:
U
i
=
f
u
(
H
i
)
=
f
u
(
∑
j
=
1
N
d
−
P
i
,
j
log
P
i
,
j
)
\begin{aligned} \mathbf {U}_{i} = f_u(\mathbf {H}_{i}) = f_u(\sum _{j=1}^{N_d} - \mathbf {P}_{i, j} \log \mathbf {P}_{i, j}) \end{aligned}
Ui=fu(Hi)=fu(j=1∑Nd−Pi,jlogPi,j)
采用熵的原因是分布的随机性与单峰分布负相关。 单模态是深度估计高置信度的指标。
为了联合学习深度图估计
D
i
D_{i}
Di及其不确定性
U
i
U_{i}
Ui,我们最小化上述负对数似然:
L
i
j
o
i
n
t
=
1
∣
I
0
v
a
l
i
d
∣
∑
x
∈
I
0
v
a
l
i
d
−
log
(
1
2
U
i
exp
∣
D
i
−
D
g
t
,
i
∣
U
i
)
=
1
∣
I
0
v
a
l
i
d
∣
∑
x
∈
I
0
v
a
l
i
d
1
U
i
∣
D
i
−
D
g
t
,
i
∣
+
log
U
i
\begin{aligned} \begin{aligned} L_{i}^{joint}&= \frac{1}{|I_0^{valid}|} \sum _{x\in I_0^{valid}} -\log \left( \frac{1}{2\mathbf {U}_{i}}\exp \frac{| \mathbf {D}_{i} - \mathbf {D}_{gt, i} |}{\mathbf {U}_{i}}\right) \\&=\frac{1}{|I_0^{valid}|} \sum _{x\in I_0^{valid}} \frac{1}{\mathbf {U}_{i}} | \mathbf {D}_{i} - \mathbf {D}_{gt, i} | + \log \mathbf {U}_{i} \end{aligned} \end{aligned}
Lijoint=∣I0valid∣1x∈I0valid∑−log(2Ui1expUi∣Di−Dgt,i∣)=∣I0valid∣1x∈I0valid∑Ui1∣Di−Dgt,i∣+logUi
公式中省略了常数。 为了数值稳定性,在实践中我们直接推断
S
i
=
l
o
g
U
i
S_{i}=logU_{i}
Si=logUi而不是
U
i
U_{i}
Ui。 对数不确定性图
S
i
S_{i}
Si也由浅层 2D CNN 从熵图
H
i
H_{i}
Hi转换而来。
Loss也可以解释为使用正则化项对估计值和真实值之间的 L1 损失进行的衰减。 直觉是在训练过程中应该减少错误样本的干扰。
3.5 Volume Fusion
省略掉阶段数
k
k
k,给定成对latent volume
{
V
i
}
i
=
1
N
v
\{V_{i}\}_{i=1}^{N_{v}}
{Vi}i=1Nv,单个V通过加权和从卷中融合而成,其中权重与估计的成对不确定性负相关。
V
=
(
∑
i
=
1
N
v
1
exp
S
i
)
−
1
∑
i
=
1
N
v
(
1
exp
S
i
V
i
)
\begin{aligned} \mathbf {V} = \left( \sum _{i=1}^{N_v} \frac{1}{\exp \mathbf {S}_i} \right) ^{-1} \sum _{i=1}^{N_v} \left( \frac{1}{\exp \mathbf {S}_i} \mathbf {V}_i\right) \end{aligned}
V=(i=1∑NvexpSi1)−1i=1∑Nv(expSi1Vi)
根据我们的观察,具有较大不确定性的像素更有可能位于遮挡区域。 因此,latent volume中的这些值可能会减弱。
加权和的替代方法是应用 S i S_{i} Si的阈值并对每个像素执行硬可见性选择。 然而,如果没有对 S i S_{i} Si值的解释,我们只能进行经验阈值处理,这可能不具有普遍性。 相反,我们的加权和公式自然地融合了所有观点,并以相对方式考虑对数不确定性 S i S_{i} Si。
3.6 Coarse-to-Fine Architecture
介绍了一下层级结构,和CasMVSNet类似。
3.7 Training Loss
对于每个阶段,计算最终深度图的pair-wise L1 loss、pair-wise joint loss和L1 loss,总损失是所有三个阶段损失的加权和。为了将不同训练场景中的尺度归一化,所有的深度差异都除以最后阶段预先定义的深度间隔。
L
=
∑
k
=
1
3
λ
k
[
L
1
,
k
f
i
n
a
l
+
1
N
v
∑
i
=
1
N
v
(
L
1
,
k
,
i
p
a
i
r
+
L
k
,
i
j
o
i
n
t
)
]
\begin{aligned} L = \sum _{k=1}^3\lambda _k\left[ L_{1,k}^{final} + \frac{1}{N_v} \sum _{i=1}^{N_v} (L_{1, k,i}^{pair} + L_{k,i}^{joint})\right] \end{aligned}
L=k=1∑3λk[L1,kfinal+Nv1i=1∑Nv(L1,k,ipair+Lk,ijoint)]
pair-wise L1 loss也被包含了,是因为不确定性损失往往会过度放松pair-wise depth和不确定性估计。 这里的操作可以保证合格的pair-wise depth map estimation。
3.8 Point Cloud Generation
描述了点云是如何生成的。
4 Experiment
实验部分的数据就不展示了,感兴趣的可以自行查看。
4.1 Implementation
4.2 Benchmarking on Tanks and Temples Dataset
4.3 Benchmarking on ETH3D Dataset
4.4 Benchmarking on DTU Dataset
4.5 Ablation Study
4.6 Memory and Time Consumption
5 Conclusion
我们提出了一种用于多视图立体重建的可见性感知深度推理框架。 我们提出了两步成本体积正则化、成对深度和不确定性的联合推理以及根据不确定性图的成对体积的加权平均融合。 所提出的方法已在多个数据集上进行了广泛评估。 定性地,该系统可以产生更准确和更密集的点云,这证明了所提出的可见性感知深度推理框架的有效性。