当前位置: 首页 > news >正文

【论文精读(二十一)】ASSANet:给PointNet++做个“外科手术”,速度翻倍精度暴涨(NeurIPS 2021)

Qian, G., Hammoud, H. A. A. K., Li, G., Thabet, A., & Ghanem, B. (2021). ASSANet: An Anisotropic Separable Set Abstraction for Efficient Point Cloud Representation Learning. NeurIPS.

博主导读
在点云深度学习的江湖里,PointNet++绝对是元老级的存在。虽然现在的 SOTA 榜单上充满了各种图卷积、Transformer,但当你真的要落地部署(特别是搞自动驾驶、手机AR)时,你会发现——还是 PointNet++ 最香。
但是,PointNet++ 也有它的“老年病”:算起来还是有点慢,且 Pooling 操作太粗糙
这篇 NeurIPS 2021 的ASSANet就像一位精通解剖学的“外科医生”,它没有推翻 PointNet++ 重来,而是对它的核心器官——SA (Set Abstraction) 模块——进行了两场精准的“微创手术”。
结果令人惊叹:手术后的 ASSANet 不仅保留了 PointNet++ 的极简风格,而且在精度上吊打了一众复杂的 SOTA,速度更是快得飞起!
论文:ASSANet: An Anisotropic Separable Set Abstraction


1. 问诊:PointNet++ 到底哪儿“虚”?

在动刀之前,我们先给 PointNet++ 做个全身体检。作者通过延迟分解 (Latency Decomposition)发现,PointNet++ 的慢,90% 都是因为计算量大。

具体病灶主要在两个地方:

  1. 计算冗余(虚胖):PointNet++ 在每个局部区域找了K KK个邻居(通常K = 32 K=32K=32),然后对这K KK个邻居的特征分别跑 MLP。
    • 后果:这导致计算量直接翻了K KK倍!其实很多特征提取工作不需要在邻居层面做,在中心点做就够了。
  2. 视力模糊(散光):PointNet++ 最后是用Max Pooling把邻居特征聚合成一个点。
    • 后果:这是一种各向同性 (Isotropic)的操作。它分不清“左边的邻居”和“右边的邻居”,导致丢失了关键的几何方向信息。

ASSANet 的治疗方案

  1. 第一刀(瘦身):把 MLP 拆开,移到点上算 ——Separable SA
  2. 第二刀(矫正):引入位置权重,区分方向 ——Anisotropic Reduction

2. 第一刀:可分离 SA (Separable SA) —— 速度起飞 🚀

这一招的灵感来自于 CV 界的轻量化神作MobileNet(深度可分离卷积)。

  • PointNet++ 的做法 (Vanilla SA)

    • 先找邻居→ \to再对每个邻居跑 MLP。
    • 计算量O ( N × K × C o u t ) O(N \times K \times C_{out})O(N×K×Cout)。太重了!
  • ASSANet 的做法 (Separable SA)

    • 先跑 MLP:在找邻居之前,先对中心点特征做一次 MLP(Point-wise)。
    • 再找邻居:拿着处理好的特征去 Grouping。
    • 后跑 MLP:聚合之后,再做一次 MLP。
    • 计算量O ( N × C o u t ) O(N \times C_{out})O(N×Cout)
    • 效果:直接把计算量里的K KK给消掉了!速度瞬间提升

3. 第二刀:各向异性归约 (Anisotropic Reduction) —— 精度回血 🎯

如果只做第一步瘦身,速度是快了,但精度会掉(因为丢失了邻居间的交互)。为了补回精度,作者对 Pooling 层动了手脚。

  • PointNet++ 的做法 (Isotropic)

    • Max_Pooling([f1, f2, ..., fk])
    • 不管邻居在哪,一视同仁。
  • ASSANet 的做法 (Anisotropic)

    • 利用相对坐标( Δ x , Δ y , Δ z ) (\Delta x, \Delta y, \Delta z)(Δx,Δy,Δz)给特征加权!
    • 操作:把特征f ff分别乘以归一化的Δ x , Δ y , Δ z \Delta x, \Delta y, \Delta zΔx,Δy,Δz
    • 公式
      f n e w = Concat ( f ⋅ Δ x , f ⋅ Δ y , f ⋅ Δ z ) f_{new} = \text{Concat}(f \cdot \Delta x, \quad f \cdot \Delta y, \quad f \cdot \Delta z)fnew=Concat(fΔx,fΔy,fΔz)
    • 效果:这样网络就能知道特征是来自“上方”还是“左方”了。这就把丢失的几何结构信息找回来了。

这就像是给近视眼戴上了眼镜。以前看邻居是一团模糊,现在能看清谁在左边、谁在右边了。虽然多了一步乘法,但因为是在 Reduction 阶段做的,几乎不增加计算负担


4. 合体:ASSANet 与数据流

把 PointNet++ 里所有的 SA 模块都替换成ASSA 模块,就得到了ASSANet

宏观架构

