论文阅读 Point Transformer & Fast Point Transformer

Point Transformer与Fast Point Transformer解读

由于Transformer在NLP以及2D图像以及视频领域取得的成功,有学者便想着将其应用于3D点云中,本文将先后介绍Point Transformer以及Fast Point Transformer两篇文章。
后续文中将两者分别简称为PTFPT

1.Point Transformer

1.1. 文章的创新点

  • 为处理点云数据设计了Point Transformer layer

  • 构建Point Transformer 网络,用于点云分类和密集预测。

  • 做了相关对比相关实验

1.2. PT结构

之前也有在点云数据中引入注意力的县里,但是全局引入,因此造成了大量计算。PT在应用局部自注意力,使得注意力可以扩展到具有数百万个点的大型场景,并且使用矢量注意力,PT证明这对于实现高精度非常重要。与忽略位置信息的先前方法相比,它证明了适当的位置编码在大规模点云理解中的重要性。

1.2.1. 注意力机制

  • 标量注意力
    标量注意力层计算由 φ 和 ψ 变换的特征之间的标量积,并将输出用作聚合由 α 变换的特征的注意力权重。
    在这里插入图片描述
    其中,X为一组特征向量;yi是输出特征;φ、ψ 和 α 是逐点特征变换(例如线性投影或MLP);δ是位置编码函数;ρ是归一化函数(例如softmax);

  • 矢量注意力
    在这里插入图片描述
    其中, β 是关系函数(例如减法);γ 是用于生成用于特征聚合的注意向量的点映射函数(例如 MLP)。其余符号均与标量注意力一致。

  • PT的结构
    采用了用于图像分析的自注意力网络的做法,在每个数据点周围的局部邻域内局部应用自注意力。
    在这里插入图片描述
    其中,X(i)是点i的邻域点集;映射函数 γ 是一个具有两个线性层和一个 ReLU 非线性层的 MLP。
    在这里插入图片描述

1.2.2. 位置编码

pi、pj 分别为i、j两点的坐标信息;θ 是有两个线性层和一个ReLu的 MLP。
位置信息 does matter!!!
在这里插入图片描述

1.2.3. 细节结构

PT网络由多个下采样、上采样以及point transformer block组成,它们的结构信息如下图
在这里插入图片描述
point transformer block以及下采样都比较容易理解,上采样通俗讲是为了增加点的数目,使得网络适用于密集点处理任务(比如分割)。
其中,P1是上一层的输出点集,P2是对应下采样的输入点集。它主要是将下采样的输入点集P2的特征映射到超集P1上。首先将上一层的输出经线性层、BN以及ReLU处理,再通过三线性插值将特征映射到更高分辨率的点集。

1.2.4. 整体网络结构

上面是用于分割任务的网络结构图,下面是用于分类任务的网络结构图。各阶段的降采样率分别为 [1,4,4,4,4],因此各阶段产生的点集基数分别为 [N,N/4,N/16,N/64,N/256],其中 N 为输入点的数量。

  • 分割任务: 分割中类似有一个Encoder-Decoder 的结构,前面五层通过前面定义的下采样对点云数据进行编码,后面通过跳连接以及上采样对其进行解码处理。最终解码器阶段为输入点集中的每个点生成特征向量。应用MLP将此功能映射到最终logits。

  • 分类任务: 分类中只有一个类似Encoder的部分,并没有后续的Decoder 结构。最后逐点特征执行全局平均池,以获得整个点集的全局特征向量。
    在这里插入图片描述

1.3. 实验部分

基于三个数据集:ModelNet40(用于分类任务)、S3DIS(用于语义分割)、ShapeNetPart(用于部件分割)。

1.3.1. 实验细节

在PyTorch中实现了point transformer。使用SGD优化器,momentum和weight decay分别设置为0.9和0.0001。对于S3DIS上的语义分割,我们训练40K次,初始学习率为0.5,在24K和32K下降了10倍。对于ModelNet40上的3D形状分类和ShapeNetPart上的3D对象部分分割,训练了200轮。初始学习率被设置为0.05,并且在时期120和160处下降了10倍。

1.3.2.实验结果

  • S3DIS上的语义分割结果

    只将区域5作为测试集的性能指标:
    在这里插入图片描述
    6折交叉验证下的表现
    在这里插入图片描述

  • ModelNet40上的分类结果
    Point Transformer 在 ModelNet40 上的总体准确率为 93.7%,在当时创出新高。
    在这里插入图片描述

  • ShapeNetPart上的部件分割结果
    在这里插入图片描述

1.4. 额外参数研究

  • 邻域大小: 经研究,K最好的大小为16,当邻域较小(k = 4 或 k = 8)时,模型可能没有足够的背景来进行预测;当邻域较大(k = 32 或 k = 64)时,每个自我关注层都会获得大量数据点,其中许多数据点可能距离较远,相关性较低,可能会在处理过程中引入过多噪音,从而降低模型的准确性。

  • 归一化函数: 对PT结构注意力中的归一化函数 ρ 进行了消融研究。就 mIoU/mAcc/OA 而言,在 S3DIS Area5 上未使用 softmax 正则化的性能分别为 66.5%/72.8%/89.3%。这远远低于采用软最大正则化的性能(70.4%/76.5%/90.8%)。这表明在这种情况下,正则化是必不可少的。

  • 位置编码: 与没有使用位置编码相比,绝对编码要好一些,但是相对编码更佳。而且丢掉相对位置编码中attention、feature中的任何一个分支的,都会导致性能下降。

  • 注意力: 跟两种没有注意力的baseline相比,scalar attention要好些,但是vector attention更佳。

2.Fast Point Transformer

特点:快(比Point Transformer 快129倍)

2.1.实现方法

FPT的结构很简单分为三个步骤:

  • 中心点感知体素化: 假设 Pin = {(pn, in)}, n=[1,N] 为输入点云,其中 pn 为第 n 个点坐标,in 为 pn 的任何原始输入特征。为了提高计算效率,将 Pin 体素化为 V = {(vi, fi, ci)}, i=[1,I] 元组集合。每个元组包含第 i 个体素坐标 vi体素特征 fi体素中心点坐标 ci。并引入一种中心点感知体素化过程。
  • 轻量级自注意力: 轻量级自注意力(LSA)块采用 V = {(vi, fi, ci)}, i=[1,I] 并使用局部自注意力将特征fi更新为输出特征 f ′ i。在此过程中,查询邻近体素可以通过单个查询复杂度为 O(1) 的体素散列来完成。
  • 去体素化: 注意力区块的输出体素 V′ = {(vi, f ′ i, ci)}, i=[1,I] 被去体素化为输出点云 Pout = {(pn, on)}, n=[1,N] ,其中 on 为输出点特征。使用可学习的位置嵌入 en 来为连续三维点正确分配体素特征,以获得准确的点级特征。

2.1.1.中心点感知体素化

e n = δ e n c ( P n − C i = μ ( n ) ) e_{n} = \delta_{enc}(P_{n}-C_{i=\mu(n)}) en=δenc(PnCi=μ(n))

f i = Ω n ∈ M ( i ) ( i n ⊕ e n ) f_{i} = \Omega_{n\in\mathcal{M}(i)}(i_{n}⊕e_{n}) fi=ΩnM(i)(in

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值