Point Transformer是牛津大学、港大、港中文和因特尔在2021年发表在ICCV的一篇论文
论文地址 : Point Transformer
文章目录
前言
Point Transformer这篇论文与上一篇清华大学团队发表的PCT:Point Cloud Transformer之间仅相隔一天 ,较早些时候德国也有一个团队也发表了一篇同名的论文。从这几篇论文开始可以算作Transformer正式入驻3D物体检测领域。
一、scalar attention and vector attention
scalar attention
Xi、Xj分别代表着对应点的特征向量,φ、Ψ、α可以理解为Transformer中的K(键值),Q(查询), V(值)矩阵。ρ代表归一化函数(例如Softmax),δ代表位置编码。
vector attention
对于向量注意力,β代表关系函数(例如减法),γ代表映射函数(例如MLP)。
那标量注意力和向量注意力之间的区别是什么?可以看到两种方法对于注意力权重的计算是不同的。
在标量注意力计算中,通过φ(Xi)、Ψ(Xj)相乘得到一个N X N维的注意力权重矩阵,N为输入点云中点的数量,再与 α 进行矩阵乘法运算,最后得到的输出相当于对 α 矩阵中的每一个特征向量按照注意力权重矩阵中的权重参数进行加权求和, 每一个特征向量中的通道获得的权重是相同的。标量注意力根据向量之间的相似度来分配注意力权重,从而聚焦特定部分或特征。
在向量注意力计算中,φ(Xi)、Ψ(Xj)通过关系函数得到一个N X D维的注意力权重矩阵,之后与α(Xj)进行Hadamard积运算,得到的输出相当于是对特征向量不同的通道赋予不同的权重,因此每一个特征向量的通道所占的权重是不同的。向量注意力能够通过权重矩阵更好地捕捉特征向量通道之间的关系和结构信息
二、Point Transformer Layer
这篇论文的注意力机制源于上面提到的向量注意力,不同之处在于在α中也添加了位置编码δ。其中X(i)为 xi 的局部邻域的集合,这个集合中的点是按照KNN选择的。因此只在每个数据点周围的局部邻域内应用自注意力。关于K的选取,作者在后续进行了消融实验,发现K=16时,可获得最佳性能。当领域较小时,模型没有足够的上下文信息进行预测。当邻域足够大时,每个自注意力层都提供了大量的数据点,但是其中大部分数据点可能相关性较低,这样可能会在处理中引入大量的噪声。
关于使用向量注意力作者解释说到,向量注意力具有更好的表示能力,能够更好地捕捉输入特征之间的复杂关系,可以自适应的调整单个特征通道,而不是整个特征向量。
Vector attention is more expressive since it supports adaptive modulation of individual feature channels, not just whole feature vectors.
Point transformer如Figure 2所示。输入是一组特征向量 x 以及关联的3D坐标 p。
三、Position Encoding
在Transformer一文中提到,位置编码可以通过训练得到,也可以通过使用某种计算公式得到。在Transformer中作者选择了后者。但是由于点云数据本身已经含有了三维坐标,因此可以通过简单的训练获得位置编码。
pi 和 pj 是点i和j的3D点坐标。编码函数θ是一个具有两个线性层和一个ReLU非线性层的MLP。
四、Point Transformer Block
作者构建了一个以Point Transformer层为核心的残差Point Transformer Block。具体框架如Figure 4(a)所示。
五、Network Architecture
Point Transformer的网络架构如Figure 3所示。
在整个网络结构的设计中,主要分为Point Transformer层、Transition Down下采样层和Transition Up上采样层。
Transition down
这个模块实质上是一个下采样操作,具体来说通过FPS选取若干个点,以选取的每个点为中心使用KNN算法,将该中心点的K个邻居的信息用max pooling聚合起来,从而实现下采样的操作。总的来说该模块用于减小点云的分辨率,聚合特征。具体框架如Figure 4(b)所示。
Transition up
相对应Transition down,这个模块实现上采样的操作,通过三线性插值实现上采样,通过skip connection聚合相应编码器的特征。具体框架如Figure 4(c)所示。
Output head
对于分割任务,经过下采样和上采样操作后,输出每一个点所对应的特征向量,通过MLP映射到最终的logits。
对于分类任务,经历四次下采样操作后,进行全局池化,最后输入到MLP中,得到最终的分类标签。
总结
本篇论文感觉也类似于将PointNet++中MLP换成了Self-Attention,而不是直接使用了类似Transformer的网络架构。是否可以将类似Transformer的网络架构应用于3D检测中。
本文是自己对论文的理解,如有不同见解,欢迎讨论、指正。