【论文精读(十八)】SPoTr:拒绝盲目采样,自定位探针(Self-Positioning)如何“以点带面”?(CVPR 2023)

Park, J., Lee, S., Kim, S., Xiong, Y., & Kim, H. J. (2023). Self-positioning Point-based Transformer for Point Cloud Understanding. CVPR.

博主导读

在点云 Transformer 的江湖里,各大门派(PointNet++, PTv1, PTv2)似乎都遵守着一个不成文的规定:"远亲不如近邻" 。为了节省算力,大家纷纷画地为牢,只在 k-NN球查询 (Ball Query) 划定的局部圈子里折腾。

但这种"几何邻域"真的靠谱吗?一只细长的椅子腿,它的几何邻居可能是地板,但它真正的"语义亲戚"其实是远在另一头的椅子背。单纯的局部注意力,注定是"只见树木,不见森林"。

SPoTr (Self-Positioning Transformer) 站出来掀了桌子:谁说采样一定要用 FPS?谁说看全局一定要算 O ( N 2 ) O(N^2) O(N2)? 它提出了一种类似于 "可变形卷积 (Deformable Conv)"自定位机制 ------派出少量智能"探针",自动飞到物体最关键的部位(比如机翼尖、桌角),用极小的代价,把全局信息"吸"过来。

今天我们就来拆解这篇 CVPR 2023 的佳作,看它如何用"主动出击"取代"被动采样"。
论文:Self-Positioning Point-Based Transformer


1. 痛点:几何与语义的"错位"

在 SPoTr 出现之前,处理长距离依赖(全局信息)主要有两种笨办法:

  1. 硬抗派 (Global Attention) :直接对所有点算 Attention。
    • 后果 :显存爆炸,计算量 O ( N 2 ) O(N^2) O(N2),根本跑不动大场景。
  2. 采样派 (Downsampling + Attention) :先用 FPS (最远点采样) 选几个点,再算 Attention。
    • 后果:FPS 是**"盲目"**的。它只管几何上分得散,不管语义上重不重要。它很可能选了一堆地板上的点,却漏掉了关键的物体边缘。

SPoTr 的灵魂拷问

如果网络能像人眼一样,主动去关注那些"有意思"的地方(Self-Positioning),而不是被死板的几何规则(k-NN/FPS)束缚,是不是就能用很少的点,看清整个世界?


2. 核心大招:自定位点注意力 (SPA) 🔥

SPoTr 的核心模块 SPA (Self-Positioning Point-based Attention) 不再是被动地接收输入,而是变成了一个**"三步走"的主动侦察过程**:

图解逻辑

左边是生成探针,中间是探针吸取信息(解耦注意力),右边是探针把信息发回给所有点。

2.1 第一步:探针去哪儿?(Positioning) 🎯

传统网络不知道哪里重要,但 SPoTr 引入了一组可学习的隐向量 (Latent Vector z s z_s zs) 。每一个 z s z_s zs 就像一个带着特定任务的"特工",比如"特工 A 负责找尖锐的角","特工 B 负责找平坦的面"。

δ s = ∑ i SoftMax ( f i ⊤ z s ) x i \delta_s = \sum_{i} \text{SoftMax}(f_i^\top z_s) x_i δs=i∑SoftMax(fi⊤zs)xi

  • 原理 :网络计算输入特征 f i f_i fi 和特工意图 z s z_s zs 的相似度,以此为权重,算出新的重心 δ s \delta_s δs。
  • 效果:这些探针会自动**"瞬移"**到点云中语义最丰富的地方。

2.2 第二步:怎么收集情报?(Disentangled Aggregation) 🧠

探针到位后,需要收集周围的特征。但这里有个坑:离得近 ≠ \neq = 是一伙的

比如探针落在了"桌腿"和"地板"的交界处,如果只按距离聚合,就会把地板特征混进来。

作者提出了 解耦注意力 (Disentangled Attention),这也是论文的一大亮点:

ψ s = ∑ i g ( δ s , x i ) ⏟ 空间核 ⋅ h ( z s , f i ) ⏟ 语义核 ⋅ f i \psi_s = \sum_{i} \underbrace{g(\delta_s, x_i)}{\text{空间核}} \cdot \underbrace{h(z_s, f_i)}{\text{语义核}} \cdot f_i ψs=i∑空间核 g(δs,xi)⋅语义核 h(zs,fi)⋅fi

  • 空间核 g g g (Spatial Kernel) :类似于 RBF,只看距离。(离得近?)
  • 语义核 h h h (Semantic Kernel) :类似于 Attention,只看特征相似度。(长得像?)
  • 双重过滤 :只有当一个点 既离得近,又长得像 时,它的特征才会被吸收。这就自带了强大的**"降噪"**功能。

