0%

PCT

PCT: Point cloud transformer

  • Guo M H, Cai J X, Liu Z N, et al. PCT: Point cloud transformer[J]. Computational Visual Media, 2021, 7(2): 187-199.
  • 清华
  • CVMJ

提出了基于Transformer的PCT网络。Transformer在NLP和图像处理取得了巨大成功,其内在的置换不变性也十分适合点云学习。为了更好的捕捉点云局部信息,使用了最远点采样和最近邻搜索来加强输入的embedding处理。实验证明PCT达到了分类分割和法向估计的SOTA。

由于点云和自然语言是完全不同的数据类型,因此PCT对Transformer作出了几项调整:

  • Coordinate-based input embedding:Transformer里的positional encoding 是为了区分不同位置的同一个词。然而点云没有位置顺序关系,因此PCT中将 positional encoding 和 input embedding 结合了起来,基于坐标进行编码。
  • Optimized offset-attention module:是原始 self-attention 的升级模块。它把原来的attention feature换成了self-attention的输入和attention feature之间的offset。同一个物体在不同的变换下的绝对坐标完全不一样,因此相对坐标更鲁棒。
  • Neighbor embedding module: 注意力机制有效捕捉全局特征,但可能忽视局部几何信息,而这在点云中很重要。句子中的每个单独的词都有基本的语义信息,但是点云中孤立的点不存在语义信息。因此使用了一个neighbor embedding 策略来进行改良,让注意力机制着重于分析点局部邻域的信息,而不是孤立的点的信息。

Transformer基础

Transformer是一个解码编码结构,包含了三个主要模块:input embedding、positional encoding、self-attention。Self-attention是核心模块,其通过基于全局上下文产生细粒度的注意力特征信息。Transformer所有的操作都是并行的并且顺序无关的。

  1. Self-attention 将input embedding 和 positional encoding之和作为输入,使用线性层对每个词计算 query,key,value
  2. 通过任意两个词的query 和 key 向量的点积,计算两者之间的注意力权重
  3. 定义注意力特征:所有value向量以注意力权重的加权和。因此输出的每个词的注意力特征与所有的输入有关,因此能够学习全局上下文信息。

PCT: Point Cloud Transformer

PCT架构:由input coordinates的embedding开始,通过attention学习特征表示,再通过线性层进行特征输出。LBRD为Linear,Batch Normalization,ReLU,Dropout

PCT目标是将输入的点编码到一个高维特征空间,以便于体现点之间的语义关系。编码上的原则基本与原始Transformer保持一致,除了忽略掉了positional embedding,因为input coordinates已经包含了这一部分。

朴素PCT

修改原生Transformer最简单的办法就是把点云看做句子,把点看做单词。

  1. 使用一种忽视了点间作用的朴素的point embedding,即致力于在嵌入空间中将语义接近的点放得更近。
  2. 使用原生的Self-attention机制计算词元的语义相关性。由于Query,Key,Value都是由共享的线性变换层计算得到,因此它们都是顺序无关。Softmax和加权求和同样也是顺序无关。因此,整个self-attention处理是顺序无关,以至于很适合处理无序的点云数据。最终Self-attention层计算如下: \[ F_{out}=SA(F_{in})=LBR(F_{sa})+F_{in} \]
Offset-Attention结构:通过一个转换开关可以选择Self-Attention或是Offset-Attention的normalization方式。虚线代表的是Self-Attention。

Offset-Attention

图卷积网络中体现了使用拉普拉斯矩阵 \(L=D-E\) 来代替原有邻接矩阵E的优势。类似的,在PCT中使用offset-attention(OA)来代替原始的self-attention(SA)来获得更好的效果:

\[ F_{out}=OA(F_{in})=LBR(F_{in}-F_{sa})+F_{in} \]

normalization方式也有所不同。如上图开关处所示,PCT中对第一维使用了softmax,对第二维使用了1范数来规范化attention map。相比于传统的Transformer更强化了注意力权重,并且减少了噪声影响。

带有上述Offset-Attention和input embedding的网络被称为 simple PCT(SPCT)

增强局部特征 Neighbor embedding

PCT通过point embedding 可以有效的抽取全局特征,但是却忽略了同样重要的局部信息。借鉴PointNet++和DGCNN,PCT设计了一个neighbor embedding来增强局部学习能力。

左:Neighbor embedding。中:Sampling and grouping。右上:采样示例。右下:KNN聚类示例

如图所示,neighbor embedding包含两个LBR和Sampling and grouping(SG)。LBR层用于基础的point embedding,SG层用于采样点云,并且聚合采样点kNN的邻域特征。思路来源于EdgeConv[26]。

  1. 先通过FPS进行下采样,然后对于每一个采样点,找到其在原始点云中的kNN邻域,
  2. 计算每个采样点的邻域特征:即计算邻域相对于中心点的差分特征,然后拼接输出: \[ \begin{aligned} \Delta \boldsymbol{F}(p) &=\text { concat }_{q \in \operatorname{knn}(p, \mathcal{P})}(\boldsymbol{F}(q)-\boldsymbol{F}(p)) \\ \left.\widetilde{\boldsymbol{F}}_{(} p\right) &=\operatorname{concat}(\Delta \boldsymbol{F}(p), \operatorname{RP}(\boldsymbol{F}(p), k)) \\ \boldsymbol{F}_{s}(p) &=\operatorname{MP}(\operatorname{LBR}(\operatorname{LBR}(\widetilde{\boldsymbol{F}}(p)))) \end{aligned} \] MP为Max Pooling,RP为repeating vector \(x\) \(k\) times。

分类和分割任务的区别

分类只需要对所有点给出一个全局的类别,所以处理时SG层将点云进行采样压缩了。

分割和法向估计任务中,由于要给每一个点一个输出信息(部件标签或者法向信息),因此SG层只用来抽取局部特征,而不对原始点云进行压缩。

分割效果图

参考文献

[6] Vaswani, A.; Shazeer, N.; Parmar, N.; Uszkoreit, J.; Jones, L.; Gomez, A. N.; Kaiser, L.; Polosukhin, I. Attention is all you need. In: Proceedings of the 31st International Conference on Neural Information Processing, 6000–6010, 2017.

[26] Wang, Y.; Sun, Y.; Liu, Z.; Sarma, S. E.; Bronstein, M. M.; Solomon, J. M. Dynamic graph CNN for learning on point clouds. ACM Transactions on Graphics Vol. 38, No. 5, Article No. 146, 2019.