【论文精读(三)】PointMLP 论文精读|当大家都在卷局部几何时,它为什么敢说:复杂操作可能并不重要? (ICLR 2022)
Rethinking Network Design and Local Geometry in Point Cloud: A Simple Residual ML (ICLR 2022)温故而知新从 PointNet 到 PointNet再到后来的 DGCNN、Point Transformer、CurveNet点云网络的发展路线似乎越来越清晰想要更强就必须设计更复杂的局部几何提取器。于是卷积、图结构、注意力机制、相对位置编码……一个比一个复杂一个比一个“会看局部”。但 PointMLP 这篇论文偏偏反着来。它提出了一个非常“刺耳”的问题点云理解真的一定要依赖那些复杂的局部几何模块吗----未必他们提出了一个几乎可以说“反潮流”的框架——PointMLP。它不使用卷积、不使用图卷积、不使用注意力机制而是回到最朴素的 MLP 路线只保留层次化结构和局部聚合再配一个很轻量的几何仿射模块结果不仅精度没有掉反而还做到了更强、更快。如果说 PointNet 是点云网络的起点PointNet 奠定了局部层次化建模的框架那么 PointMLP 更像是在这个基础上做了一次“反思”也许真正重要的不是把局部算子设计得越来越花而是重新思考整个网络设计。目录1. PointMLP 想反驳什么2. 为什么这篇论文有意思3. PointMLP 的核心思想保留层次化放弃复杂局部提取器4. PointMLP 的整体结构怎么理解5. 关键模块一Residual Point MLP Block6. 关键模块二Geometric Affine Module7. PointMLP 到底“简化”了什么8. 实验结果怎么看9. 消融实验说明了什么10. PointMLP 的局限性11. 我对 PointMLP 的评价12. 三句话总结参考资料1. PointMLP 想反驳什么PointMLP 最有意思的地方不是它提出了一个多么复杂的新模块而是它一上来就在挑战一个已经默认成立的共识点云网络之所以越来越强是因为局部几何提取器越来越复杂。过去几年很多点云方法都围绕这个方向卷卷积类方法PointConv、KPConv图结构方法DGCNN、DeepGCNs注意力方法PCT、Point Transformer这些方法的共同特点是都很强调局部邻域建模而且局部算子越来越复杂。但 PointMLP 认为这条路线已经开始出现两个问题1.1 第一复杂局部提取器很慢论文明确指出卷积、图操作、注意力这类复杂局部模块会带来更高的计算成本更多的内存访问开销更差的推理效率作者举的例子很直接虽然很多高级局部提取器在论文 benchmark 上表现很好但真正大规模实际应用里很多系统还是更愿意使用 PointNet / PointNet 这类更简单的框架。1.2 第二性能收益开始趋于饱和论文也指出随着各种 sophisticated local extractor 越来越多很多方法在主流数据集上的性能已经逐渐趋于平台期。也就是说你把局部建模做得越来越复杂但最后提升的幅度并没有那么大。于是作者提出了这篇论文最关键的问题是不是该停下来重新想想复杂局部几何提取器到底是不是点云理解的关键2. 为什么这篇论文有意思我觉得 PointMLP 最有意思的地方在于它不是简单地说“MLP 也能做点云”而是在整个点云发展脉络里重新强调了一件事PointNet 的层次化框架本身也许比复杂局部算子更重要。这篇论文其实站在一个很微妙的位置上它不是回到 PointNet 那种纯全局建模它也没有否定 PointNet 的局部分层思想它真正放弃的是后面这几年大家拼命卷的“复杂局部提取器”换句话说PointMLP 的思路是保留 PointNet 的 hierarchical pipeline但把里面那些越来越重的局部模块拆掉换成简单的 residual MLP。这和单纯做一个“MLP baseline”是两回事。它真正想表达的是点云网络的强大可能更多来自合理的层次结构而不是局部算子本身越来越花哨。3. PointMLP 的核心思想保留层次化放弃复杂局部提取器如果只用一句话概括 PointMLP我会写成它继承了 PointNet 的分层局部聚合框架但把局部特征提取这一步极度简化成残差 MLP。论文明确写到PointMLP follows the design philosophy of PointNet但试图构建一个更简单、更深、更高效的网络结构。PointMLP 的总体公式可以写成g i Φ p o s ( A ( Φ p r e ( f i , j ) , j 1 , … , K ) ) g_i \Phi_{pos}\Big(A(\Phi_{pre}(f_{i,j}),\; j1,\dots,K)\Big)giΦpos(A(Φpre(fi,j),j1,…,K))这里的含义是Φ p r e \Phi_{pre}Φpre在聚合前对局部邻域点做残差 MLP 提取A ( ⋅ ) A(\cdot)A(⋅)聚合函数作者依然采用max-poolingΦ p o s \Phi_{pos}Φpos在聚合后再做一段残差 MLP 提取更深的区域特征这其实很值得注意因为它说明PointMLP 并没有否定“局部区域”本身而是否定“局部区域内部一定要用复杂算子来建模”。4. PointMLP 的整体结构怎么理解PointMLP 的整体思路其实不复杂你可以把它看成一个“点云版的深层残差 MLP 骨干”。输入点云先经过局部 grouping再进入 Geometric Affine 模块然后通过多层 Residual Point MLP Block 提取局部特征并通过重复多个 stage 逐步扩大感受野。图中还把一个 stage 分成了两段聚合前的Φ p r e \Phi_{pre}Φpre聚合后的Φ p o s \Phi_{pos}Φpos整个网络依然是典型的层次化点云管线下采样中心点选取邻域点对局部区域做特征提取不断重复扩大感受野最终完成分类或分割如果你熟悉 PointNet你会发现PointMLP 的“框架骨架”其实还是 PointNet只是局部特征提取单元被换成了更朴素的残差 MLP。这也是它最有争议、也最有价值的地方。5. 关键模块一Residual Point MLP BlockPointMLP 的第一个核心模块是Residual Point MLP BlockResP Block。论文里明确写到这里的映射函数本质上是M L P ( x ) x MLP(x) xMLP(x)x也就是一个非常标准的残差结构。每个 block 由若干层 FC、归一化和激活函数组成通过残差连接让网络可以安全地往更深堆。5.1 为什么要残差化因为作者观察到单纯地把 MLP 堆深并不会自然带来更强性能反而容易导致训练不稳定。所以 PointMLP 引入残差连接目的很明确让深层网络更容易优化提高训练稳定性让 MLP 也能像 ResNet 那样往深了做论文后面的 loss landscape 可视化也证明了这一点去掉残差连接之后PointMLP 的 loss landscape 会明显变尖优化变难性能也会明显下降。Figure 4 中without residual 的地形更陡、更尖而加入残差后loss surface 更平滑。5.2 它到底做了什么和很多复杂局部提取器不同ResP Block 本身并不去显式建模edge relationgraph topologyself-attentiondynamic kernel它做的事情很朴素在局部区域内用共享的残差 MLP 去学习一种可堆叠、可扩展的特征映射。这也是 PointMLP 的方法论核心之一不要让局部算子越来越重而要让网络本身越来越“好训练”。6. 关键模块二Geometric Affine Module如果说 ResP Block 代表的是 PointMLP 的“极简主义”那 Geometric Affine Module 就是它为了防止“过度简化”而补上的一个关键保险。论文明确指出如果只是简单地把网络做深PointMLP 的准确率和稳定性都会下降。作者认为这可能是因为局部点云本身是稀疏且不规则的不同局部区域的几何结构差异很大而共享 MLP 对这种变化不够鲁棒。所以作者引入了一个非常轻量的模块Geometric Affine Module它的核心操作是{ f i , j } α ⊙ { f i , j } − f i σ ϵ β \{f_{i,j}\} \alpha \odot \frac{\{f_{i,j}\} - f_i}{\sigma \epsilon} \beta{fi,j}α⊙σϵ{fi,j}−fiβ其中f i f_ifi局部中心点σ \sigmaσ跨所有局部组和通道的全局标量方差α , β \alpha,\betaα,β可学习参数本质上是对局部点特征做一种几何归一化和仿射变换。6.1 这个模块到底在解决什么问题你可以把它理解成先把局部点云“规整一下”再交给 MLP 去学。为什么这么做有用因为 MLP 本身不像卷积、图网络、注意力那样天然带有某些局部结构建模偏置。如果局部点分布很乱、尺度变化很大那么共享 MLP 很容易学不稳。而 Geometric Affine 做了两件事把局部输入拉回更稳定的分布通过相对中心点和方差信息隐式编码了一些局部几何信息论文在消融实验里也明确指出这个模块既提升精度也明显提升训练稳定性。Figure 3 里无论是 24、40 还是 56 层加入 affine 之后曲线都更高、更稳Table 5 里去掉 affine 后OA 从85.4%直接掉到81.5%。所以这篇论文真正精妙的地方就在这它不是完全不要几何而是不要“重型几何模块”只保留一个足够轻、但确实有效的几何校正。7. PointMLP 到底“简化”了什么这一点一定要讲清楚否则很容易误解 PointMLP。PointMLP 不是说“点云不需要局部信息了。”它真正想说的是点云当然需要局部区域但局部区域里的特征提取不一定非要靠复杂卷积、图关系和注意力。具体来说它简化了三件事7.1 简化局部提取器PointMLP 放弃了这些复杂设计动态卷积核显式图边关系自注意力计算各种 pairwise relation 编码转而使用共享残差 MLPmax pooling轻量 affine 几何校正7.2 保留层次化感受野它并没有放弃分 stage 的层次结构局部 groupingprogressively larger receptive field这一点很关键因为它说明作者不是在“退回 PointNet”而是在“重构 PointNet”。7.3 强调效率优先的网络设计哲学论文非常强调一点模型复杂度不能只看 FLOPs 和参数量还要看 memory access cost 和并行度。也就是说在点云里很多复杂操作虽然 paper 上看着“理论上不算太贵”但实际跑起来并不快。PointMLP 则尽量让主要计算都落在深度学习框架最擅长优化的 MLP 上从而获得更好的实际吞吐。8. 实验结果怎么看PointMLP 的实验非常有说服力因为它不只是“精度比一点点”而是同时把精度速度模型设计哲学三件事放到了一起讲。8.1 ModelNet40它证明“简单结构也能做到 SOTA”在 ModelNet40 上PointMLP 的结果是PointMLP w/ vot.94.5% OAPointMLP w/o vot.94.1% OA对比前面的强方法PointNet90.7%Point Transformer93.7%CurveNet94.2%也就是说PointMLP 在只用 1k 点的情况下超过了很多带复杂局部提取器的方法。更有意思的是这种提升不是在 80% 多的阶段发生的而是在94% 左右已经很难涨的饱和区间里继续往上挤。这说明这篇论文不是“换个壳子跑平 baseline”而是真的有效。8.2 速度对比它不是只会讲“简单”而是真的更快论文特别强调 accuracy-speed tradeoff。Figure 1 和 Table 2 都说明了这一点CurveNet 测试速度约15 samples/sPointMLP 测试速度约112 samples/sPointMLP-elite 甚至做到176 samples/s这组结果非常关键因为它直接回应了论文一开始的立论复杂局部几何提取器虽然强但往往推理慢PointMLP 则证明了简单深层 MLP 也能同时拿到强精度和高速度。这也是为什么我觉得这篇论文不只是“做了个新网络”而是在重新定义什么叫更值得落地的点云骨干。8.3 ScanObjectNN它在真实数据上更有说服力如果说 ModelNet40 还能被质疑“太干净、太理想”那 ScanObjectNN 就更能体现一个模型是否真有实力。论文在最难的PB_T50_RS设定上给出的结果是PointMLP85.4 ± 0.3 OAPointMLP-elite83.8 ± 0.6 OA对比前面方法PointNet77.9DGCNN78.1PRANet82.1MVTN82.8PointMLP 比此前最好的方法高了3.3% OA这个提升其实非常夸张。因为 ScanObjectNN 是带有背景遮挡噪声真实扫描误差的现实场景数据这说明 PointMLP 不是只会在“干净 CAD 数据”上跑高分而是在真实点云里也有很强鲁棒性。8.4 ShapeNetPart它不只是会分类在 ShapeNetPart 上PointMLP 的结果是Cls. mIoU84.6Inst. mIoU86.1与很多主流方法相比是非常有竞争力的而且论文还特别指出他们只是把 PointNet 分割框架中的 backbone 换成了 PointMLP就把 PointNet 的 85.1 提升到了 86.1 Instance mIoU。这说明 PointMLP 不是一个“只能做分类”的特殊结构而是可以作为通用点云 backbone 使用。9. 消融实验说明了什么我觉得 PointMLP 的消融比主结果更值得看因为它真的告诉你这篇论文强不是因为“拍脑袋碰巧有效”而是结构里的每个部分都在起作用。9.1 深度不是越深越好但适当加深是有价值的论文比较了 24、40、56 层三个版本24 layers84.8 OA40 layers85.4 OA56 layers85.0 OA这说明点云网络确实可以从更深中获益但也不是越深越强40 层在性能和稳定性上取得了最好平衡这其实也很符合 ResNet 时代的经验深度有价值但前提是网络结构要配得上。9.2 Geometric Affine 真的很重要Table 5 的结果非常直白去掉 affine81.5 OA保留 affine85.4 OA这说明 PointMLP 并不是“随便堆 MLP 就行”而是必须要有一个轻量几何归一化模块来稳定局部输入分布。9.3Φ p r e \Phi_{pre}Φpre和Φ p o s \Phi_{pos}Φpos都有贡献论文也做了组件拆分去掉 pre-MLP82.8 OA去掉 pos-MLP84.7 OA全部保留85.4 OA也就是说PointMLP 的逻辑不是“先聚合完再随便做点 MLP”而是聚合前先学局部点特征聚合后再学更深区域特征这两步都有作用。9.4 残差连接不是装饰品loss landscape 那张图非常有说服力。论文写得很直白去掉 residual 后ModelNet40 上性能会掉到88.1%加入 residual 后优化地形更平、更容易训练所以 PointMLP 的本质不只是一个 MLP network而是一个深层、残差化、层次化的点云 MLP 框架。10. PointMLP 的局限性当然PointMLP 也不是终点。10.1 它并没有真正证明“局部几何不重要”我觉得这篇论文最容易被误读的一点就是“作者是不是在说局部几何没用了”其实不是。因为 PointMLP 仍然保留了groupingneighborhood aggregation局部区域建模geometric affine所以它真正反驳的是复杂局部提取器未必必要而不是局部几何本身不重要这两个结论差别非常大。10.2 它仍然依赖 PointNet 式的层次框架PointMLP 虽然看上去“很新”但骨架其实仍然建立在 PointNet 的 hierarchical grouping pipeline 之上。所以它更像是对 PointNet 的“简化重构”而不是彻底脱离已有范式。10.3 它在更复杂任务上的上限还需要继续看这篇论文主要展示的是分类part segmentation虽然这些结果已经很强但在更复杂任务上比如大规模场景语义分割3D 检测时序点云建模这种纯残差 MLP 的路线是否依然能保持优势还需要更多工作验证。11. 我对 PointMLP 的评价如果让我用一句话评价 PointMLP我会说这不是一篇“再发明一个点云模块”的论文而是一篇“重新质疑点云网络设计方向”的论文。它最有价值的地方不只是做出了一个更快更准的模型而是它提醒了整个社区也许我们过去几年太执着于局部几何模块本身而忽略了网络结构设计、训练稳定性和效率之间的平衡。PointMLP 之所以有意思不是因为它“回到了 MLP”而是因为它证明了PointNet 的层次化框架仍然很强深层残差结构在点云里也很重要很多时候简单且训练友好的设计未必比复杂关系建模差所以在我看来PointMLP 的真正价值不是“取代所有复杂方法”而是逼着大家重新思考点云网络到底该卷什么。12. 三句话总结1. 基础被低估了 (Don’t overlook the basics)在大家都在追求复杂的图卷积和 Transformer 时作者回头重新审视了 MLP。有时候复杂的不是任务而是我们设计的模型。2. 几何归一化是关键 (Geometry matters)MLP 并不是不能处理点云而是需要合适的归一化 (Normalization)。几何仿射模块Geometric Affine的作用类似于 CNN 中的 BatchNorm它让数据分布变得适合网络学习。3. 残差就是力量 (Residual is all you need)只要把 MLP 堆得足够深借助 ResNet 结构它的表达能力是惊人的。参考资料Ma, Xu, et al.Rethinking Network Design and Local Geometry in Point Cloud: A Simple Residual MLP Framework.ICLR 2022. 附录MLP点云网络系列导航本专栏致力于用“人话”解读 3D 点云领域的硬核论文从原理到代码逐行拆解。 欢迎订阅专栏【点云特征分析_论文讲解】持续更新中…互动话题现在的 CV 领域ConvNeXt 和 MLP-Mixer 正在复兴。你觉得在 3D 点云领域PointMLP 这种“反潮流”的极简设计会成为主流吗还是说 Transformer 最终会统治一切欢迎在评论区留下你的看法点赞 、收藏 ⭐、关注 是对博主最大的支持