2.3 第三步:情报分发 (Distribution) 📡

现在,这 S S S 个探针已经浓缩了整个点云的精华(Global Context)。最后一步就是通过 Cross-Attention,把这些全局信息"广播"回每一个原始点。


3. 数学之美:通道级点注意力 (CWPA) 🛠️

在上述的交互过程中,SPoTr 使用了 Channel-Wise Point Attention (CWPA)。这是对标准 Transformer 公式的魔改,专门针对点云特性进行了优化。

我们拆解论文中的 公式 (8)公式 (9)

3.1 公式 (9):权重的生成 (The Weight)

A q , k , c = exp ⁡ ( M ′ ( [ R ′ ( f q , f k ) ; ϕ q k ] / τ ) c ) ∑ k ′ ∈ Ω k e y exp ⁡ ( M ′ ( [ R ′ ( f q , f k ′ ) ; ϕ q k ′ ] / τ ) c ) \mathbb{A}{q,k,c} = \frac{\exp(\mathcal{M}'([\mathcal{R}'(f_q, f_k); \phi{qk}]/\tau)c)}{\sum{k' \in \Omega_{key}} \exp(\mathcal{M}'([\mathcal{R}'(f_q, f_k'); \phi_{qk'}]/\tau)_c)} Aq,k,c=∑k′∈Ωkeyexp(M′([R′(fq,fk′);ϕqk′]/τ)c)exp(M′([R′(fq,fk);ϕqk]/τ)c)

  • 向量化权重 :注意下标 c c c。这表示网络为每一个特征通道都单独计算了一组 Attention 权重
  • 物理含义
    • 在处理 颜色通道 时,网络可能认为邻居 A 很重要(权重 0.9)。
    • 在处理 法向通道 时,网络可能认为邻居 A 是噪声(权重 0.1)。
    • 这种细粒度的控制力,是标准 Scalar Attention 无法做到的。

3.2 公式 (8):特征的聚合 (The Aggregation)

CWPA = ∑ k ∈ Ω k e y A q , k , : ⊙ M ( [ R ( f q , f k ) ⏟ 相对特征 ; ϕ q k ⏟ 相对位置 ] ) \text{CWPA} = \sum_{k \in \Omega_{key}} \mathbb{A}{q,k,:} \odot \mathcal{M}([\underbrace{\mathcal{R}(f_q, f_k)}{\text{相对特征}}; \underbrace{\phi_{qk}}_{\text{相对位置}}]) CWPA=k∈Ωkey∑Aq,k,:⊙M([相对特征 R(fq,fk);相对位置 ϕqk])

这里藏着两个"魔鬼细节":

  1. 相对特征 (Subtraction) : R ( f q , f k ) = f q − f k \mathcal{R}(f_q, f_k) = f_q - f_k R(fq,fk)=fq−fk。论文实验证明,减法比点积或拼接都有效。网络更关心"邻居比我强多少",而不是"邻居是多少"。
  2. 逐元素乘法 ( ⊙ \odot ⊙) :权重向量 A \mathbb{A} A 与变换后的 Value 向量逐元素相乘。这实现了通道层面的精准特征提取。

博主笔记 :当公式 (9) 中的温度系数 τ → 0 \tau \to 0 τ→0 时,Softmax 会退化为 One-hot (Argmax)。此时 CWPA 就变成了 Max Pooling。这说明 SPoTr 在理论上完美兼容了 PointNet++ 的 Set Abstraction 操作,是一个更通用的超集。


4. 架构全景:SPoTr Block 与整体网络 🏗️

有了强大的 SPA 和 CWPA 算子,作者是如何搭建整个大厦的呢?

4.1 SPoTr Block:左右互搏,刚柔并济

一个标准的 SPoTr Block 采用了双流并行 的设计,就像人的左右手:

  1. 左手画圆 (LPA - Local Points Attention)
    • 传统的 k-NN / Ball Query。
    • 使用 CWPA 提取局部精细几何特征。
  2. 右手画方 (SPA - Self-Positioning Attention)
    • 生成探针,主动出击。
    • 使用 CWPA 提取全局长距离依赖。

融合机制 (Gating)
f ^ i = α ⋅ f i S P A + ( 1 − α ) ⋅ f i L P A \hat{f}_i = \alpha \cdot f_i^{SPA} + (1 - \alpha) \cdot f_i^{LPA} f^i=α⋅fiSPA+(1−α)⋅fiLPA

  • α \alpha α 是一个可学习参数。网络会自动决定"这一层我要多看细节(LPA)"还是"多看全局(SPA)"。这种软性的门控比简单的 Add 或 Concat 更灵活。

4.2 整体架构 (Macro Architecture)

基于 SPoTr Block,作者设计了针对分类和分割的两种架构:

  • 分类任务 (Classification)

    • 流程MLP → \to → SPoTr Block → \to → FPS 下采样 → \to → SPoTr Block ... → \to → Global Max Pooling → \to → MLP
    • 典型的层级结构,随着层数加深,点数减少,特征维度增加。
  • 分割任务 (Segmentation)

    • U-Net 结构:经典的"U"型设计。
    • Encoder:利用 SPoTr Block 提取特征并下采样。
    • Decoder :利用 Feature Propagation (FP) 层进行上采样,并通过 Skip Connection 恢复细节。
    • 值得注意的是,在 Decoder 阶段同样使用了 SPoTr Block 来增强特征的语义一致性。

5. 可视化实锤:探针真的智能吗?

口说无凭,作者在 ScanObjectNNSN-Part 上做了可视化,结果非常惊艳。

5.1 探针位置的一致性

解读

看上面的飞机图(红点代表同一个 ID 的探针)。你会发现,无论飞机怎么摆放,形状如何变化,红色的探针总是死死地盯着"左机翼" 。这说明网络真的学到了"语义对齐",而不是随机乱飞。

也就是说相似语义的探针,位于相似的地方

5.2 解耦注意力的降噪效果

解读

  • 仅空间核):探针在机翼根部,结果把机身的一大块也"染红"了(误吸了机身特征)。
  • 解耦注意力 :加上语义核后,红色区域完美地收缩在了机翼范围内,机身被过滤掉了。这就是"双边滤波"在特征空间的威力。

6. 总结 (Conclusion)

SPoTr 是 "Deformable (可变形)" 思想在点云 Transformer 中的一次教科书式落地。它的成功证明了:

  1. 主动优于被动:不要被 k-NN 锁死视野。让网络自己决定"看哪里",比人工设定的规则更有效。
  2. 以点带面 :全局信息不需要 O ( N 2 ) O(N^2) O(N2) 的全连接。只要找准几个关键点(SP points),就能以极低的代价 ( O ( N ⋅ S ) O(N \cdot S) O(N⋅S)) 撬动全局。
  3. 特征要解耦:空间距离和语义相似度必须同时考虑,否则"跨界"的噪声会毁了特征的纯度。

如果你正在处理 稀疏、非结构化 的 3D 数据,或者苦恼于 Transformer 的计算量,SPoTr 的这种"探针"思路绝对值得一试。


📚 参考文献

1\] Park, J., Lee, S., Kim, S., Xiong, Y., \& Kim, H. J. (2023). Self-positioning Point-based Transformer for Point Cloud Understanding. CVPR. *** ** * ** *** #### 💬 互动话题: 1. **关于插值** :SPoTr 生成的探针坐标 δ s \\delta_s δs 大概率不在真实的输入点上(是虚空的)。这种"虚拟点"的特征是通过插值得到的,你觉得这会引入混叠误差吗?有没有更好的特征获取方式? 2. **对比 PTv3** :PTv3 (CVPR 2024) 通过 **序列化 (Serialization)** 解决了效率问题,而 SPoTr (CVPR 2023) 通过 **主动采样** 解决了效率问题。如果是你,你会更倾向于哪种技术路线?为什么? *** ** * ** *** #### 📚 附录:点云网络系列导航 🔥 **欢迎订阅专栏** :[【点云特征分析_顶会论文代码硬核拆解】持续更新中...](https://blog.csdn.net/shuige515/category_13103836.html) *本文为 CSDN 专栏【点云特征分析_顶会论文代码硬核拆解】原创内容,转载请注明出处。*

相关推荐
渡我白衣2 小时前
从直觉到公式——线性模型的原理、实现与解释
人工智能·深度学习·神经网络·机器学习·计算机视觉·自然语言处理·caffe
大模型任我行2 小时前
美团:统一生成理解多模态大模型
人工智能·计算机视觉·语言模型·论文笔记
向量引擎小橙2 小时前
数字孪生进阶版:“全脑城市”如何改变我们的生活
大数据·人工智能·深度学习·生活·集成学习
白日做梦Q2 小时前
图像去噪算法对比:传统方法与深度学习方法
人工智能·深度学习·算法
会挠头但不秃2 小时前
深度学习(7)LeNet与AlexNet原理
人工智能·深度学习
GG向前冲2 小时前
【深度学习】利用GPU跑Pytorch框架深度学习配置全流程
人工智能·pytorch·深度学习
m0_462605222 小时前
G1 - 生成对抗网络(GAN)
人工智能·神经网络·生成对抗网络
2401_841495642 小时前
【机器学习】生成对抗网络(GAN)
人工智能·python·深度学习·神经网络·算法·机器学习·生成对抗网络
Hcoco_me2 小时前
大模型面试题24:小白版InfoNCE原理
人工智能·rnn·深度学习·自然语言处理·word2vec