摘要
作者提出了Pointformer,一个可以有效学习3D点云特征的Transformer主干。具体而言,局部Transformer模块被用来对局部区域中的点之间的交互进行建模,旨在学习对象级别的区域特征。全局Transformer旨在学习场景级别的上下文感知表示。为了进一步捕捉多尺度表示之间的依赖关系,作者提出 Local-Global Transformer集成来自更高分辨率的局部特征和全局特征。此外,作者引入了一个有效的坐标细化模块,将下采样点移至更接近物体质心的位置,从而改进了目标proposal的生成。使用Pointformer作为当前物体检测模型的主干,并在室内和室外数据集上展示了对原始模型的显著改进。代码和预训练模型可在https://github.com/Vladimir2506/Pointformer.获得。
1.介绍
常用的点云处理方法:
- 基于体素的方法面临着效率和准确性之间的困境,更小的体素获得更高的精度,但计算成本更高;更大的体素会遗漏局部细节。
- 基于点的方法直接使用原始点来学习3D表示,避免了信息丢失,由于点云的不规则性,基于点的学习操作必须是排列不变的并且适应输入大小。因此只能学习简单的对称函数(例如使用具有汇集函数的逐点前馈网络),这极大地限制了其表示能力。
- 混合方法试图组合基于体素和基于点的表示,但是这两种表示之间的根本差异可能会限制这些方法对于三维点云特征学习的有效性。
为了解决上述限制,Transformer模型在学习上下文相关表示和捕捉输入序列中的长范围相关性方面非常有效。Transformer和相关的self-attention机制不仅满足排列不变性的要求,而且被证明具有很强的表现力。目前,self-attention已经成功应用于目标分类和检测。然而,将Transformer直接应用于三维点云是极其昂贵的,因为计算成本随着输入大小的平方增长。
Pointformer是用于3D点云的主干,通过利用Transformer模型在集合结构数据上的优势来更有效地学习特征。如图2所示,Pointformer是一个带有多尺度Pointformer块的U-Net结构。Pointformer块由基于Transformer的模块组成,这些模块既具有表现力,又适合3D目标检测任务。
- 首先,使用局部变换模块来建模局部区域中点之间的交互,该模块在对象级别学习与上下文相关的区域特征。
- 其次,提出了一种坐标细化模块来调整从最远点采样(FPS)采样的质心,提高了生成的目标proposal的质量。
- 第三,作者建议使用Local-GlobalTransformer(LGT)将局部特征与更高分辨率的全局特征进行整合。
- 最后,GlobalTransformer(GT)模块被设计为在场景级别学习上下文感知表示。如图1所示,Pointformer可以捕获局部和全局依赖关系,从而提高具有多个杂乱对象的场景的特征学习性能。
作者在几个检测基准上进行了大量实验,以验证方法的有效性。使用Pointformer作为三个对象检测模型(CBGS、VoteNet和PointRCNN)的主干,并分别在三个室内和室外数据集(SUN-RGBD、KITTI和nuScenes)上进行实验。观察到在所有实验设置上对原始模型的显著改进,这证明了我们方法的有效性。 贡献如下:
- 提出了一个纯transformer模型,即Pointformer,它是3D点云高效的特征学习主干。Pointformer是置换不变的,局部和全局上下文感知的。
- Pointformer可以很容易地作为最先进的点云3D对象检测器的替代主干。
- 作者使用Pointformer作为三个最先进的3D对象检测器的主干进行了广泛的实验,并在包括室内和室外数据集在内的几个基准上显示出显著的性能提升。这表明Pointformer可以广泛用于室内外的3D对象检测器的设计和优化。
2.相关工作
Feature learning for 3D point clouds. 先前的工作包括体素化网格上的特征学习、点云上的直接特征学习以及两者的混合。 Transformers in computer vision. 3D object detection in point clouds.
3.Pointformer
3D点云的特征学习需要面对其不规则性、无序性和变化的大小。先前的工作或利用简单的对称函数(如PointNet,PointNet++),或使用图神经网络聚集来自局部邻域的信息。然而,前者无法有效地结合简单对称函数能力之外的局部上下文相关特征;后者侧重于中心点与其邻居之间的消息传递,而忽略了邻居点之间的特征相关性。此外,全局表示也提供信息,但很少用于三维对象检测任务。 本文中,作者设计了基于Transformers的点集运算模块,不仅增加了提取局部特征的表现力,还将全局信息融入到点表示中。如图2所示,一个Pointformer块主要由3部分组成:Local Transformer (LT), Local-Global Transformer (LGT) and Global Transformer (GT)。对于每个块,LT首先接收来自前面块的输出(高分辨率),并提取具有较少元素(低分辨率)的新集合的特征。然后,LGT使用多尺度交叉注意机制来整合来自两个分辨率的特征。最后,采用GT来捕获上下文感知表示。对于上采样块,我们遵循PointNet++并采用特征传播模块,因为它简单。
3.1. Background
首先回顾一下Transformer模型的一般公式。让
F
=
f
i
F = {f_i}
F=fi?和
X
=
x
i
X = {x_i}
X=xi?表示一组输入特征及其位置,其中
f
i
f_i
fi?和
x
i
x_i
xi?分别表示标记的特征和位置。然后,Transformer模块由多头自关注模块和前馈网络组成:
其中,
W
q
,
W
k
,
W
v
W_q,W_k,W_v
Wq?,Wk?,Wv?是query, key和value的投影。m是M个注意头的指标,d是特征维度。
P
E
(
?
)
PE(\cdot)
PE(?)是输入位置的位置编码函数,
F
F
N
(
?
)
FFN(\cdot)
FFN(?)代表位置前馈网络。
σ
(
?
)
σ(\cdot)
σ(?)为归一化函数,多采用SoftMax。 为了简单起见,在以下部分中,使用:
来表示基本的Transformer块(Eq.(1) ~ Eq.(4))。
3.2. Local Transformer
作者在不同分辨率上构建特征学习块来建立点云场景的分层表示。给定输入点云
P
=
x
1
,
x
2
,
.
.
.
,
x
N
P={x_1,x_2,...,x_N}
P=x1?,x2?,...,xN?。
- 首先,使用最远点采样(FPS)来选择一组点子集
x
c
1
,
x
c
2
,
.
.
.
,
x
c
N
′
{x_{c_1},x_{c_2},...,x_{c_{N'}}}
xc1??,xc2??,...,xcN′??作为质心集合。对于每个质心,使用PointNet++中的ball query在给定半径内的局部区域中生成K个点。
- 然后,围绕质心对这些特征进行分组,并将它们作为点序列送到Transformer层,如图3所示。
- 让
{
x
i
,
f
i
}
t
\{x_i,f_i\}_t
{xi?,fi?}t?表示第 t 个质心的局部区域,
x
i
∈
R
3
x_i \in \R^3
xi?∈R3和
f
i
∈
R
C
f_i \in \R^C
fi?∈RC分别表示组中第 i 个点的坐标和特征。
- 接着,共享的L-layer Transformer块被用于接收输入
{
x
i
,
f
i
}
t
\{x_i, f_i\}_t
{xi?,fi?}t?的所有局部区域,如下所示:
其中
F
=
{
f
i
∣
i
∈
N
(
x
c
t
)
}
F=\{f_i|i \in N(x_{c_t})\}
F={fi?∣i∈N(xct??)}和
X
=
{
x
i
∣
i
∈
N
(
x
c
t
)
}
X=\{x_i|i \in N(x_{c_t})\}
X={xi?∣i∈N(xct??)}分别表示质心
x
c
t
x_{c_t}
xct??局部区域中的特征和坐标集。 与现有的局部特征提取模块相比,作者所提出的Local Transformer具有几个优点。 首先,Transformer块中密集的自我关注操作大大增强了它的表现力。几种基于图学习的方法可以近似为学习参数空间精心设计的LT模块的特殊情况。例如,广义图特征学习函数可以表述为:
其中大多数模型使用求和作为聚合函数
A
\mathcal{A}
A,⊕运算选自{串联,加,内积}。因此,边缘函数
e
i
j
e_{ij}
eij?至多是
x
i
,
x
j
,
f
i
,
f
j
{x_i,x_j,f_i,f_j}
xi?,xj?,fi?,fj?的二次函数。对于一个单层Transformer块,学习模块可以用内积自关注机制来表示,如下所示:
其中
d
d
d是
f
i
,
f
j
f_i,f_j
fi?,fj?的特征维度,可以观察到边缘函数也是
x
i
,
x
j
,
f
i
,
f
j
{x_i,x_j,f_i,f_j}
xi?,xj?,fi?,fj?的二次函数。在FFNs有足够的层数时,基于图的特征学习模块与单层Transformer编码器具有相同的表达能力。谈到Pointformer,随着在块中堆叠更多的Transformer层,模块的表现力进一步增强,可以提取更好的表示。 此外,还考虑了相邻点之间的特征相关性,这在其他模型中通常被忽略。在某些情况下,相邻点可能比质心点提供更多信息。因此,通过利用所有点之间的消息传递,局部区域中的特征被同等地考虑,这使得局部特征提取模块更加有效。
3.3. Coordinate Refinement
最远点采样(FPS)被广泛应用于许多点云框架中,因为它可以在保持原始形状的同时生成相对均匀的采样点,这确保了大部分点可以被有限的质心覆盖。然而,FPS中有两个主要问题:
- 对离群点非常敏感,导致高度不稳定,尤其是在处理真实世界的点云时。
- 来自FPS的采样点是原始点云的子集,这使得在物体被部分遮挡或者没有捕获到物体的足够多的点的情况下,推断原始几何信息具有挑战性。
考虑到点大部分是在物体表面捕获的,第二个问题可能变得更加关键,因为proposal是从采样点生成的,导致proposal和ground truth之间存在天然的差距。 为了克服上述缺点,作者借助self-attention map的提出了一个点坐标细化模块。如图3所示,首先为每个注意力头取出Transformer块最后一层的self-attention map。然后,计算注意力图的平均值,并利用质心点的特定行作为权重向量: 其中M代表注意头的数量,
A
(
m
)
A^{(m)}
A(m)是第m个注意头的注意图。最后,细化的质心坐标被计算为局部区域中所有点的加权平均值: 其中
w
k
w_k
wk?是w的第k条。利用所提出的坐标细化模块,质心点自适应地向物体中心移动得更近。此外,通过利用自关注图,模块引入了很少的计算成本,并且没有额外的学习参数,使得细化过程更加有效。
3.4. Global Transformer
表示场景上下文和不同对象之间的特征相关性的全局信息在检测任务中也是有价值的。先前的工作使用PointNet++或稀疏3D卷积来提取3D点云的高级特征,随着其网络深度的增加,扩大了感受野。然而,这对远程交互建模有局限性。 作者利用Transformer模块对非局部关系建模的能力,提出了一个全局Transformer来实现信息流通整个点云。具体来说,所有的点都被收集到一个单一的组
P
\mathcal{P}
P中,并作为一个Transformer模块的输入。GT的公式总结如下: 通过在场景级别利用Transformer,可以捕获上下文感知的表示,并促进不同对象之间的消息传递。此外,全局表示对于检测点很少的对象特别有帮助。
3.5. Local-Global Transformer
Local-Global Transformer也是一个关键模块,用于组合由LT和GT模块提取的局部和全局特征。如图2所示,LGT采用多尺度交叉注意模块,并生成低分辨率质心和高分辨率点之间的关系。在形式上,应用类似于在Transformer中使用的编码器-解码器注意的交叉注意。LT的输出作为查询,GT的输出从更高的分辨率作为关键字和值。使用
L
L
L-layer Transformer模块,模块的公式如下: 其中
P
l
\mathcal{P}^l
Pl(关键点,图2中LT的输出)和
P
h
\mathcal{P}^h
Ph(图2中Pointformer块的输入)分别代表来自低分辨率和高分辨率的点云
P
\mathcal{P}
P的子样本。通过Local-Global Transformer模块,利用整体质心点通过注意机制整合全局信息,使得两者的特征学习更加有效。
3.6. Positional Encoding
位置编码是Transformer模型不可或缺的一部分,因为它是对输入序列中每个标记的位置信息进行编码的唯一机制。当针对3D点云数据调整Transformer时,位置编码起着更关键的作用,因为点云的坐标是指示局部结构的有价值的特征。与自然语言处理中使用的技术相比,我们提出了一种简单而有效的方法。对于所有Transformer模块,首先将每个输入点的坐标映射到特征维度。然后,我们减去query和key点的坐标,并使用相对位置进行编码。编码函数形式化为:
3.7. Computational Cost Reduction
由于Pointformer是一个基于Transformer块的纯注意力模型,因此计算开销非常大。将传统的Transformer应用于具有n个点的点云会消耗
O
(
n
2
)
O(n^2)
O(n2)个时间和内存,从而导致更多的训练成本。 高效Transformer的一些最新进展缓解了这个问题,其中Linformer通过原始注意力的低秩因子分解将复杂性降低到
O
(
n
)
O(n)
O(n)。假设自我注意机制是低秩的,即
n
×
n
n × n
n×n attention矩阵的秩: 比n小得多,Linformer将n维key和value投影到低维的
k
<
<
n
k << n
k<<n,并且k更接近秩A,因此,在投射的多头自我注意中,第 i 个头是: 其中
E
i
,
F
i
∈
R
k
×
n
E_i,F_i \in \R^{k×n}
Ei?,Fi?∈Rk×n是投影矩阵,这样就把复杂度从
O
(
n
2
)
O(n^2)
O(n2)降到
O
(
k
n
)
O(kn)
O(kn)。 与MLCVNet中使用的泰勒展开近似技术相比,Linformer更容易实现作者的方法。因此,采用它来代替普通Pointformer中的Transformer层。实际上,将点的数量n映射到
k
=
n
r
k = \frac{n}{r}
k=rn?,其中 r 是控制投影维数的一个因素。作者在Local Transformer, Local-Global Transformer和Global Transformer中应用此映射。通过为每个数据块设置一个适当的系数r,时间和空间消耗都将大幅提升,而性能几乎不会下降。
4. Experimental Results
作者使用Pointformer作为3个3D检测模型的主干,包括VoteNet、PointRCNN和CBGS。VoteNet是一种基于点的方法,用于室内数据集,而PointRCNN和CBGS则用于室外数据集。PointRCNN是自动驾驶检测的经典方法,CBGS是2019年在CVPR举行的nuScenes 3D检测挑战赛的冠军。为了公平比较,采用相同的检测头、每个分辨率的点数、超参数和训练配置作为baseline模型。 PointRCNN使用PointNet++作为主干,具有四个集合抽象层。类似地,作者采用相同的体系结构,同时用提出的Transformer块替换PointNet++中的集合抽象层。在KITTI测试服务器上的比较结果如表1所示。可以看到,替换后结果得到提升。 同样,作者也在nuScenes数据集上验证了Pointformer的有效性。 消融实验
5.总结
本文介绍了一种高效的三维点云特征学习主干——Pointformer,它对输入中的点具有置换不变性,并且学习局部和全局上下文感知表示。作者将Pointformer作为最先进的3D目标检测器的嵌入式替代主干,并在包括室内和室外数据集在内的多个基准测试中显示出显著的性能提升。
|