赞
踩
本文提出了一种在适用于点云的Transformer结构。根据点云数据的特点进一步改善了Transformer的结构。其主要做了三点改进:
下面依次介绍上述三种改进点以及改进的原因。
首先介绍原始的Transformer结构在点云中的使用。
使用点云的Encoder结构来提取点云的特征。首先使用一个输入嵌入层来转化点云的坐标,就是将三维的点云坐标映射到一个更高维的空间。这一步的目的是使得具有相似语义信息的点云能够在高维空间中更加靠近。文中这一步是使用线性层来完成的。然后将经过转化后的坐标输入到级联的Attention网络中。然后将各个层级的Attention网络的输出拼接起来,再经过一个线性层以得到一个逐点的特征,然后使用一个Max Pooling或者Mean Pooling操作来获得一个全局的特征。这样我们就可以使用全局的特征来进行点云的分类了。如果是其他任务的话,可以把全局特征和前面逐点的特征进行拼接,在来进行下一步的任务(这个和PointNet++中的操作是一致的)。
上述过程描述的就是使用基于坐标的输入嵌入方法和原始的Transformer结构结合起来处理点云的网络。
在介绍offset-Attention方法之前,需要先介绍一下原始的self-Attenion的机制:
A
^
=
(
a
^
)
i
,
j
=
Q
⋅
K
T
F
s
a
=
A
⋅
V
F
o
u
t
=
S
A
(
F
i
n
)
=
L
B
R
(
F
s
a
)
+
F
i
n
\hat{A}=(\hat{a})_{i,j}=Q \cdot K^T \\ F_{sa} = A \cdot V \\ F_{out} = SA(F_{in}) = LBR(F_{sa}) + F_{in}
A^=(a^)i,j=Q⋅KTFsa=A⋅VFout=SA(Fin)=LBR(Fsa)+Fin
上述公式中
A
A
A是
A
^
\hat{A}
A^的归一化后的结果,具体的归一化的方法可以参考原论文。offset-Attention的方法就是将
L
B
R
LBR
LBR中的
F
s
a
F_{sa}
Fsa变化为
F
s
a
F_{sa}
Fsa和
F
i
n
F_{in}
Fin的差。这样的话就可以有:
F
o
u
t
=
O
A
(
F
i
n
)
=
L
R
B
(
F
i
n
−
F
s
a
)
+
F
i
n
F_{out}=OA(F_{in})=LRB(F_{in} - F_{sa}) + F_{in}
Fout=OA(Fin)=LRB(Fin−Fsa)+Fin
作者把这样改进之后的PCT记为SPCT.
此外,作者还注意到,PCT在提取点云特征的时候,只关注到了点云的全局特征,而忽略了局部特征,因此,受到PointNet++的影响,作者引入了一个局部特征聚合的机制。和PointNet++一样,进行了一个Sampling和Grouping。然后使用PointNet来提取局部点云的特征,然后将这些采样的点及其对应的聚合的特征作为Attention网络的输入.此举大大提高了模型的性能。具体可见下表:
从上述表格中可以看出,SPCT和那个局部特征聚合都对模型的性能有所提升。此外,作者还做了计算资源方面的分析。资源消耗对比如下表所示:
从上表可以看出,NPCT和SPCT的资源消耗相差不是很大,但是精度有一定的提升。PCT相比其余两个的参数量和计算量要多很多,但是所需的浮点运算的次数仍比PointNet++(MSG)要少很多。精度却有很大的提升。
[挖坑]
resented by point clouds. 解释了self-attention适合于point cloud处理的原因。
[挖坑]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。