0%

PointTransformer

Point Transformer

  • Zhao H, Jiang L, Jia J, et al. Point transformer[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2021: 16259-16268.
  • 港中文

self-attention是天然的一个集合操作:将位置信息作为元素属性,并且视作集合处理。而另一方面点云天然就是位置属性的集合,因此self-attention直觉上很适合点云数据。之前已经有一些工作[48,21,50,17]在点云分析上使用了attention。他们在整个点云上使用全局的注意力机制,而这会带来昂贵的计算。并且他们使用了标量点积的注意力,即不同通道之间共享相同的聚合权重。

相反,Point Transformer有以下优势:

  • 局部应用注意力机制,使得拥有处理百万点数的大场景的能力。
  • 使用了vector attention,而这是实现高准确率的重要因素。
  • 阐述了position encoding的重要性,而不是像之前的工作一样忽略的位置信息。

Point Transformer

原始Transoformer操作

Self-attention操作可以分为两类:\(y_i\)为输出特征,\(\varphi,\psi,\alpha\)为逐点的线性变换操作。\(\delta\)为position encoding,\(\rho\)为标准化操作,如softmax。

  • scalar attention:计算线性变换后的特征的标量积,并且将这个标量积结果当做聚合\(\alpha\)变换特征的注意力权重。 \[ \mathbf{y}_{i}=\sum_{\mathbf{x}_{j} \in \mathcal{X}} \rho(\varphi\left(\mathbf{x}_{i}\right)^T \psi\left(\mathbf{x}_{j})+\delta\right) \alpha\left(\mathbf{x}_{j}\right) \]
  • vector attention:\(\beta\)作为一个relation函数(如减法),\(\gamma\)作为一个映射函数(如MLP),产生vector attention。这样产生的vector形式的attention能够调节独立的特征通道。 \[ \mathbf{y}_{i}=\sum_{\mathbf{x}_{j} \in \mathcal{X}} \rho\left(\gamma\left(\beta\left(\varphi\left(\mathbf{x}_{i}\right), \psi\left(\mathbf{x}_{j}\right)\right)+\delta\right)\right) \odot \alpha\left(\mathbf{x}_{j}\right) \]

Point Transformer层

基于vector self-attention,relation function使用了减法,并且在attention vector \(\gamma\) 和线性特征 \(\alpha\) 两边都加上了position encoding \(\delta\)

\[ \mathbf{y}_{i}=\sum_{\mathbf{x}_{j} \in \mathcal{X}(i)} \rho\left(\gamma\left(\varphi\left(\mathbf{x}_{i}\right)-\psi\left(\mathbf{x}_{j}\right)+\delta\right)\right) \odot\left(\alpha\left(\mathbf{x}_{j}\right)+\delta\right) \]

Point transformer layer

Position Encoding

位置编码对于self-attention十分重要,它可以学习局部结构。因此设计了一个可训练的参数化位置编码模型:

\[ \delta=\theta(p_i-p_j) \]

\(p\)为坐标,\(\theta\)为两个线性层和一个ReLU的MLP,并且位置编码模型和其他层一起进行端到端的训练。

Point Transformer Block

本文构造了一个残差Point Transformer Block,其中Point Transformer Layer是其核心。如下图所示,Block集成了self-attention层,降维和加速的线性层,一个残差连接。这个Block接受所有点的坐标,并且输出每个点的特征向量。

关键结构图

基于Block的完整网络结构

整个网络完全由point transformer,线性变换,pooling 层构建,而没有使用卷积辅助。

完整的语义分割和分类网络

主体结构:首先对点云进行五次的下采样。下采样的比例可以根据应用场景调整,例如想要轻量化加速模型什么的。这些阶段主要连续使用了两个变换模块:特征编码transition down和特征解码transition up。

Transition down:主要功能是压缩点云。通过FPS算法进行采样点云\(P_1\)生成子集\(P_2\),同时在采样前点云上\(P_1\)使用kNN聚合特征向量。总之,\(P_1\)的输入特征会以下一下处理:

  1. 线性变换
  2. batch normalization
  3. ReLU
  4. FPS采样产生\(P_2\),对\(P_2\)的每个点,寻找其在\(P_1\)的kNN,进行max pooling提取特征。

Transition up:对于预测密集型任务(语义分割),使用了一种U-net的结构:使用对称的解码器与上面的编码器相配对。解码器的主要功能是将\(P_2\)的特征映射到它的超集\(P_1\)\(P_2\)的输入经过以下处理:

  1. 线性变换
  2. batch normalization
  3. ReLU
  4. 通过三维插值映射特征到超集\(P_1\)。其中插值特征的生成不仅依赖于前一个解码器的输出特征,还依赖于匹配的编码器特征。

Output head:对于语义分割,最终生成了每个点的特征向量。使用一个MLP层来将特征最终映射到logits。对于分类,使用全局平均池化来获得整个点集的特征,最终在通过一个MLP来映射到logits。

参考文献

[17] Juho Lee, Yoonho Lee, Jungtaek Kim, Adam Kosiorek, Seungjin Choi, and Yee Whye Teh. Set transformer: A framework for attention-based permutation-invariant neural networks. In ICML, 2019.

[21] Xinhai Liu, Zhizhong Han, Yu-Shen Liu, and Matthias Zwicker. Point2sequence: Learning the shape representation of 3d point clouds with an attention-based sequence to sequence network. In AAAI, 2019.

[48] Saining Xie, Sainan Liu, Zeyu Chen, and Zhuowen Tu. Attentional shapecontextnet for point cloud recognition. In CVPR, 2018.

[50] Jiancheng Yang, Qiang Zhang, Bingbing Ni, Linguo Li, Jinxian Liu, Mengdie Zhou, and Qi Tian. Modeling point clouds with self-attention and gumbel subset sampling. In CVPR, 2019.