当前位置:网站首页>PointNeXt:通过改进的模型训练和缩放策略审视PointNet++
PointNeXt:通过改进的模型训练和缩放策略审视PointNet++
2022-07-04 17:54:00 【马少爷】
PointNet++ 是用于点云理解的最有影响力的神经架构之一。尽管 PointNet++ 的准确性已被 PointMLP 和 Point Transformer 等最近的网络在很大程度上超越,但我们发现很大一部分性能提升是由于改进了训练策略,即数据增强和优化技术,以及增加了模型大小而不是架构创新。因此,PointNet++ 的全部潜力还有待探索。
在这项工作中,我们通过对模型训练和缩放策略的系统研究重新审视了经典的 PointNet++,并提供了两个主要贡献。
首先,我们提出了一组改进的训练策略,显著提高了 PointNet++ 的性能。例如,我们表明,在不改变架构的情况下,PointNet++ 在 ScanObjectNN 对象分类上的整体准确率(OA)可以从 77.9% 提高到 86.1%,甚至优于最先进的 PointMLP。
其次,我们将倒置残差瓶颈设计和可分离 MLP 引入 PointNet++,以实现高效且有效的模型缩放,并提出 PointNeXt,即下一版本的 PointNets。
PointNeXt 可以灵活扩展,在 3D 分类和分割任务上都优于最先进的方法。
论文题目:PointNeXt: Revisiting PointNet++ with Improved Training and Scaling Strategies
详细解读:
https://www.aminer.cn/research_report/62afdfb27cb68b460fd6c4fa?download=false
icon-default.png?t=M5H6https://www.aminer.cn/research_report/62afdfb27cb68b460fd6c4fa?download=false
AMiner链接:https://www.aminer.cn/?f=cs
https://zhuanlan.zhihu.com/p/526818590
本文通过对模型训练和缩放策略的系统研究重新审视了经典的PointNet++,并提供了两个主要贡献,进而提出PointNeXt,表现SOTA!性能优于PointMLP、Point Transformer等网络,代码已开源(5天 90+ star)!
PointNeXt: Revisiting PointNet++ with Improved Training and Scaling Strategies
单位:KAUST, 微软
代码:https://github.com/guochengqian/pointnext
论文:https://www.aminer.cn/pub/62a2b6955aee126c0f4d8e79
PointNet++ 是用于点云理解的最有影响力的神经架构之一。尽管 PointNet++ 的准确性已被 PointMLP 和 Point Transformer 等最近的网络在很大程度上超越,但我们发现很大一部分性能提升是由于改进了训练策略,即数据增强和优化技术,以及增加了模型大小而不是架构创新。因此,PointNet++ 的全部潜力还有待探索。
在这项工作中,我们通过对模型训练和缩放策略的系统研究重新审视了经典的 PointNet++,并提供了两个主要贡献。
首先,我们提出了一组改进的训练策略,显著提高了 PointNet++ 的性能。例如,我们表明,在不改变架构的情况下,PointNet++ 在 ScanObjectNN 对象分类上的整体准确率(OA)可以从 77.9% 提高到 86.1%,甚至优于最先进的 PointMLP。
其次,我们将倒置残差瓶颈设计和可分离 MLP 引入 PointNet++,以实现高效且有效的模型缩放,并提出 PointNeXt,即下一版本的 PointNets。
PointNeXt 可以灵活扩展,在 3D 分类和分割任务上都优于最先进的方法。
在这一节,我们展示了通过更先进的训练策略以及模型缩放策略提升PointNet++ 的性能。我们从两个小节分别介绍他们:
(1)训练策略现代化;
(2)网络架构现代化。
训练策略现代化
本章节中,我们简述我们的研究方法, 具体的训练策略可见后续的消融实验章节。
数据增强
数据增强是提升神经网络性能的最重要的方法之一,而PointNet++ 使用了简单的数据增强组合如随机旋转,缩放,平移,抖动(jitter)并应用于不同的数据集。最新的一些方法使用了更强的数据增强方法。例如, KPConv在训练时随机的失活(drop)部分颜色信息。在这篇工作中,我们收集了近期方法中用到的常见数据增强方法,并通过叠加实验定量地研究每个数据集上每种数据增强方法的效果。针对每一个数据集,我们提出了一组改进的数据增强方法,其可以大幅度提升了PointNet++ 的性能。
优化策略
优化技术主要包含损失函数(loss function),优化器(optimizer),学习率计划器(learning rate schedulers),和超参数(hyperparmeters)。随着机器学习理论的发展,现代化的神经网络可以被理论上更好的**优化器(如AdamW)和更好的损失函数(CrossEntropy with label smoothing)**训练。Cosine learning rate decay也在近年被大量使用,因为相比 step decay,它的调参更为简单而且效果不会差。在这篇工作中,我们通过叠加实验量化了每种优化策略对PointNet++的影响。同样的,针对每一个数据集,我们提出了一组改进的优化技术可以进一步提高网络性能。
模型架构现代化:小修改 → 大改进
感受野缩放
在点云网络中,使用不同的ball query radius (查询半径)会影响模型的感受野,进而影响性能。我们发现初始半径对于网络性能有很大程度上的影响,并且不同数据集上最佳查询半径不同。此外,我们发现相对坐标 使得网络优化更难,导致性能下降。因此,我们提出利用相对坐标处以查询半径以实现的归一化:
如果没有归一化,相对坐标的值会非常小(小于半径)。这就要求网络能学习到更大的权重应用于 。这使得优化变得困难,特别是考虑到权重衰减的正则化手段限制了网络权重的大小。
模型缩放
PointNet++ 用于分类和分割的模型规模均小于2M。而现在的网络参数普遍在10M以上[3,4]。有趣的是,我们发现无论是使用更多的SA模块还是使用更大的channel size都不会显著提高准确性,却反而导致thoughput显著下降。这主要是梯度消失和过度拟合导致的。在本小节中,我们提出了Inverted Residual MLP (InvResMLP)模块以实现高效实用的模型缩放。该模块建立在SA模块上,如图一的中部所示。InvResMLP和SA模块的不同点有三个:
- 在模块的输入和输出之间添加了残差连接, 以缓解梯度消失问题
- 引入了可分离的MLP 以减少计算量,并增强逐点的特征提取
- 引入invertedbottleneck的设计,以提高特征提取的能力
在PointNet++基础上结合InvResMLP 和图一所示的宏观架构变化,我们提出了PointNeXt。我们将 stem MLP 的channel大小表示为 C,将 InvResMLP 模块的数量表示为 B。我们 PointNeXt 系列的配置总结如下:
- PointNeXt-S: C = 32, B = 0
- PointNeXt-B: C = 32, B = (1, 2, 1, 1)
PointNeXt-L: C = 32, B = (2, 4, 2, 2)
PointNeXt-XL: C = 64, B = (3, 6, 3, 3)
实验
在S3DIS语义分割上,PointNeXt-XL以mIoU/OA/mACC=74.9%/90.3%/83.0%超越了Point Transformer取得SOTA性能且在推理速度上更快。在ScanObjectNN分类上,PointNeXt-S超越目前的SOTA方法PointMLP,且推理速度快十倍。在ShapeNetPart部分分割上,加宽后的模型PointNeXt-S(C=160)达到87.2 Instance mIoU, 超越SOTA CurNet。
消融实验
边栏推荐
- 资料下载 丨首届腾讯技术开放日课程精华!
- 其他InterSystems %Net工具
- One question per day (2022-07-02) - Minimum refueling times
- 正则替换【JS,正则表达式】
- node_exporter部署
- Technology sharing | interface testing value and system
- 性能优化之关键渲染路径
- BI技巧丨权限轴
- The kth largest element in the array
- Esp32-c3 introductory tutorial questions ⑫ - undefined reference to ROM_ temp_ to_ power, in function phy_ get_ romfunc_ addr
猜你喜欢
BI技巧丨权限轴
The 300th weekly match of leetcode (20220703)
[发布] 一个测试 WebService 和数据库连接的工具 - DBTest v1.0
神经网络物联网是什么意思通俗的解释
整理混乱的头文件,我用include what you use
LeetCode第300场周赛(20220703)
神经网络物联网应用技术就业前景【欢迎补充】
The latest progress of Intel Integrated Optoelectronics Research promotes the progress of CO packaging optics and optical interconnection technology
小发猫物联网平台搭建与应用模型
One question per day (2022-07-02) - Minimum refueling times
随机推荐
LeetCode FizzBuzz C#解答
redis分布式锁的8大坑总结梳理
Safer, smarter and more refined, Chang'an Lumin Wanmei Hongguang Mini EV?
Leetcode fizzbuzz C # answer
Shell programming core technology "I"
BI技巧丨权限轴
《看完就懂系列》字符串截取方法substr() 、 slice() 和 substring()之间的区别和用法
DeFi生态NFT流动性挖矿系统开发搭建
OpenCV的二值化处理函数threshold()详解
Li Chi's work and life summary in June 2022
Shell 編程核心技術《四》
Scala basic tutorial -- 12 -- Reading and writing data
The CDC of sqlserver can read the data for the first time, but it can't read the data after adding, deleting and modifying. What's the reason
Don't just learn Oracle and MySQL!
《工作、消费主义和新穷人》的微信读书笔记
Caché WebSocket
Go microservice (II) - detailed introduction to protobuf
LM10丨余弦波动顺势网格策略
Shell 编程核心技术《四》
The kth largest element in the array