当前位置:   article > 正文

【文献翻译】PCT:Point Cloud Transformer_点云pct

点云pct

摘要

不规则的区域和无序性给设计用于点云处理的深度神经网络带来了挑战。本文提出了一种用于点云学习的新型框架——点云转换器(PCT)。PCT基于Transformer,在自然语言处理方面取得了巨大的成功,在图像处理方面显示出巨大的潜力。它对于处理一系列点具有固有的排列不变性,这使得它非常适合于点云学习。为了更好地捕捉点云中的局部上下文,我们通过支持最远点采样和最近邻搜索来增强输入嵌入。大量的实验表明,PCT在形状分类、部分分割、语义分割和正常估计任务上达到了最先进的性能。

1. 引言

直接从点云中提取语义是机器人、自动驾驶、增强现实等应用的迫切需求。与二维图像不同,点云是无序的、无结构的,这使得设计处理它们的神经网络具有挑战性。
Qi等人开创了PointNet在点云上的特征学习,使用多层感知器(MLPs)、最大池化和刚性转换来确保在排列和旋转下的不变性。受卷积神经网络(convolutional neural networks, CNNs)在图像处理领域取得的强大进展的启发,最近的许多研究都考虑定义卷积算子来聚合点云的局部特征。这些方法要么对输入点序列进行重新排序,要么对点云进行体素化,以获得用于卷积的规范域。近年来,自然语言处理中的主流框架Transformer被应用于图像视觉任务,其性能优于流行的卷积神经网络。
Transformer是一个解码器-编码器结构,它包含三个主要模块,分别用于输入(单词)嵌入、位置(顺序)编码和自我注意。自我注意模块是该模块的核心组件,它基于全局上下文对输入特征生成精细化的注意特征。首先,自我注意将输入嵌入和位置编码的总和作为输入,通过训练好的线性层,为每个单词计算query、key和value三个向量。然后,将任意两个词的查询与关键向量进行匹配(点生成),得到两个词之间的注意权值。最后,将注意力特征定义为具有注意力权重的所有值向量的加权和。显然,每个单词的输出注意特征都与所有的输入特征相关,使其能够学习全局上下文。Transformer的所有操作都是并行的、顺序无关的。从理论上讲,它可以取代卷积神经网络中的卷积运算,具有较好的通用性。
受Transformer在视觉和NLP任务上的成功启发,我们基于传统Transformer的原理,提出了一种用于点云学习的新颖框架PCT。PCT的关键思想是利用Transformer固有的阶不变特性,避免了需要定义点云数据的阶数,并通过注意机制进行特征学习。如图1所示,注意权值分布与部分语义高度相关,不会随着空间距离的变化出现严重衰减的情况。
点云和自然语言是完全不同的数据类型,因此我们的PCT框架必须为此进行一些调整。这些包括:

  • 基于坐标的输入嵌入模块。在Transformer中,位置编码模块用于表示自然语言中的词序。这可以区分同一个词在不同位置的位置,反映词与词之间的位置关系。然而,点云并没有固定的顺序。在我们的PCT框架中,我们将原始位置编码和输入嵌入合并到一个基于坐标的输入嵌入模块中。它可以生成可区分的特征,因为每个点都有表示其空间位置的唯一坐标。
  • 优化的offset-attention模块。我们提出的偏移注意模块方法是对原有的自我注意的有效升级。它的工作原理是用自我注意模块输入与注意特征之间的偏移量来代替注意特征。这有两个好处。首先,通过刚性变换,同一物体的绝对坐标可以完全不同。因此,相对坐标通常更可靠。其次,拉普拉斯矩阵(度矩阵和邻接矩阵之间的偏移量)在图卷积学习中被证明是非常有效的。从这个角度,我们把点云看作一个图,用“float”邻接矩阵作为注意图。此外,在我们的工作中的注意力地图将被缩放为所有行的和为1。所以度矩阵可以理解为单位矩阵。因此,偏移-注意优化过程可以近似理解为一个拉普拉斯过程,将在3.3节详细讨论。此外,我们还做了足够的对比实验,在第4节介绍了偏移注意和自我注意,以证明其有效性。
  • 邻居嵌入模块。显然,句子中的每个词都包含着基本的语义信息。然而,这些点的独立输入坐标与语义一致性的关系很弱。注意机制可以有效地捕获全局特征,但可能会忽略局部几何信息,这也是点云学习的关键。为了解决这一问题,我们使用邻域嵌入策略来改进点嵌入。它还通过考虑包含语义信息的局部点组之间的注意而不是单个点之间的注意来辅助注意模块。

通过上述调整,PCT更加适合于点云特征学习,并在形状分类、部分分割和正常估计任务上取得了最先进的性能。本文的主要贡献总结如下:

  1. 我们提出了一种新的基于 Transformer 的点云学习框架PCT,该框架适用于非结构化、无序和不规则域的点云数据。
  2. 我们提出了带有隐式拉普拉斯算子和归一化优化的偏移注意算法,该算法具有置换不变性,与Transformer中原有的自注意模块相比更适合于点云学习。
  3. 大量的实验表明,带有显式局部上下文增强的PCT在形状分类、部分分割和正常估计任务中取得了最先进的性能。

2. 用于点云的Transformer

在本节中,我们首先展示了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} PRN×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} FeRN×de。再将各注意层的注意输出通过特征维串接起来,形成 PCT 输出的逐点 d o d_o do 维特征 F o ∈ R N × d o F_o∈R^{N \times d_o} FoRN×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(Fi1),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} CRNc。点云的类标签确定为得分最大的类。

2.1. 原始PCT

修改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} FeRN×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 QKV 分别为输入特征线性变换产生的查询矩阵、键矩阵和值矩阵,其中由输入特征的线性变换产生的 F i n ∈ R N × d e F_in \in R^{N \times d_e} FinRN×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(WqWkWv) 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,KRN×da,VRN×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,WkRde×da,WvRde×de 其中 W q 、 W k 、 W v W_q、W_k、W_v WqWkWv 为共享的可学习的线性变换, 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=QKT 这些权重被归一化后得到 A = ( α ) i , j A=(\alpha)_{i,j} A=(α)i,j

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/328290
推荐阅读
相关标签
  

闽ICP备14008679号