原文链接:https://www.techbeat.net/article-info?id=3669
作者:Gordon
:::
论文链接:
https://arxiv.org/abs/2206.04670
代码链接(已开源):
https://github.com/guochengqian/pointnext
PointNet++ 是点云理解领域最有影响力的神经网络模型之一。虽然PointNet++ 在性能上已被一些最新的方法如PointMLP和Point Transformer超越,但是我们发现这些方法的性能提升很大程度上源自于更好的训练策略(数据增强和优化方法),以及更大的模型而不是模型架构的创新。
在这篇工作中,通过对训练策略和模型缩放策略进行系统性的研究,我们重新探究了PointNet++。我们的主要贡献如下:
我们提出了一套更有效的训练策略,这些策略显著地提高了PointNet++ 在各个数据集上的表现。例如,在不改变网络结构的情况下,PointNet++ 在ScanObjectNN上准确率(OA)可以从77.9%提升至86.1%, 甚至超越了目前最好的模型PointMLP;
我们将inverted residual bottleneck和可分离的MLPs引入了PointNet++ 并以此提出变体结构PointNeXt, 从而实现更高效的模型缩放。PointNeXt在点云分类和分割的任务上都超越了SOTA。在ScanObjectNN分类数据集上,PointNeXt达到了87.8%的准确率(OA),比SOTA模型PointMLP高2.3个点,并在推理速度上快了10倍。在S3DIS语义分类数据集上, PointNeXt达到了74.3% mIOU(6-fold),超过SOTA模型Point Transformer (73.5% mIoU)。
3D点云领域的大多数工作专注于开发精巧的模块来提取点云的局部细节,例如 KPConv [3] 中的伪网格卷积以及 Point Transformer [4] 中的自注意力层。这些新提出的方法在各种任务中都远优于经典的点云理解网络PointNet++,给人的错觉是 PointNet++ 网络过于简单,无法学习复杂的点云表示。在这项工作中,我们发现影响PointNet++ 性能的原因不在于其网络模块,而在于其陈旧的训练以及模型缩放策略。
首先,我们发现SOTA方法的大部分性能增益源于改进的训练策略(即数据增强和优化技术)。例如,在训练过程中随机丢掉颜色信息,可以使得S3DIS上的性能提升5个点的mIoU. 遗憾的是,相比于神经网络结构的改进,训练策略的进步很少被公开提及和研究。
其次,SOTA方法的另一大性能增益来自于模型规模的提升。然而,我们发现,简单地提高PointNet++ 的卷积数量以及channel size无法提高模型的精度。因此,模型缩放策略, 即如何有效地扩展模型的深度(用更多卷积层)和广度(用更大的channel size),是一个很值得研究的话题。
基于上述两点,本文做出了如下贡献:
我们首次对点云领域的训练策略进行了系统研究,并表明仅采用改进的训练策略,PointNet++ 的性能就可以大幅度提升。 例如,在ScanObjectNN 物体分类任务上的 OA 可以增加 8.2个点,S3DIS 语义分割上的 mIoU 可以增加 13.6个点。改进的训练策略是通用的,可以很容易地应用于提升其他网络的性能(如PointNet[1],DGCNN[9],以及PointMLP[17])。
我们提出 PointNeXt,PointNets的下一代版本 (next version)。相比于PointNet++,PointNeXt在扩展模型规模后能实现较大幅度的精度提升。 PointNeXt在所有研究的任务上都超过了 SOTA,包括3D物体分类ScanObjectNN OA 87.8%(PointMLP 85.7%) 、语义分割 S3DIS 6-fold mIoU 74.9%(Point Transformer 73.5%)、物体部分分割ShapeNetPart mIoU 87.2% (CurveNet 86.8%),同时在推理速度上比 SOTA 更快。
我们的PointNeXt建立在PointNet++ 的基础上。PointNet++ 使用了U-Net结构,包括编码器(Encoder)和解码器(Decoder)。编码器(Encoder)使用一系列Set Abstraction(SA)模块将点云的特征进行层次化的抽象,而解码器(Decoder)使用相同数目的feature propagation对特征进行上采样。其中,SA模块由一个下采样层(Subsampling)、一个邻居查询层(Grouping)、一组用于提取特征的共享多层感知器 (MLPs),以及一个用于聚合邻居内特征的Reduction层组成. 其中Grouping, MLPs, 以及Rduction层组合可表示为:
x i l + 1 = R j : ( i , j ) ∈ N { h Θ ( [ x j l ; p j l − p i l ] ) } , ( 1 ) \mathbf{x}_i^{l+1} =\mathcal{R}_{j:(i, j)\in \mathcal{N}}\left\{h_\mathbf\Theta\left([\mathbf{x}_j^l; \mathbf{p}_j^l - \mathbf{p}_i^l]\right)\right\}, \qquad (1) xil+1=Rj:(i,j)∈N{hΘ([xjl;pjl−pil])},(1)
其中 R \mathcal{R} R 是Reduction层(例如max-pooling),它从点 i i i 的邻居( { j : ( i , j ) ∈ N } \{j:(i, j)\in \mathcal{N}\} {j:(i,j)∈N} )中聚合特征。 p i l \mathbf{p}_i^l pil , x i l \mathbf{x}_i^l xil , x j l \mathbf{x}_j^l xjl 分别为第 l t h l^{th} lth 层的输入坐标,输入特征,以及点 i i i 的第 j j j 个邻居的特征。 h Θ h_\mathbf\Theta hΘ 表示共享的MLPs,它的输入是 x j l \mathbf{x}_j^l xjl 和相对坐标 ( p j l − p i l ) (\mathbf{p}_j^l - \mathbf{p}_i^l) (pjl−pil) 在特征纬度的级联。
在这一节,我们展示了通过更先进的训练策略以及模型缩放策略提升PointNet++ 的性能。我们从两个小节分别介绍他们:(1)训练策略现代化; (2)网络架构现代化。
:::
PointNeXt有着和PointNet++ 同样的Set Abstraction和Feature Propagation模块。红框标注处是PointNeXt基于PointNet++ 的改进,包括在模型输入处添加了一层额外的MLP,用于缩放模型架构的Inverted Residual MLP (InvResMLP)模块,以及decoder部分使用与encoder对称的channel size。
在这一章节,我们系统并定量化地研究每种数据增强和优化策略。 本章节中,我们简述我们的研究方法, 具体的训练策略可见后续的消融实验章节。
数据增强是提升神经网络性能的最重要的方法之一,而PointNet++ 使用了简单的数据增强组合如随机旋转,缩放,平移,抖动(jitter)并应用于不同的数据集。最新的一些方法使用了更强的数据增强方法。例如, KPConv[3]在训练时随机的失活(drop)部分颜色信息。 在这篇工作中,我们收集了近期方法中用到的常见数据增强方法,并通过叠加实验定量地研究每个数据集上每种数据增强方法的效果。针对每一个数据集,我们提出了一组改进的数据增强方法,其可以大幅度提升了PointNet++ 的性能。
优化技术主要包含损失函数(loss function),优化器(optimizer),学习率计划器(learning rate schedulers),和超参数(hyperparmeters)。随着机器学习理论的发展,现代化的神经网络可以被理论上更好的优化器(如AdamW)和更好的损失函数(CrossEntropy with label smoothing)训练。Cosine learning rate decay也在近年被大量使用,因为相比 step decay,它的调参更为简单而且效果不会差。在这篇工作中,我们通过叠加实验量化了每种优化策略对PointNet++的影响。同样的,针对每一个数据集,我们提出了一组改进的优化技术可以进一步提高网络性能。
感受野是一个神经网络的重要设计,这里有至少两种方式去增大感受野。
采用更大的半径查询邻居 (radius of ball query),
采用层次化结构
由于PointNet++已经采用了层次化结构,这里我们主要研究不同查询半径对性能的影响。我们发现初始半径对于结果有很大程度上的影响,并且不同数据集上最佳查询半径不同。此外,我们发现相对坐标 Δ p = p j l − p i l \Delta_p = \mathbf{p}_j^l - \mathbf{p}_i^l Δp=pjl−pil 使得网络优化更难,导致性能下降。 因此,我们提出利用相对坐标处以查询半径以实现 Δ p \Delta_p Δp的归一化。改进后的公式(1)如下所示:
x i l + 1 = R j : ( i , j ) ∈ N { h Θ ( [ x j l ; ( p j l − p i l ) / r l ] ) } . ( 2 ) \mathbf{x}_i^{l+1} ={\mathcal{R}}_{j:(i, j) \in \mathcal{N}}\left\{h_\mathbf\Theta\left([\mathbf{x}_j^l; (\mathbf{p}_j^l - \mathbf{p}_i^l) / {r^l]}\right)\right\}. \qquad (2) xil+1=Rj:(i,j)∈N{hΘ([xjl;(pjl−pil)/rl])}.(2)
如果没有归一化,相对坐标 Δ p \Delta_p Δp 的值会非常小(小于半径)。这就要求网络能学习到更大的权重应用于 Δ p \Delta_p Δp 。 这使得优化变得困难,特别是考虑到权重衰减的正则化手段限制了网络权重的大小。
PointNet++ 是一个相对较小的网络,PointNet++ 用于分类和分割的模型规模均小于2M。而现在的网络参数普遍在10M以上[3,4]。 有趣的是,我们发现无论是使用更多的SA模块还是使用更大的channel size都不会显着提高准确性,却反而导致thoughput显著下降。这主要是梯度消失和过度拟合导致的。 因此,在本小节中,我们研究如何以有效且高效的方式扩展PointNet++。
我们提出了Inverted Residual MLP (InvResMLP)模块以实现高效实用的模型缩放。该模块建立在SA模块上,如图一的中部所示。InvResMLP和SA模块的不同点有三个:
为了缓解梯度消失问题 [21](尤其是当网络更深时),我们在模块的输入和输出之间添加了残差连接
为了减少计算量,我们引入了可分离的MLP并加强逐点特征提取。SA中的3层MLPs都是基于邻域特征计算的。 InvResMLP将MLPs分为1层作用于邻域特征(在Grouping层和Reduction层之间),剩下两层作用于点特征(Reduction层后)
引入inverted bottleneck的设计 [23] 将第二个 MLP 的输出通道扩展了 4 倍,以提高特征提取的能力
在PointNet++基础上结合InvResMLP 和图一所示的宏观架构变化,我们提出了PointNeXt。 我们将 stem MLP 的channel大小表示为 C,将 InvResMLP 模块的数量表示为 B。通过改变C和B的值,从而实现PointNeXt在广度和深度层面的缩放。
当 B = 0 时,每个阶段仅使用一个 SA 模块且不使用 InvResMLP 模块。 SA 模块有2个MLP 层,每个 SA 模块内部添加一个残差连接(Residual Conntection)。
当 B ≠ 0 时,InvResMLP 模块被附加在原始 SA 模块之后。 在这种情况下,SA 模块只有1个 MLP,以减少计算资源。 我们 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)
在所有研究的数据集上,PointNeXt超越了现有的SOTA方法,并且在性能和效率上都有很好的表现。 在S3DIS语义分割上,PointNeXt-XL以mIoU/OA/mACC=74.9%/90.3%/83.0%超越了Point Transformer[4]且在推理速度上更快。在ScanObjectNN分类上,PointNeXt-S超越目前的SOTA方法PointMLP[17],且推理速度快十倍。在ShapeNetPart部分分割上,加宽后的模型PointNeXt-S(C=160)达到87.2 Instance mIoU, 超越SOTA CurNet。 值得一提的是,PointNeXt是第一个跨越了87%门槛的基于点的点云识别算法。
:::
表四,表五和表六展示了分别展示了在ScanObjectNN,S3DIS,以及ShapeNetPart数据集上,对于每种训练策略(数据增强,优化方法)和缩放策略的叠加实验结果。
通过叠加实验,我们定量化了每一种策略对模型性能提升的影响,展示出了模型性能一步步提升的过程,对未来的训练策略和缩放策略的研究有一定的启发作用。
对于数据增强,我们有如下结论:
data scaling如S3DIS中使用全部点云作为输入,ScanObjectNN中点云重采样(训练阶段从2048点中随机采样1024点作为输入),可以稳定地提升网络性能
height appending,将逐点高度作为额外的输入特征,可以提升网络性能,特别是物体分类任务
color dropping,随机丢掉颜色信息,可以大幅度提升S3DIS上的分类结果(+5.9 mIoU)
越大的模型青睐更强的数据增强手段,例如S3DIS上随机旋转点云会损失小模型(PointNet++, PointNeXt-S)的精度,但是可以提升大模型(PointNeXt-{B,L,XL})的精度
对于优化方法,我们有如下结论:
AdamW + SmoothCrossEntropy 是一个更强的优化组合
Cosine Learning Rate Decay 与Step Decay相比更易调参,也能达到SOTA的性能
对于缩放策略,我们有如下结论:
提出的每一个模型改进(InvResMLP中的每一个部件,以及宏观网络结构的改进)都提升了模型的性能;
改进后的模型具有更强的可扩展性。 与naive scaling(增大PointNet++的深度和广度)相比,我们的模型具有显著的性能以及推理速度提升。
:::
此外,如表七所示,我们还将训练策略运用到了不同的神经网络上,对训练策略的可泛化性进行了实验。我们发现了改进训练策略的可泛化性。我们的训练策略可以被用在其他算法,例如PointNet[1],DGCNN[9],以及PointMLP[17]上,并显著提升他们在ScanObjectNN分类任务上的效果。
:::
我们使用性能最佳的模型 PointNeXt-XL 作为基线,对模型缩放进行了消融实验。我们在S3DIS Area 5上研究了InvResMLP的每个组件以及stage ratio对性能的影响。同时,我们对比了navide scaling的性能。
:::
在这篇论文中,我们阐明了通过更好的训练和模型缩放策略,经典的PointNet++ 模型可以超越SOTA。我们定量化了每种数据增强和优化技术的效果,并且提出了一系列先进的训练策略。这些策略不仅可以被用于PointNeXt也能用于其他的代表性算法(如PointNet, DGCNN, PointMLP)上,并且显著地提升这些算法的效果。我们进一步基于PointNet++ 微调,提出了一种缩放友好的网络架构,名为PointNeXt。PointNeXt在多个数据集上都展现了SOTA的性能,易扩展性,并且保持了快速的推理速度。我们期待这篇工作的发现能够帮助研究人员更多地关注训练和模型缩放策略,激励更多类似方向的研究。
[1] Qi, C. R., Su, H., Mo, K., & Guibas, L. J. (2017). Pointnet: Deep learning on point sets for 3d classification and segmentation. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 652-660).
[2] Qi, C. R., Yi, L., Su, H., & Guibas, L. J. (2017). Pointnet++: Deep hierarchical feature learning on point sets in a metric space. Advances in neural information processing systems, 30.
[3] Thomas, H., Qi, C. R., Deschaud, J. E., Marcotegui, B., Goulette, F., & Guibas, L. J. (2019). Kpconv: Flexible and deformable convolution for point clouds. In Proceedings of the IEEE/CVF international conference on computer vision (pp. 6411-6420).
[4] Zhao, H., Jiang, L., Jia, J., Torr, P. H., & Koltun, V. (2021). Point transformer. In Proceedings of the IEEE/CVF International Conference on Computer Vision (pp. 16259-16268).
[5] Uy, M. A., Pham, Q. H., Hua, B. S., Nguyen, T., & Yeung, S. K. (2019). Revisiting point cloud classification: A new benchmark dataset and classification model on real-world data. In Proceedings of the IEEE/CVF international conference on computer vision (pp. 1588-1597).
[6] Armeni, I., Sener, O., Zamir, A. R., Jiang, H., Brilakis, I., Fischer, M., & Savarese, S. (2016). 3d semantic parsing of large-scale indoor spaces. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 1534-1543).
[7] Chang, A. X., Funkhouser, T., Guibas, L., Hanrahan, P., Huang, Q., Li, Z., … & Yu, F. (2015). Shapenet: An information-rich 3d model repository. arXiv preprint arXiv:1512.03012.
[8] Li, Y., Bu, R., Sun, M., Wu, W., Di, X., & Chen, B. (2018). Pointcnn: Convolution on x-transformed points. Advances in neural information processing systems, 31.
[9] Wang, Y., Sun, Y., Liu, Z., Sarma, S. E., Bronstein, M. M., & Solomon, J. M. (2019). Dynamic graph cnn for learning on point clouds. Acm Transactions On Graphics (tog), 38(5), 1-12.
[10] Li, G., Muller, M., Thabet, A., & Ghanem, B. (2019). Deepgcns: Can gcns go as deep as cnns?. In Proceedings of the IEEE/CVF international conference on computer vision (pp. 9267-9276).
[11] Hu, Q., Yang, B., Xie, L., Rosa, S., Guo, Y., Wang, Z., … & Markham, A. (2020). Randla-net: Efficient semantic segmentation of large-scale point clouds. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 11108-11117).
[12] Qiu, S., Anwar, S., & Barnes, N. (2021). Semantic segmentation for real point cloud scenes via bilateral augmentation and adaptive fusion. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 1757-1767).
[13] Tang, L., Zhan, Y., Chen, Z., Yu, B., & Tao, D. (2022). Contrastive Boundary Learning for Point Cloud Segmentation. arXiv preprint arXiv:2203.05272.
[14] Qiu, S., Anwar, S., & Barnes, N. (2021). Dense-resolution network for point cloud classification and segmentation. In Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision (pp. 3813-3822).
[15] Qiu, S., Anwar, S., & Barnes, N. (2021). Geometric back-projection network for point cloud classification. IEEE Transactions on Multimedia.
[16] Cheng, S., Chen, X., He, X., Liu, Z., & Bai, X. (2021). Pra-net: Point relation-aware network for 3d point cloud analysis. IEEE Transactions on Image Processing, 30, 4436-4448.
[17] Ma, X., Qin, C., You, H., Ran, H., & Fu, Y. (2022). Rethinking network design and local geometry in point cloud: A simple residual MLP framework. arXiv preprint arXiv:2202.07123.
[18] Xiang, T., Zhang, C., Song, Y., Yu, J., & Cai, W. (2021). Walk in the cloud: Learning curves for point clouds shape analysis. In Proceedings of the IEEE/CVF International Conference on Computer Vision (pp. 915-924).
[19] Qian, G., Hammoud, H. A. A. K., Li, G., Thabet, A., & Ghanem, B. (2021). Anisotropic Separable Set Abstraction for Efficient Point Cloud Representation Learning. arXiv preprint arXiv:2110.10538.
[20] Lai, X., Liu, J., Jiang, L., Wang, L., Zhao, H., Liu, S., … & Jia, J. (2022). Stratified Transformer for 3D Point Cloud Segmentation. arXiv preprint arXiv:2203.14508.
[21] He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 770-778).
[22] Liu, Z., Mao, H., Wu, C. Y., Feichtenhofer, C., Darrell, T., & Xie, S. (2022). A ConvNet for the 2020s. arXiv preprint arXiv:2201.03545.
[23] Sandler, M., Howard, A., Zhu, M., Zhmoginov, A., & Chen, L. C. (2018). Mobilenetv2: Inverted residuals and linear bottlenecks. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 4510-4520).
-The End-
关于我“门”
▼
将门是一家以专注于发掘、加速及投资技术驱动型创业公司的新型创投机构,旗下涵盖将门创新服务、将门-TechBeat技术社区以及将门创投基金。
将门成立于2015年底,创始团队由微软创投在中国的创始团队原班人马构建而成,曾为微软优选和深度孵化了126家创新的技术型创业公司。
如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给我“门”: