PCT: Point Cloud Transformer

未匹配的标注

引言

何为点云?
点云是某个坐标系下的点的数据集。点包含了丰富的信息,包括三维坐标X,Y,(Z、颜色、分类值、强度值、时间等等)。
与二维图像不同,点云是无序和无结构的,这使得设计神经网络来处理它们具有挑战性。

PCT: Point Cloud Transformer
PCT生成的部分分割。
前三列:不同查询点的点向注意图(*表示),黄色到蓝色表示注意权重增加。
最后一列:分割结果

Transformer

Transformer是一种解码器结构,它包含三个主要模块,用于输入(字)嵌入、位置(顺序)编码和自我注意。自注意模块是核心组件,基于全局上下文为其输入特征生成精细化的注意力特征。

首先,self-attention将输入的嵌入和位置编码的总和作为输入,通过训练好的线性层计算每个单词的查询、键和值三个向量。

然后,通过对任意两个词的查询与键向量进行匹配(点生成),得到任意两个词之间的注意权值。最后,将注意特征定义为所有值向量与注意权值的加权和。

最后,每个单词的输出注意特征都与所有的输入特征相关,这使得它能够学习全局上下文。

Transformer的所有操作都是并行的且顺序无关的。受Transformer在视觉和NLP任务上的成功启发,在传统Transformer原理的基础上提出了一种新的点云学习框架PCT。PCT的核心思想是利用Transformer固有的排列不变性,避免需要定义点云数据的顺序,并通过注意力机制进行特征学习。

排列不变性:指输入的顺序改变不会影响输出的值。

点云和自然语言是不同类型的数据,因此PCT框架必须对此做一些调整。包括:

  • 基于坐标的输入嵌入模块:在Transformer中,采用位置编码模块来表示自然语言中的语序。这样可以区分同一词在不同位置上的位置,反映词之间的位置关系。然而,点云并没有固定的顺序。在PCT中,我们将位置编码和输入嵌入到一个基于坐标的输入嵌入模块中。由于每个点都有代表其空间位置的独特坐标,因此它可以产生可区分的特征。

  • 优化offset-attention模块:提出的偏移注意模块方法是对原有的自我注意的有效升级。工作原理是用自我注意模块的输入与注意特征之间的偏移量来代替注意特征。注意图将以每一行的总和为1进行缩放,所以度矩阵可以被理解为单位矩阵。因此, offset-attention优化过程可以近似理解为一个拉普拉斯过程。

  • 邻居嵌入模块:句子中的每个单词都包含着基本的语义信息。然而这些点的独立输入坐标与语义内容之间的相关性很弱。可能忽略了点云学习中必不可少的局部几何信息。为了解决这一问题,我们采用了邻域嵌入策略来改进点嵌入。

本文的主要贡献如下:

  1. 我们提出了一种新的基于Transformer的点云学习框架PCT,该框架常适合于具有不规则域的非结构化、无序点云数据。

  2. 相对于Transformer中原有的自注意模块,我们提出了采用隐式拉普拉斯算子和归一化改进的self-attention。

  3. 大量的实验表明,PCT在形状分类、零件分割和常规估计任务中取得了最先进的性能。

PCT

PCT: Point Cloud Transformer
PCT架构:
编码器主要包括一个输入嵌入模块和四个堆叠的注意力模块。
解码器主要由多个线性层组成。每个模块上面的数字表示它的输出通道。
MA-Pool连接Max-Pool和Average-Pool。
LBR结合了Linear, BatchNorm和ReLU层。
LBRD是指LBR后面有一个Dropout层。

PCT目的是将输入点转换(编码)为一个新的高维特征空间,该空间可以表征点之间的语义关联性,作为各种点云处理任务的基础。

总的来说,PCT编码器的设计理念几乎与原始转换器相同,除了位置嵌入被丢弃,因为点的坐标已经包含了这些信息。
PCT通过特征维度将每个注意层的注意输出连接起来,然后是一个线性变换:

PCT: Point Cloud Transformer
ATi代表第i个注意层
Wo为线性层的权值。
Fo 多维特征表示
全局特征向量F表示点云,然后连接两个池运算符:一个最大池化运算(MP)和一个平均池化运算(AP) 。

分类

PCT: Point Cloud Transformer
将点云P分类为Nc 对象类别,我们将全局特征F输入分类解码器,由两个级联前馈神经网络LBR,每一个都有dropout概率为0.5,最后由一个线性层来预测最终的分类分数。

