赞
踩
不规则的区域和无序性给设计用于点云处理的深度神经网络带来了挑战。本文提出了一种用于点云学习的新型框架——点云转换器(PCT)。PCT基于Transformer,在自然语言处理方面取得了巨大的成功,在图像处理方面显示出巨大的潜力。它对于处理一系列点具有固有的排列不变性,这使得它非常适合于点云学习。为了更好地捕捉点云中的局部上下文,我们通过支持最远点采样和最近邻搜索来增强输入嵌入。大量的实验表明,PCT在形状分类、部分分割、语义分割和正常估计任务上达到了最先进的性能。
直接从点云中提取语义是机器人、自动驾驶、增强现实等应用的迫切需求。与二维图像不同,点云是无序的、无结构的,这使得设计处理它们的神经网络具有挑战性。
Qi等人开创了PointNet在点云上的特征学习,使用多层感知器(MLPs)、最大池化和刚性转换来确保在排列和旋转下的不变性。受卷积神经网络(convolutional neural networks, CNNs)在图像处理领域取得的强大进展的启发,最近的许多研究都考虑定义卷积算子来聚合点云的局部特征。这些方法要么对输入点序列进行重新排序,要么对点云进行体素化,以获得用于卷积的规范域。近年来,自然语言处理中的主流框架Transformer被应用于图像视觉任务,其性能优于流行的卷积神经网络。
Transformer是一个解码器-编码器结构,它包含三个主要模块,分别用于输入(单词)嵌入、位置(顺序)编码和自我注意。自我注意模块是该模块的核心组件,它基于全局上下文对输入特征生成精细化的注意特征。首先,自我注意将输入嵌入和位置编码的总和作为输入,通过训练好的线性层,为每个单词计算query、key和value三个向量。然后,将任意两个词的查询与关键向量进行匹配(点生成),得到两个词之间的注意权值。最后,将注意力特征定义为具有注意力权重的所有值向量的加权和。显然,每个单词的输出注意特征都与所有的输入特征相关,使其能够学习全局上下文。Transformer的所有操作都是并行的、顺序无关的。从理论上讲,它可以取代卷积神经网络中的卷积运算,具有较好的通用性。
受Transformer在视觉和NLP任务上的成功启发,我们基于传统Transformer的原理,提出了一种用于点云学习的新颖框架PCT。PCT的关键思想是利用Transformer固有的阶不变特性,避免了需要定义点云数据的阶数,并通过注意机制进行特征学习。如图1所示,注意权值分布与部分语义高度相关,不会随着空间距离的变化出现严重衰减的情况。
点云和自然语言是完全不同的数据类型,因此我们的PCT框架必须为此进行一些调整。这些包括:
通过上述调整,PCT更加适合于点云特征学习,并在形状分类、部分分割和正常估计任务上取得了最先进的性能。本文的主要贡献总结如下:
在本节中,我们首先展示了PCT学习的点云表示如何应用于点云处理的各种任务,包括点云分类、部分分割和正态估计。随后,我们详细介绍了PCT的设计,首先介绍了PCT的原始版本,直接将原始Transformer应用于点云。然后,我们解释了完整的PCT,其特殊的注意机制和邻居聚合,以提供增强的局部信息。
编码器 PCT的总体架构如图所示。PCT旨在将输入点转换(编码)到一个新的高维特征空间,该空间可以表征点之间的语义亲和性,作为各种点云处理任务的基础。PCT的编码器首先将输入坐标嵌入到新的特征空间中。然后将嵌入的特征输入到4个堆叠的注意模块中,学习每个点的语义丰富的判别表示,再通过线性层生成输出特征。总的来说,PCT的编码器几乎与原始Transformer具有相同的设计理念,除了位置嵌入被丢弃之外,因为点的坐标已经包含了这个信息。读者可以参考[26]了解原始NLP Transformer的详细信息。
PCT架构。该编码器主要包括一个输入嵌入模块和四个叠加注意模块。解码器主要由多个线性层组成。每个模块上面的数字表示其输出通道。MA-Pool连接Max Pool和Average-Pool。LBR结合线性,BatchNorm和ReLU层。LBRD意味着LBR后面是Dropout层。
形式上,给定一个输入点云
P
∈
R
N
×
d
P \in R^{N \times d}
P∈RN×d,包含
N
N
N 个点具有
d
d
d 维特征的点,首先通过 input Embedding 模块学习
d
e
d_e
de 维嵌入特征
F
e
∈
R
N
×
d
e
F_e \in R^{N \times d_e}
Fe∈RN×de。再将各注意层的注意输出通过特征维串接起来,形成 PCT 输出的逐点
d
o
d_o
do 维特征
F
o
∈
R
N
×
d
o
F_o∈R^{N \times d_o}
Fo∈RN×do,然后进行线性变换:
F
1
=
A
T
1
(
F
e
)
F_1=AT^1(F_e)
F1=AT1(Fe)
F
i
=
A
T
i
(
F
i
−
1
)
,
i
=
2
,
3
,
4
F_i=AT^i(F_i-1),i=2,3,4
Fi=ATi(Fi−1),i=2,3,4
F
o
=
c
o
n
c
a
t
(
F
1
,
F
2
,
F
3
,
F
4
)
⋅
W
o
F_o=concat(F_1, F_2, F_3, F_4) \cdot W_o
Fo=concat(F1,F2,F3,F4)⋅Wo 其中
A
T
i
AT^i
ATi 表示第
i
i
i 个注意力层,每一层有着与它们的输入同样的输出维度,
W
o
W_o
Wo 是线性层的权重。稍后将解释输入嵌入和注意的各种实现。为了提取一个有效的表示点云的全局特征向量Fg,我们选择连接两个池化操作的输出:一个最大池化(MP)和一个平均池化(AP),学习的点特征表示。
分类 使用PCT进行分类网络的详细情况如上图所示。为了将点云
P
P
P 分类为
N
c
N_c
Nc 对象类别(如书桌、桌子、椅子),我们将全局特征
F
g
F_g
Fg 提供给分类解码器,该解码器包括两个级联前馈神经网络LBRs(结合Linear、BatchNorm (BN)和ReLU层),每个层的丢弃概率为0.5,由线性层最终预测最终分类得分
C
∈
R
N
c
C \in R^{N_c}
C∈RNc。点云的类标签确定为得分最大的类。
修改Transformer[26]以便使用点云的最简单方法是将整个点云视为一个句子,将每个点视为一个单词,我们现在将介绍这种方法。这个原始的PCT是通过实现一个基于坐标的点嵌入,并使用[26]中引入的自我注意实例化注意层来实现的。
首先,我们考虑一种朴素的点嵌入,它忽略了点之间的相互作用。与自然语言处理中的单词嵌入一样,点嵌入的目的是让语义上更相似的点在嵌入空间中距离越近。
具体地说,我们用由两个级联 LBR 组成的共享神经网络(每个 LBR 都有一个
d
e
d_e
de 维输出)将点云
P
P
P 嵌入到一个
d
e
d_e
de 维的特征空间
F
e
∈
R
N
×
d
e
F_e \in R^{N \times d_e}
Fe∈RN×de 中。根据经验设置
d
e
=
128
d_e=128
de=128,这是一个相对较小的值,以提高计算效率。我们只是使用点的3D坐标作为它的输入特征描述(即
d
p
=
3
d_p = 3
dp=3 )(这样做仍然优于其他方法),但也可以使用额外的点的输入信息,如点法线。
对于PCT的原始实现,我们采用了原始Transformer中引入的自我注意(self-attention, SA)。自我注意,也称为内部注意,是一种计算数据序列中不同项之间语义相关度的机制。图3通过切换到点分数据流描述了SA层的体系结构。根据[26]中的术语,设
Q
、
K
、
V
Q、K、V
Q、K、V 分别为输入特征线性变换产生的查询矩阵、键矩阵和值矩阵,其中由输入特征的线性变换产生的
F
i
n
∈
R
N
×
d
e
F_in \in R^{N \times d_e}
Fin∈RN×de 计算如下:
(
Q
,
K
,
V
)
=
F
i
n
⋅
(
W
q
、
W
k
、
W
v
)
(Q, K, V)=F_{in} \cdot (W_q、W_k、W_v)
(Q,K,V)=Fin⋅(Wq、Wk、Wv)
Q
,
K
∈
R
N
×
d
a
,
V
∈
R
N
×
d
e
Q, K \in R^{N \times d_a}, V \in R^{N \times d_e}
Q,K∈RN×da,V∈RN×de
W
q
,
W
k
∈
R
d
e
×
d
a
,
W
v
∈
R
d
e
×
d
e
W_q, W_k \in R^{d_e \times d_a}, W_v \in R^{d_e \times d_e}
Wq,Wk∈Rde×da,Wv∈Rde×de 其中
W
q
、
W
k
、
W
v
W_q、W_k、W_v
Wq、Wk、Wv 为共享的可学习的线性变换,
d
a
d_a
da 为查询向量和键向量的维数。注意,
d
a
d_a
da 可能不等于
d
e
d_e
de。在本工作中,为了计算效率,我们将
d
a
d_a
da设为
d
e
/
4
d_e/4
de/4。
首先,我们可以使用查询矩阵和键矩阵通过矩阵点积来计算注意力权重:
A
~
=
(
α
~
)
i
,
j
=
Q
⋅
K
T
\tilde A = (\tilde \alpha)_{i, j}=Q \cdot K^T
A~=(α~)i,j=Q⋅KT 这些权重被归一化后得到
A
=
(
α
)
i
,
j
A=(\alpha)_{i,j}
A=(α)i,j:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。