前言
1. 为什么要做这个研究? 将很火的Transformer迁移到点云学习中,发现也能取得很不错的效果。 2. 实验方法是什么样的? 网络分为三个部分:输入嵌入、注意力层和分类分割。 输入嵌入层:将点云从欧氏空间xyz映射到128维的空间,这里作者提出了点嵌入和邻域嵌入两种方法,后者还考虑了局部邻域信息。 注意力层:作者采用了自注意力(self-attention)机制和偏置注意力(offset-attention)机制。 分类分割操作:作者对经过注意力层的特征直接进行池化,再分别进行分类和分割的下一步操作。
3. 得到了什么结果? 在分类、分割任务中均取得了很好的效果。
摘要
不规则的定义域和无序性给设计用于点云处理的深度神经网络带来了挑战。作者提出了一种新的用于点云学习的框架,Point Cloud Transformer(PCT)。PCT是基于Transformer的,具有处理一系列点的置换不变性,非常适合点云学习。为了更好地捕获点云内的局部环境,作者加强了输入嵌入,支持最远点采样和最近邻搜索。该算法在形状分类、零件分割、语义分割和一般的估计任务中均取得了较好的性能。
1.介绍
点云是无序且无结构的,这使得设计神经网络直接从点云中提取语义很有挑战性。PointNet使用多层感知机(MLPs)、maxpooling和刚性变换来确保排列和旋转下的不变性,从而对点云进行特征学习。SEGCloud、PointCNN、PointConv等方法都考虑定义卷积算子来聚合点云的局部特征。这些方法要么对输入点序列进行重新排序,要么对点云进行体素化,以获得一个标准的卷积域。 Transformer是一种encoder-decoder结构,包含了3个模块:输入词嵌入、位置(顺序)编码和self-attention。其中,self-attention是其核心组件,基于全局上下文的输入特征,生成的精细的attention特征。 首先,self-attention将输入词嵌入和位置编码之和作为输入,通过训练的线性层为每个单词计算3个向量:
q
u
e
r
y
、
k
e
y
query、key
query、key和
v
a
l
u
e
value
value。然后可以通过匹配(点积)查询和
k
e
y
key
key向量来获取任意两个word之间的attention权重。最后,attention feature定义为所有value向量和attention权重的加权和。显然,每个word的输出attention feature与所有的输入特征相关,因此能够学习全局上下文。Transformer的所有操作均可并行执行与顺序无关,理论上讲,可以替代CNN计算中的卷积运算,并且有更好的通用性。 PCT的核心思想是通过使用transformer的固有顺序不变性来避免定义点云数据的顺序,以及通过attention机制来进行特征学习。如图1所示,attention权值的分布与部分语义高度相关,并没有随着空间距离严重衰减。 因为点云数据和自然语言数据截然不同,PCT对其进行了一系列调整。
- 基于坐标的输入嵌入模块。Transformer使用了位置编码模块来表示自然语言中的单词顺序。这样可以区分不同位置的相同单词,反映单词间的位置关系。然而,点云没有固定的顺序。因此在PCT框架中,作者将原始的位置编码和输入嵌入合并到一个基于坐标的输入嵌入模块。它可以生成可区分的特征,因为每个点都有表示其空间位置的唯一的坐标。
- 优化的偏移attention模块。作者提出的偏移attention模块方法是对原有的self-attention的有效升级。它的工作原理是用self-attention模块的输入与attention特征之间的偏移量来替代attention特征。首先,绝对坐标通过刚性变换转换成相对坐标通常更加鲁棒。其次,拉普拉斯矩阵(度矩阵和邻接矩阵的偏移量)在图卷积学习中是非常有效的。从这个角度可以将点云看作一个图形,将“float"邻接矩阵作为attention graph。同样,作者将每行的总和缩放为1。因此度矩阵可以被看作恒等矩阵。因此,偏移attention优化过程可以近似理解为拉普拉斯过程(3.3)。此外,作者对第四节中介绍的偏移attention和self-attention做了大量对比实验来证明其有效性。
- 邻近嵌入模块。显然,句子中的每个单词都包含基本的语义信息。但是这些点的独立输入坐标与语义内容之间的关系很弱。attention机制可以有效地捕获全局特征,但可能会忽略局部几何信息,而这也是点云学习中必不可少的。为了解决这一问题,作者在点嵌入的基础上采用了邻近嵌入策略(point embedding)。它还通过考虑包含语义信息的局部点组而不是单个点之间的attention来辅助attention模块。
贡献:
- 提出了基于transformer的点云学习PCT框架。
- 提出了带有隐式拉普拉斯算子和归一化修正的偏移attention,与self-attention相比,更适合点云学习。
- 大量实验表明,具有局部上下文增强效果的PCT在形状分类、零件分割和法线估计任务方面达到了SOTA效果。
2.相关工作
2.1 Transformer in NLP Bahdanau等人最早提出带有attention机制的神经机器翻译方法,该方法的attention权重通过RNN的隐藏层计算。LIn 等人提出 self-attention,用来可视化和解释句子嵌入。在这之后出现了用于机器翻译的transformer,它完全是基于self-attention的,无任何重复和卷积运算符。之后又出现了 BERT(双向 transformer),这是 NLP 领域中最强大的模型之一。最近,诸如 XLNet,Transformer-XL 和 BioBERT 之类的语言学习网络进一步扩展了 Transformer 框架。 但是,在自然语言处理中输入是有序的,单个的单词有基本的语义,点云中的点是无序的并且单个点无语义信息。 2.2 Transformer for vision PCT借鉴了ViT中的局部补丁结构和单词的基本语义信息,提出了一个临近嵌入模块,该模块可以聚合来自点的局部邻域的特征,从而捕获局部信息并获得语义信息。 2.3 Point-based deep learning 一些方法也采用attention和transformer。PointASNL利用一种自注意机制来更新局部点组的特征,用以处理点云中的噪声。PointGMM用于形状插值的多层感知器(MLP)分割和attention分割。PCT基于transformer,而不是self-attention作为辅助模块,是一个更通用的框架,可以用于各种点云任务。
3.Transformer for Point Cloud Representation
在本节中将介绍如何将PCT学习到的点云表示应用于点云处理的各种任务,包括点云分类、部分分割和正态估计。然后,将详细介绍PCT的设计,首先介绍了一个naive版本的PCT,它将原来的transformer应用到点云上。接着,再使用特殊的attention机制来解释完整的PCT,以及提供增强的本地信息的邻居聚合。
3.1. Point Cloud Processing with PCT
Encoder. PCT的整体架构如图2所示。PCT旨在将输入点转换到一个新的高维特征空间,该空间可以表征点之间的语义相似性,为各种点云处理任务提供基础。PCT的编码器首先将输入坐标嵌入到一个新的特征空间中。然后将嵌入的特征输入4个堆叠的attention模块,学习每个点的语义性的丰富且有区别的表示,然后用一个线性层生成输出特征。总体而言,PCT的编码器与原始Transformer的设计理念几乎相同,只是位置嵌入被丢弃了,因为点的坐标已经包含了这一信息。 输入点云(
N
×
d
N×d
N×d,N个点,每个点有d维特征描述)。首先通过Input Embedding模块学习
d
e
d_e
de?维嵌入特征
F
e
∈
R
N
×
d
e
F_e \in R^{N×d_e}
Fe?∈RN×de?,然后通过每个attention层进行级联,再进行线性变换来形成
d
0
d_0
d0?维特征
F
0
∈
R
N
×
d
0
F_0 \in R^{N×d_0}
F0?∈RN×d0?,
A
T
i
AT^i
ATi表示第
i
i
i个attention层,每个attention层的输出维度与输入维度相同,
W
0
W_0
W0?代表线形层的权重。 为了获得高效的表示点云的全局特征向量
F
g
F_g
Fg? ,作者将两个池化操作的输出连接起来:max-pooling(MP)和average-pooling(AP)。 Classification. PCT的分类网络细节如图2所示。为了将点云
P
P
P分为
N
c
N_c
Nc?个目标类别(如:书桌、桌子、椅子),将全局特征
F
g
F_g
Fg?喂入分类decoder,该解码器包括两个级联的前馈神经网络LBR(Liner, BatchNorm(BN)和ReLU层),每个LBR的dropout的概率为0.5,最后通过一个线性层来预测最终的分类分数
C
∈
R
N
c
C \in \R^{N_c}
C∈RNc?。确定点云的类标签为得分最大的类。 Segmentation. 为了将点云分为N个部分,为每个点预测一个部分(零件)标签(如桌面、桌腿,一个零件不需要是连续的)。首先将全局特征
F
g
F_g
Fg?和每个点的特征
F
O
F_O
FO?级联。像大多数点云分割网络一样,将大多数物体点编码成一个64维的one-hot目标标签特征向量,并和全局特征级联。分割网络解码器的架构与分类网络的架构几乎相同,不同之处在于仅在第一个LBR上执行dropout操作。然后预测最终每个点的分割分数
S
∈
R
N
×
N
s
S \in \R^{N×N_s}
S∈RN×Ns?,最后也是确定一个点的部分标签为得分最大的那个。 Normal estimation. 设置
N
s
=
3
N_s= 3
Ns?=3,使用和分割相同的体系结构,不对对象类别进行编码,将输出的每个点得分作为预测的正态。
3.2 Naive PCT
修改Transformer用于点云的最简单方法就是将整个点云看作一个句子,将每个点看成一个单词。通过实现基于坐标的点嵌入并使用self-attention,可以实现朴素PCT。 首先来看朴素的点嵌入,忽略点与点之间的关系。与NLP中的词嵌入相比,点嵌入的目的是在语义更相似的情况下将点放置在嵌入空间中更近的位置。使用包含两个级联的LBR的共享神经网络将点云P嵌入到
d
e
d_e
de?维空间
F
e
=
R
N
×
d
e
F_e = R^{N×d_e}
Fe?=RN×de?中,,每个 LBR 都具有
d
e
d_e
de?维输出。作者根据经验将
d
e
d_e
de?设置为128,这样能提高效率。并且仅使用 3D 坐标作为其输入特征描述(这样做已经胜过其他方法),但是也可以用点的额外输入信息,例如点的法线。 对于朴素PCT的实现,采用了原始Transformer中介绍的self-attention,这是一种计算数据序列中不同项之间的语义相似性的机制,其结构见图3。
Q
、
K
、
V
Q、K、V
Q、K、V分别是通过输入特征
F
i
n
∈
R
N
×
d
e
F_{in} \in R^{N×d_e}
Fin?∈RN×de?的线性变换生成的查询、键和值矩阵。 其中,
W
q
,
W
k
,
W
v
W_q, W_k, W_v
Wq?,Wk?,Wv?为共享可学习的线性变换,
d
a
d_a
da?是query和key向量的维度,
d
a
d_a
da?可能不等于
d
e
d_e
de?。为了提高计算效率,作者将
d
a
d_a
da?设为
d
e
4
\frac{d_e}{4}
4de??。 首先,使用query矩阵和key矩阵通过矩阵点积计算attention权重: 然后对这些权重进行归一化(在图3中表示为SS),得到
A
=
(
α
)
i
,
j
A = (\alpha)_{i,j}
A=(α)i,j?: self-attention输出特征
F
s
a
F_{sa}
Fsa?为使用相同attention权重的value向量的加权和。 当query、key和value矩阵由共享的对应线性变换矩阵和输入特征
F
i
n
F_{in}
Fin?确定时,它们都是顺序无关的。softmax和加权和都是与序列无关的运算。因此,整个self-attention过程是序列无关的,非常适合点云。 最后,self-attention特征
F
s
a
F_{sa}
Fsa?和
F
i
n
F_{in}
Fin?进一步用于通过LBR网络为整个SA层提供输出特征
F
o
u
t
F_{out}
Fout?:
3.3. Offset-Attention
受图卷积网络启发,将Transformer用于点云时,使用Offset-Attention(OA)模块替换Self-Attention(SA)模块可以获得更好的网络性能。OA层由逐元素之间的self-attention特征和输入特征的差(偏移)得到。偏移量再传给LBR,以代替朴素版本中使用的SA特征。
F
i
n
?
F
s
a
F_{in}-F_{sa}
Fin??Fsa?类似于离散的拉普拉斯算子:
W
v
W_v
Wv?可以忽略是因为它表示线性层的权重矩阵。
I
I
I是与拉普拉斯矩阵的对角矩阵D相当的恒等矩阵,A是与邻接矩阵相应的attention矩阵。 在PCT增强版本中,使用归一化: 作者对第一维用了softmax操作,对第二维用了
l
1
?
n
o
r
m
l_1-norm
l1??norm来归一化attention map。传统的transformer将第一维缩放了
1
d
a
\frac{1}{\sqrt{d_a}}
da?
?1?,并使用softmax对第二维进行归一化。但是,作者提出的offset-attention提高了attention权重,减少了噪声的影响,有利于下游任务。图 1 中显示了 offset-attention map 的例子,可以看出来不同 query 的 attention maps 差别很大,但是在语义上通常有意义。作者将这种改进过的 PCT 称为 simple PCT(SPCT)。
3.4. Neighbor Embedding for Augmented Local Feature Representation
点嵌入的PCT能够有效提取全局特征,但是忽略了局部邻域信息。作者设计了局部邻域聚合策略,即邻域嵌入,对点嵌入进行优化来增强PCT的局部特征提取能力。如图4所示,邻域嵌入模块包括两个LBR层和两个SG层(采样、分组)。LBR层基于第3.2节的点嵌入。类似与CNN,使用两个级联的SG层来逐渐扩大特征聚合过程中的感受野。SG 层在采样过程中使用欧几里得距离通过 k-NN 搜索分组的每个点,聚合局部邻域特征。 具体而言,假设SG的输入点云P有N个点和对应的特征F,输出的采样点云
P
s
P_s
Ps?拥有
N
s
N_s
Ns?个点以及相应的聚集特征
F
s
F_s
Fs?。首先,使用最远点采样(FPS)算法下采样P为
P
s
P_s
Ps?。对每个采样点
p
∈
P
s
p \in P_s
p∈Ps?,令
k
n
n
(
p
,
P
)
knn(p, P)
knn(p,P)为最近的k个邻居。计算输出特征
F
s
F_{s}
Fs?:
F
(
p
)
F(p)
F(p)表示点p的输入特征,
F
s
(
p
)
F_s(p)
Fs?(p)表示采样点p的输出特征,MP为最大池化操作,
R
P
(
x
,
k
)
RP(x,k)
RP(x,k)表示将向量x复制k次形成的矩阵。这里先是通过输入特征计算采样点p和k个邻居点的偏置特征,然后将偏置特征和采样点输入特征连接,再进入两层LBR,最后接一个maxpooling得到最终的采样点输出特征。这样确实考虑到了局部信息。
4.结果
作者在 ModelNet 和 ShapeNet 两大数据集上进行实验,对比朴素 PCT(点嵌入+self-attention)、simple PCT(点嵌入+offset-attention) 以及 full PCT(邻域嵌入+offset-attention)。
4.1. Classification on ModelNet40 datase
ModelNet40包含40个对象类别中的12311个CAD模型;它被广泛应用于点云形状分类和表面法线估计基准。作者使用了正式的分割法,其中9843个对象用于培训,2468个对象用于评估。将每个对象统一采样到1024个点。在训练期间,应用了[0.2,0.2]中的随机平移、[0.67,1.5]中的随机各向异性缩放和随机输入丢失来增加输入数据。在测试期间,没有使用数据增加或投票方法。对于所有三个模型,小批量大小为32,250个训练时期被使用,初始学习率为0.01,用余弦退火调度来调整每个时期的学习率。
5.总结
实验表明,PCT具有良好的语义特征学习能力,适用于不规则的点云,并且在多项任务上均达到了SOTA。
|