Point Transformer
自注意力网络彻底改变了自然语言处理,并在图像分类和目标检测等图像分析任务中取得了令人印象深刻的进展。受这一成功的启发,作者研究了自注意力网络在3D点云数据处理中的应用。作者为点云设计了自注意层,并使用这些层来构建用于语义场景分割、对象部分分割和对象分类等任务的自关注网络。我们的点变压器设计改进了以前跨域和任务的工作。例如,在用于大规模语义场景分割的具有挑战性的S3DIS数据集上,Point Transformer在区域5上获得了70.4%的mIoU,比最强的先验模型表现了3.3个百分点优势,并首次超过了70%的mIoU阈值。
此前三维点云处理方法:基于投影的、基于体素的和基于点的网络。Transformer对数据的排列和数量是不敏感的,这和点云数据所用有的特征是匹配的。作者提出,Transformer模型特别适合于点云处理,因为自注意力是Transformer的核心,本质上是一个集合算子:它对输入元素具有顺序不变性和数量不变性,因此,将自注意力机制用于点云是自然而然的,因为点云本质上是嵌入在3D空间的集合。
为了向前迈出一步,在场景分割中采用了U-net结构,包含5个编码器和5个解码器,编码器通过Transition Down + Point Transformer Block来降采样和提取特征,解码器通过Transition Up+ Point Transformer Block来上采样映射特征。
作者使用点集作为Self-attention模块计算的最小单位,针对点集中的第i个点,其自注意力运算结果为:
yi=xj∈X(i)∑ρ(γ(φ(xi)−ψ(xj)+δ))⊙(α(xj)+δ)
这里有几个小的设定:
(1)使用减法计算两个点特征向量之间的相关性
(2)在权重和值的部分都加上了一个位置偏移
δ
(3)点集
X(i)
可以使用图1将该过程表出
图1 点云中自注意力计算过程
位置偏移量的计算公式如下:
δ=θ(pi−pj)
其中 θ 是一个包含两个线性层和一个ReLU层的MLP。背后逻辑为,每个点的坐标本身就是良好的位置编码信息来源。使用一个MLP可以实现端到端可训练的位置信息编码。
如图2所示:
图2 Point Transformer Block结构图
这个Block主要就是由前面的Point Transformer Layer和两个线性层,外加一个残差连接组成的。
用P1表示该模块的输入点集,P2为输出点集。在P1中执行最远点采样(FPS),采样出所要的数量好良好分布的子点集P2,P2⊂p1。为了将特征向量从P1集中到P2上,在P1中采用KNN算法(k始终取值为16)找出P2点集中每个点的K个邻居,对这k个邻居的每个点的特征向量经过一个线性变换,再经过batch normalization和RELU,再经过最大池化将特征汇集到他们的P2点集中对应的中心点上。如下图所示(图4b):
图4 Transition down Block结构图
对于语义分割这类密集的预测任务,我们采用U-Net那样的设计,编码器和解码器对称相连。
解码器中的过渡模块是transition up,它的主要功能是将特征从子集P2映射回超集P1当中。为此,每个输入特征先经过一个线性层,再batch normalization,再ReLU,最后将特征通过三线性插值的方式映射到高分辨率上的P1点集上。这些由前一个解码器阶段插值来的特征对与之对应的编码器阶段的特征进行了总结(通过一个跳连接)。
图3 Transition up Block结构图
论文地址:
arxiv.org/abs/2012.09164
代码复现:
https://github.com/qq456cvb/Point-Transformersgithub.com/qq456cvb/Point-Transformers