它依然保持了经典的Encoder-Decoder结构:

  1. Encoder:4 个阶段,通过 ASSA 模块不断下采样、提取特征。
  2. Decoder:通过 FP 模块上采样,并与 Encoder 特征进行 Skip Connection 拼接。
  3. Head:接全连接层输出分类或分割结果。

性能怪兽

作者还研究了如何把模型做大做强 (Scaling)

  • ASSANet-L (Large):加宽通道、加深层数。
  • 即便如此,它依然比那些复杂的图卷积网络要快得多。

5. 实验:吊打全场 (Experiments) 📊

作者在三大经典任务上验证了疗效。

5.1 场景分割 (S3DIS Area 5)

这是最硬核的指标。

  • PointNet++:55.6 mIoU。
  • ASSANet63.0 mIoU
    • 提升+7.4 mIoU
    • 速度:快了1.6 倍
  • ASSANet-L66.8 mIoU
    • 对比 KPConv (65.4 mIoU),精度更高,且速度快了54 倍!这是什么概念?这是降维打击!

5.2 消融实验

作者一步步证明了这两刀的价值(见 Table 4):

  1. 只做瘦身 (PreConv):速度快了,但精度崩了 (48.7 mIoU)。
  2. 加残差 (Separable):精度回血一点 (52.4 mIoU)。
  3. 加各向异性 (ASSA)精度直接封神 (63.0 mIoU),且速度几乎没掉。

6. 总结 (Conclusion)

ASSANet 给了我们一个极其重要的启示:
不要盲目迷信复杂的算子。

PointNet++ 这种经典架构,只要稍加改造,优化掉它的计算瓶颈(Separable),弥补掉它的几何缺陷(Anisotropic),就能焕发出惊人的生命力。

  • 对于学术界:这是一个“极简主义”战胜“堆砌主义”的经典案例。
  • 对于工业界:如果你要在手机、嵌入式设备上跑点云算法,ASSANet 绝对是目前性价比最高的选择之一。

📚 参考文献

[1] Qian, G., et al. (2021). ASSANet: An Anisotropic Separable Set Abstraction for Efficient Point Cloud Representation Learning. NeurIPS.


💬 互动话题:

  1. 关于轻量化:你觉得未来的点云网络会往哪个方向卷?是继续设计复杂的 Transformer,还是像 ASSANet 这样回归极简高效?
  2. 关于 PointNet++:你现在的项目里还在用 PointNet++ 吗?有没有遇到速度瓶颈?欢迎在评论区吐槽!

📚 附录:点云网络系列导航

🔥欢迎订阅专栏:【点云特征分析_顶会论文代码硬核拆解】持续更新中…

本文为 CSDN 专栏【点云特征分析_顶会论文代码硬核拆解】原创内容,转载请注明出处。

http://www.jsqmd.com/news/201694/

相关文章:

  • GLM-4.6V-Flash-WEB日志分析:定位推理异常的关键线索
  • NOTEBOOKLM在教育领域的5个实际应用案例
  • AI一键搞定MySQL安装:快马平台智能配置指南
  • CCPC2021威海 CF103428I Distance 题解
  • Unity游戏实时翻译终极指南:5步轻松突破语言障碍
  • 快速构建硬盘检测工具的原型
  • AI应用架构师必看:如何用AI技术推动教育公平?
  • 企业级Ubuntu镜像源解决方案:内网搭建与维护指南
  • XUnity Auto Translator 深度解析:重新定义游戏翻译的技术革命
  • Betaflight调参优化:飞控性能提升的全面讲解
  • XUnity Auto Translator 终极攻略:让游戏语言障碍彻底消失的秘籍宝典
  • 电商网站XSS攻击实战:从漏洞发现到防御方案
  • Unity游戏实时翻译终极指南:XUnity Auto Translator完全解析
  • 嵌入式Linux中SerialPort TTY层驱动解析
  • GRBL内存优化技巧:资源受限场景完整示例
  • RABBITMQ实战应用案例分享
  • AI如何帮你轻松掌握CSS Gap布局
  • 【论文精读(二十二)】PointMeta:点云江湖的“兵器谱”,用元架构终结算子内卷(CVPR 2023)
  • 技术文章大纲模板
  • 工控主板PCB布线电源路径优化:实战案例解析
  • 零基础教程:如何在你的项目中正确使用SIMHEI.TTF
  • 嘉立创PCB布线中传输线效应应对方案实战
  • 吐血推荐9个AI论文软件,助你轻松搞定本科论文!
  • Leetcode 23. 合并 K 个升序链表 (Day 12)
  • Unity游戏翻译神器:XUnity Auto Translator实战使用指南
  • 零基础学NPM:从安装到发布第一个包
  • 漫画分镜理解任务中GLM-4.6V-Flash-WEB的表现水平测评
  • 工业PLC组网中USB转485驱动的完整示例
  • XUnity Auto Translator 完整使用手册:轻松实现游戏实时翻译
  • 基于GLM-4.6V-Flash-WEB的无障碍访问辅助工具构想