论文阅读 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)(inen)
其中:
C i = 1 ∣ M i ∣ ∑ n ∈ M i P n C_{i}=\frac{1}{|\mathcal{M}_{i}|}\sum_{ n\in\mathcal{M}_{i}}P_{n} Ci=Mi1nMiPn
M(i) 是第 i 个体素内的点索引集; μ 是一个从点索引 n 到其对应体素索引 i 的索引映射; 表示矢量连接; Ω 是置换不变算子。

2.1.2.轻量级自注意力

1.找邻居快;
2.计算减少
3.不需要使用knn
得益于体素化,,只需要查询是否是相邻体素,而不需要使用knn来找邻居,时间复杂度降为O(N),而非O(nlogn)
计算公式如下:
f i ‘ = ∑ j ∈ N ( i ) a ( f i , δ ( c i , c j ) ) ψ ( f j ) f_{i}^{`} = \sum_{j\in\mathcal{N}(i)}a(f_{i},\delta(c_{i},c_{j}))\psi(f_{j}) fi=jN(i)a(fi,δ(ci,cj))ψ(fj)
其中, N ( i ) 代表 c i 的局部邻居索引; f i 是其本身特征; 其中,\mathcal{N}(i)代表ci的局部邻居索引;f_{i}是其本身特征; 其中,N(i)代表ci的局部邻居索引;fi是其本身特征; δ ( c i , c j ) 是位置编码信息 ; ; ψ ( f j 是邻域点的特征信息。 \delta(c_{i},c_{j})是位置编码信息;;\psi(f_{j}是邻域点的特征信息。 δ(ci,cj)是位置编码信息;ψ(fj是邻域点的特征信息。

2.1.3.去体素化

由于中心点位置编码 en 具有 pn 和 ci 之间相对位置的有用信息,因此提出一种中心点感知的去体素化过程。给定一个输出体素 V′ = {(vi, f ′ i, ci)} 与输出体素特征 f′ i∈ RDout,提出的中心点感知去体素化过程如下:
O n = M L P ( f i = μ ( n ) ‘ ⊕ e n ) O_{n} = MLP(f^{`}_{i=\mu(n)}⊕e_{n}) On=MLP(fi=μ(n)en)
受到 Point Transformer中 MLP(pi − pj) 的启发,将 δ(ci, cj) 实现为 MLP(ci − cj) 空间复杂度为 O(IKD),其中 K 是相邻体素的基数。这是因为,由于 c 的连续性,可能的 (i, j) 对可能有 O(IK) 个不同的 (ci − cj) 相对位置,因此引入坐标分解方法来降低空间复杂度。给定一个查询体素 (vi, fi, ci) 和一个关键体素 (vj, fj, cj),质心 ci − cj 的相对位置可以分解为:
c i − c j = ( c i − v i ) − ( c j − v j ) + ( v i − v j ) c_{i}-c_{j} = (c_{i}-v_{i})-(c_{j}-v_{j}) + (v_{i}-v_{j}) cicj=(civi)(cjvj)+(vivj)
使用以上方法,可以将消耗内存的δ(ci, cj)分解为两种位置编码:(1)连续位置编码δabs(ci − vi),由于c的连续性,其空间复杂度为O(I D),(2 ) 空间复杂度为 O(KD) 的离散位置编码 δrel(vi − vj),故优化后的空间复杂度为 O(I D)+O(KD)。 具体图解如下:
在这里插入图片描述
由于局部自注意力使用连续位置编码 δabs(ci − vi) 和输入体素特征 fi。因此,局部自注意力管道具有质心感知特性,可以减少量化伪影。因此提出使用聚合特征 gi = fi + δabs(ci − vi) 并将其命名为质心感知体素特征。用 δrel(vi − vj) ​​计算注意力权重:
f i , = ∑ i ∈ N ( i ) a ( g i , δ r e l ( v i − v j ) ) ψ ( g j ) f^{,}_{i} =\sum_{i\in\mathcal{N}(i)}a(g_{i},\delta_{rel}(v_{i}-v_{j}))\psi(g_{j}) fi=iN(i)a(gi,δrel(vivj))ψ(gj)
现在通过定义注意力函数a,提出了新的局部自注意力层,称为LSA层:
f i , = ∑ i ∈ N ( i ) ϕ ( g i ) . δ r e l ( v i − v j ) ∣ ∣ ϕ ( g i ) ∣ ∣ ∣ ∣ δ r e l ( v i − v j ) ∣ ∣ ψ ( g j ) f^{,}_{i} =\sum_{i\in\mathcal{N}(i)}\frac{\phi(g_{i}).\delta_{rel}(v_{i}-v_{j})}{||\phi(g_{i})||||\delta_{rel}(v_{i}-v_{j})||} \psi(g_{j}) fi=iN(i)∣∣ϕ(gi)∣∣∣∣δrel(vivj)∣∣ϕ(gi).δrel(vivj)ψ(gj)

2.2网络结构

在这里插入图片描述

  • 15
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值