论文地址:Point-Based Multi-View Stereo Network
一、摘要
本文的创新点:
- 将深度图转换为点云来进行场景优化。
- 采用了由粗糙到精细的深度图生成策略。
- 将三维几何先验知识和纹理信息融入到点云中生成增强点云。
二、网络整体架构
2.1 初始深度图生成
使用预训练好的MVSNet生成低分辨率的初始深度图。
2.2 2D-3D特征融合
2D特征是指从CNN中提取出来的多尺度的特征图,3D特征指从初始深度图经相机内外参映射到参考视图的点云。
2.2.1 多尺度特征提取与融合
源视图表示为
{
I
i
}
i
=
1
N
\{I_{i}\}_{i=1}^{N}
{Ii}i=1N,参考视图表示为
I
0
I_{0}
I0,经过特征提取网络获取得多尺度深度特征表示为
{
F
i
}
=
[
F
i
1
,
F
i
2
,
F
i
3
]
\{F_{i}\}=[F_{i}^{1}, F_{i}^{2},F_{i}^{3}]
{Fi}=[Fi1,Fi2,Fi3],其中
1
,
2
,
3
1,2,3
1,2,3表示不同尺度,
i
i
i表示不同视图。
参照MVSNet,将源视图的特征图经过相机参数warp到参考视图,然后基于方差求匹配代价:
C
j
=
∑
i
=
1
N
(
F
i
j
−
F
ˉ
j
)
2
N
,
(
j
=
1
,
2
,
3
)
(1)
C^{j}=\frac{\sum_{i=1}^{N}\left(F_{i}^{j}-\bar{F}^{j}\right)^{2}}{N},(j=1,2,3)\tag{1}
Cj=N∑i=1N(Fij−Fˉj)2,(j=1,2,3)(1)
其中
j
j
j 表示不同尺度,
i
i
i 表示不同视图。
2.2.2 图像特征与坐标信息融合
将图像特征和3D点云坐标进行拼接得到增广点云特征点如式2所示:
C
p
=
concat
[
C
p
j
,
X
p
]
,
(
j
=
1
,
2
,
3
)
(2)
\mathbf{C}_{p}=\text { concat }\left[\mathbf{C}_{p}^{j}, \mathbf{X}_{p}\right],(j=1,2,3)\tag{2}
Cp= concat [Cpj,Xp],(j=1,2,3)(2)
2.3 点云优化
2.3.1 假设点生成
将初始深度图经过相机参数映射到点云空间中,因为在图像空间中像素点间的邻近信息不能很好地反应三维欧几里得空间中的邻近关系。
对于每一个点云,沿着参考相机的方向生成
2
m
+
1
2m+1
2m+1个假设点:
p
~
k
=
p
+
k
s
t
,
k
=
−
m
,
…
,
m
(3)
\tilde{\mathbf{p}}_{k}=\mathbf{p}+k s \mathbf{t}, \quad k=-m, \ldots, m\tag{3}
p~k=p+kst,k=−m,…,m(3)
其中
t
t
t 表示参考相机的法线方向,
s
s
s 表示单位距离。
2.3.2 边缘卷积
从经典的MVS方法可知,邻域点信息的使用对深度估计是至关重要的,故参照DGCNN的思路,将其用于特征聚合。也就是对于每一个点云点,取其最近的
K
K
K 个邻域点构建有向图,将其送入子网络中进行特征传播,特征增强点云
C
p
~
=
{
C
p
~
1
,
…
,
C
p
~
n
}
C_{\tilde{p}}=\left\{\mathbf{C}_{\tilde{p}_{1}}, \ldots, \mathbf{C}_{\tilde{p}_{n}}\right\}
Cp~={Cp~1,…,Cp~n}表示为:
C
p
~
′
=
□
q
∈
k
N
N
(
p
~
)
h
Θ
(
C
p
~
,
C
p
~
−
C
q
)
(4)
\mathbf{C}_{\tilde{p}}^{\prime}=\underset{q \in kNN(\tilde{p})}{\square} h_{\Theta}\left(\mathbf{C}_{\tilde{p}}, \mathbf{C}_{\tilde{p}}-\mathbf{C}_{q}\right)\tag{4}
Cp~′=q∈kNN(p~)□hΘ(Cp~,Cp~−Cq)(4)
其中,
h
Θ
h_{\Theta}
hΘ表示学习到的非线性变换,
□
\underset{}{\square}
□ 表示按通道进行的对称聚合方法,其中对称聚合方法可以选择最大池化、平均池化或者加权求和,这些通过实验来确定最优的方式(对称:输入顺序不影响结果)。
2.3.3 残差预测
预测模型的输入为特征增强的点云,输出为深度图的残差值。使用3个边缘卷积来聚合不同尺度的邻域点。经过多层感知机层与softmax得到每一个点云在假设点上的概率值,最后经过加权平均的到最后每个预测点云的偏移量:
Δ
d
p
=
E
(
k
s
)
=
∑
k
=
−
m
m
k
s
×
Prob
(
p
~
k
)
(5)
\Delta d_{p}=\mathbf{E}(k s)=\sum_{k=-m}^{m} k s \times \operatorname{Prob}\left(\tilde{\mathbf{p}}_{k}\right)\tag{5}
Δdp=E(ks)=k=−m∑mks×Prob(p~k)(5)
2.4 上采样与迭代优化
由于网络结构的巧妙,可以使用迭代优化的思想来继续优化点云的精度。相比于使用3D代价体的重建方法而言,这种点云优化的方法更加灵活,因为基于3D代价体固定剖分的性质。PointFlow中可以对其上采样,然后进行流预测得到优化后的深度图。在此过程中可以减小深度单位间隔 s s s ,得到更加精细的深度图。
三、损失函数
模型的损失函数如下,采用L1损失,并将所有迭代过程中的深度预测图都考虑进去:
L
o
s
s
=
∑
i
=
0
l
(
λ
(
i
)
s
(
i
)
∑
p
∈
P
v
a
l
i
d
∥
D
G
T
(
p
)
−
D
(
i
)
(
p
)
∥
1
)
(6)
L o s s=\sum_{i=0}^{l}\left(\frac{\lambda^{(i)}}{s^{(i)}} \sum_{p \in \mathbf{P}_{\mathrm{valid}}}\left\|\mathbf{D}_{\mathrm{GT}}(p)-\mathbf{D}^{(i)}(p)\right\|_{1}\right)\tag{6}
Loss=i=0∑l
s(i)λ(i)p∈Pvalid∑
DGT(p)−D(i)(p)
1
(6)
其中
P
v
a
l
i
d
P_{valid}
Pvalid表示有效的标签像素点集,
l
l
l表示迭代的轮次,
λ
(
i
)
\lambda^{(i)}
λ(i) 在训练过程中设置为1,
i
i
i 表示不同的尺度;
四、实验结果