分割

将点云分割成n零部件(如桌面、桌腿),我们必须为每个点预测一个零件标签。
首先连接全局特征F和Fo中的点向特征。
为了学习各种对象的通用模型,我们还将一个one-hot对象类别向量编码为64维特征,并与全局特征连接。
分割网络的架构与分类网络的架构基本相同,不同的是只在第一个LBR上执行dropout,我们预测逐点分割分数,将一个点的零件标签也确定为得分最大的零件标签。

法向量估计

对于法向量估计的任务,我们使用与分割中相同的架构,设置NS= 3,不进行对象类别编码,并将输出的逐点得分作为预测法向量。

简单的PCT

修改用于点云使用的Transformer的最简单方法是将整个点云视为一个句子,将每个点视为一个单词。我们采用self-attention (SA) ,一种计算数据序列中不同项目之间语义相似性的机制。

PCT: Point Cloud Transformer
设Q、K、V分别为查询矩阵、键矩阵和值矩阵,由输入特征的线性变换产生。Wq​,Wk​,Wv​ 表示共享可学习线性转换。
首先,我们可以利用查询矩阵和键矩阵,通过矩阵点积来计算注意力权重:

PCT: Point Cloud Transformer

PCT: Point Cloud Transformer
输出特征是注意权值和值向量进行加权和:

PCT: Point Cloud Transformer

Offset-Attention

图卷积网络显示了使用拉普拉斯矩阵L = D−E代替邻接矩阵E,其中D是对角度矩阵。

用偏移注意(offset-attention, OA)模块替换原有的自我注意(self-attention, SA)模块来增强PCT,可以获得更好的网络性能。

offset-attention层通过元素相减来计算self-attention(SA)特征和输入特征之间的偏移量(差)。

PCT: Point Cloud Transformer
类似于拉普拉斯矩阵:

PCT: Point Cloud Transformer
I单位矩阵,等价于拉普拉斯矩阵的对角度矩阵D,A是等价于邻接矩阵E的注意矩阵

PCT: Point Cloud Transformer
在第一个维度上使用softmax运算符,在第二个维度上使用L1正则化。
传统的方式是第一个维度缩放,然后第二个维度进行softmax。

邻居嵌入

PCT: Point Cloud Transformer
PCT能有效的全局特征提取。然而忽略了点云学习中必不可少的局部邻域信息。借鉴PointNet++和DGCNN的思想,设计了一种局部邻居聚合策略,即邻居嵌入。邻居嵌入模块包括两个LBR层和两个SG (sampling and grouping)层, SG层利用欧几里得距离对每个点进行k-NN搜索,从本地邻居中聚合特征。

SG层以一个点云P为输入,该点云有N个点和F个相应的特征,计算相应的聚合特征Fs:
PCT: Point Cloud Transformer
F(p)是点p的输入特征
Fs(p)是采样点p的输出特征
MP是最大池运算
RP(x, k)是一个向量x重复k次形成一个矩阵的运算。
步骤如下:

PCT: Point Cloud Transformer

Experiments

在两个公共数据集,ModelNet40和ShapeNet,评估性能的naive PCT (NPCT,点嵌入和self-attention),简单的PCT (SPCT,点嵌入和offset-attention)和全PCT(与邻居嵌入和offset-attention)。每种情况下的训练均采用相同的软交叉熵损失函数和动量为0.9的随机梯度下降(SGD)优化器。

ModelNet40数据集上的分类:

PCT: Point Cloud Transformer

ModelNet40数据集的法线估计:
表面法线估计是确定每个点的法线方向。表面法线估算在渲染等方面有广泛的应用。这项任务是具有挑战性的,因为它需要完全理解形状的方法来实现密集回归。

PCT: Point Cloud Transformer

ShapeNet数据集的分割任务:

pIoU:部分平均交并比

PCT: Point Cloud Transformer

资源消耗:

PCT: Point Cloud Transformer

其他:

PCT: Point Cloud Transformer

结论

我们提出了一种排列不变点云Transformer,,它适用于不规则域的非结构化点云的学习。

实验表明,PCT具有良好的语义特征学习能力,在形状分类、零件分割和法线估计等任务中均取得了较好的效果。

在未来,我们将在更大的数据集上训练它,并研究它相对于其他流行框架的优缺点。

从点云进行3D目标检测: 3D Object Detection with Pointformer (arxiv.org)

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 查看所有版本


暂无话题~