【论文阅读】PU-GAN:点云上采样的对抗生成网络
在本文中,作者提出了一种点云上采样的对抗网络模型,那么什么是点云的上采样任务呢?
简单来说,点云上采样任务就是输入稀疏点云,输出稠密点云,同时需要保持住点云的基本形状、均匀程度等特征。
GAN就是生成对抗网络,点云上采样作为生成式任务,使用GAN来实现点云的上采样是自然而然的想法。
1 motivation
由深度相机和激光雷达传感器产生的原始点云常常是稀疏的、有噪声的并且不均匀的,这为下游任务的后续处理造成了困难。而就上采样而言,PU-Net和MUP等方法取得的效果十分有限。
而PU-GAN在kitti数据集上的表现也十分出色。
2 contribution
1. 文章针对点云上采样任务提出了一种GAN框架的解决方案,并取得了良好的效果
2. 局部结构具有新意,提出了一个up-down-up unit来expand point features,使用self attention unit来enhance features integration quality。
3. 设计了复合损失来提高结果的均匀性并且支持对抗网络的训练
4. 在KITTI这样的真实扫描的场景中做了上采样实验,并且依然取得了良好的效果,展现了强大的泛化能力。
3 solution
目标是上采样,给定N个点的无序稀疏点集
P
=
{
p
i
}
i
=
1
N
P=\{p_i\}_{i=1}^N
P={pi}i=1N,生成包含rN个点的稠密点集
Q
=
{
q
i
}
i
=
1
r
N
Q=\{q_i\}_{i=1}^{rN}
Q={qi}i=1rN,但输出点集Q并不要求是P的超集,但Q要满足两个条件:
(i) Q要和P一样能够描述潜在目标的基础几何,因此Q中的点要位于且覆盖目标表面;
(ii) Q中的点要在目标表面均匀分布,即使输入点集P中的点是稀疏且不均匀的。
4 architecture
Generator部分负责由稀疏点云进行点云上采样输出稠密点云
Discriminator部分负责区分真实稠密点云和Generator生成的点云。
4.1 Generator
生成器部分大体使用了PU-Net的架构,但与PU-Net又有所不同。
PU-Net共有四个部分:
- patch extraction,从给定的点云中提取不同尺度和分布的点块
- point feature embedding,分层特征学习和多层特征聚合将原始的3D坐标映射到特征空间
- feature expansion,拓展特征数量
- coordinate reconstruction,全连接层重建输出点云的三维坐标
而PU-Gan的Generator共有3部分:
- Feature Extraction,本部分采用了Patch-based Progressive 3D Point Set Upsampling(3PU)(也即后文中的MPU)中的方法,使用稠密连接层来提取特征,以此获得长程和全局信息
- Feature Expansion,作者在这里设计了up-down-up expansion unit来增强特征的变化,以此生成更多不同的点分布
- Point Set Generation,首先将特征还原为3D坐标,使用最远点采样保留相距更远的rN个点,保证点集的均匀性
在实际训练中,作者首先对训练数据进了预处理,在每个点云模型表面随机生成200个种子位置,并在种子周围利用测地线距离生成一个patch,将每个patch normalize到一个unit sphere上,在每个patch上利用Poisson disk sampling生成目标点集,在训练时从中随机选择N个点生成输入点集P。
Feature Extraction借鉴了Patch-based Progressive 3D Point Set Upsampling(3PU)中的方法,使用稠密连接层提取特征
在Feature Expansion部分中,作者设计了up-down-up expansion unit,PU-Net直接复制点的特征,并且利用独立的MLP对特征进行处理,这样导致扩展后的特征与输入过于相似,从而影响上采样质量。而3PU将16×的上采样分成4个2×上采样,成功地保留了丰富的细节,但训练过程十分复杂。
作者设计的up-down-up expansion unit将MLP生成的特征
F
1
F_1
F1先进行一次上采样得到
F
u
p
′
F'_{up}
Fup′,再对
F
u
p
′
F'_{up}
Fup′进行下采样得到
F
2
F_2
F2,计算上下采样后特征
F
1
F_1
F1和
F
2
F_2
F2的差值∆,对∆进行一次上采样得到
∆
u
p
∆_{up}
∆up,将
∆
u
p
∆_{up}
∆up和
F
u
p
′
F'_{up}
Fup′相加得到
F
u
p
F_{up}
Fup,这种方法既避免了冗长的多步训练,同时又能够促进细粒度特征的生成。
在Feature Expansion部分里,上采样过程中PU-GAN并没有使用PU-Net里直接复制点特征的方式,而是使用了采用了Folding Net中的grid机制,在每个复制后的特征后加上唯一的2D向量,以增加其形状特征。(复制的点特征所使用的2D向量相同?)
在特征整合方面使用了自注意力机制。
而在down的部分中没有什么特别的地方,先将特征进行reshape,而后利用MLP拟合原特征
最后利用1×1卷积进行降维来三维重建
4.2 Discriminator
判别器中并没有十分特别的地方,本部分大体借鉴了PCN的架构,将池化后的特征与提取的特征直接进行连接以结合局部和全局信息,使用自注意力机制进一步增强特征提取能力,最后通过MLP回归最终的置信值。
4.3 Loss
由于是GAN网络,本文设计了较多Loss Function,主要分为Generator和Discriminator两部分。
4.3.1 Discriminator Loss
Discriminator中的loss只有一个,即adversarial loss
L
g
a
n
(
D
)
=
1
2
[
D
(
Q
)
2
+
(
D
(
Q
^
)
−
1
)
2
]
]
L_{gan} (D)=\frac{1}{2}[D(Q)^2+(D(\hat{Q})-1)^2] ]
Lgan(D)=21[D(Q)2+(D(Q^)−1)2]]
其中
Q
^
\hat{Q}
Q^是真实点云,
Q
Q
Q是生成的fake点云,
D
(
Q
)
D(Q)
D(Q)表示判别器输出的置信度。
4.3.2 Generator
Generator Loss包括了reconstruction loss,repulsion loss,uniform loss和adversarial loss.
-
Adversarial Loss
L g a n ( G ) = 1 2 [ D ( Q ) − 1 ] 2 L_{gan}(G)=\frac{1}{2}[D(Q)-1]^2 Lgan(G)=21[D(Q)−1]2 -
Reconstruction Loss
PU-GAN的Reconstruction Loss直接使用EMD loss以鼓励生成的点落在物体表面
L r e c = min ϕ : Q → Q ^ ∑ q i ∈ Q ∣ ∣ q i − ϕ ( q i ) ∣ ∣ 2 L_{rec}=\min_{\phi:Q\to\hat{Q}}\sum_{q_i\in Q}||q_i - \phi(q_i)||_2 Lrec=ϕ:Q→Q^minqi∈Q∑∣∣qi−ϕ(qi)∣∣2
其中 ϕ : Q → Q ^ \phi:Q\to\hat{Q} ϕ:Q→Q^是一个双射 -
Uniform Loss
U-GAN最为突出的贡献就是设计了Uniform Loss来控制生成的点云的均匀性。
为了评估一个点集的均匀性,PU-Net中的NUC度量在对象表面上划分相同大小的disk,并计算disk中点的数量。因此,NUC忽略了点的局部均匀性。图6显示了三个点的patch,这些点的分布差异很大,但它们包含相同数量的点,NUC度量不能区分它们的分布均匀性。
本文设计的Uniform Loss则同时考虑了全局和局部均匀性
第一项:
对于有rN个点的点集 Q Q Q,也就是一个patch
Step1:在 Q Q Q中最远点采样选择M个seed points
Step2:使用很小的半径 r d r_d rd进行ball query得到一个子集 S i S_i Si,i=1,…,M
由于在最初数据的预处理中我们将每一个patch进行了初始化,也就是说每一个patch的大小为 π × 1 2 \pi\times 1^2 π×12,而 S i S_i Si的面积为 π × r d 2 \pi\times r_d^2 π×rd2
所以S_i中的点所占比例期望为 p = π × r d 2 / π × 1 2 = r d 2 p=\pi\times r_d^2 /\pi\times1^2=r_d^2 p=π×rd2/π×12=rd2那么 S i S_i Si中点的数量自然就是 n ^ = r N p \hat{n} =rNp n^=rNp
利用卡方检验模型计算 ∣ S i ∣ |S_i | ∣Si∣与 n ^ \hat{n} n^的偏差 U i m b a l a n c e ( S j ) = ( ∣ S j ∣ − n ^ ) 2 n ^ U_{imbalance}(S_j)=\frac{(|S_j|-\hat{n})^2}{\hat{n}} Uimbalance(Sj)=n^(∣Sj∣−n^)2通过第一项控制全局点的数量的分布
第二项
计算S_i中第k个点最近邻居结点的距离d_(j,k),假设相邻点为六边形,且S_i表面平整,则预期距离为
d
^
=
2
π
r
d
2
∣
S
j
∣
3
\hat{d} =\sqrt\frac{2\pi r_d^2}{|S_j|\sqrt3}
d^=∣Sj∣32πrd2,再次利用卡方检验模型计算二者偏差
U
c
l
u
t
t
e
r
(
S
j
)
=
∑
k
=
1
∣
S
j
∣
(
d
j
,
k
−
d
^
)
2
d
^
U_{clutter}(S_j)=\sum_{k=1}^{|S_j|}\frac{(d_{j,k}-\hat{d})^2}{\hat{d}}
Uclutter(Sj)=k=1∑∣Sj∣d^(dj,k−d^)2通过第二项控制局部点的均匀性
将二者合起来,便得到了Uniform Loss
L
u
n
i
=
∑
j
=
1
M
U
i
m
b
a
l
a
n
c
e
(
S
j
)
∙
U
c
l
u
t
t
e
r
(
S
j
)
L_{uni}=\sum_{j=1}^MU_{imbalance}(S_j)\bullet U_{clutter}(S_j)
Luni=j=1∑MUimbalance(Sj)∙Uclutter(Sj)最后将上述结合,得到Generator和Discriminator所用到Compound Loss
L
G
=
λ
g
a
n
L
g
a
n
(
G
)
+
λ
r
e
c
L
r
e
c
+
λ
u
n
i
L
u
n
i
L_G = \lambda_{gan}L_{gan}(G) + \lambda_{rec}L_{rec} + \lambda_{uni}L_{uni}
LG=λganLgan(G)+λrecLrec+λuniLuni
L
D
=
L
g
a
n
(
D
)
L_D = L_{gan}(D)
LD=Lgan(D)
5 Experiments
5.1 Data Set
本文采用PU-Net和MPU的数据集147个3D模型,随机选择其中120个模型进行训练,剩下的作为测试
5.2 Evaluation Metric
本文使用了四个metric进行评估:
i) point-to-surface distance(P2F)
ii) Chamfer distance(CD)
iii) Hausdorff distance(HD)
iv) 上文所使用的Uniform loss
5.3 Result
消融实验