[CVPR 2020] RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds

RandLA-Net是针对大规模点云语义分割的高效神经网络,通过随机采样和局部特征聚合克服了现有方法在处理大量点云时的计算和内存瓶颈。局部特征聚合模块利用注意力机制捕捉复杂结构,实现高精度分割。实验表明,RandLA-Net在Semantic3D和SemanticKITTI数据集上超越了现有技术,同时具备更高的计算效率和可处理点云规模。

零、概要

论文研究了大规模点云有效的语义分割方法。大多数现有的方法,由于耗时的采样技术和计算量大的前/后处理步骤,只能在小规模点云上训练和操作。论文中提出了RandLA网络,一种高效、轻量级的神经网络架构,用于直接对大规模点云进行逐点语义预测。论文方法的关键是使用随机点抽样,而不是复杂的采样方式。尽管随机抽样有显著的计算和内存效率,但也会偶尔丢弃一些关键特征。为了克服这一问题,作者引入了一个新的局部特征聚合(local feature aggregation)的模块,来逐步增加每个3D点的感受野,从而有效保留了集合细节。大量的实验表明,RandLA网络可以在一次操作中除了100万个点,比现有方法快200多倍。而且,RandLA网络在两个大规模基准数据集Semantic3D和SemanticKITTI上明显优于最先进的语义分割方法。

一、论文的出发点和贡献

对大规模3D点云进行有效地语义分割是实现实时智能系统(自动驾驶、增强现实等)的一项基本且必不可少的能力。一个关键的挑战是深度传感器采集的元素点云通常是不规则的、非结构化的、无序的。最近几年已有不少基于学习的点云工作被提出,但存在以下问题:

  • PointNet网络学习了每个点的特征和全局特征,虽然在计算上是有效的,但其忽略的局部特征
  • 一些考虑局部特征的网络,如基于neighbouring feature pooling(PointNet++, PointWeb等), graph passing(DGCNN, ClusterNet等), kernel-based convolution(PointConv, KPConv等)和attention-based(PCAN, PATs等)的方法,随机在分类和语义分割等任务上取得了令人印象深刻的结果,但几乎这些方法都局限于非常小规模(~4000 points或者1m x 1m 的block)的点云,不能直接扩展到大的点云(百万点或者200m x 200m):
    • 上述网络中的点云下采样方法(FPS, IDIS等)存在计算开销大或者内存效率低等
    • 大多数局部特征学习器依赖于计算昂贵的kernelisation或者graph construction, 无法处理大点云
    • 现有的局部特征学习器由于感受野有限,无法捕捉到复杂的结构
  • 一些用于处理大规模点云的方法SPG, FCPN, PCT等方法虽然可以达到相当高的分割精度,但是其预处理和体素化的步骤计算量太大,无法用于实时应用程序。

论文的贡献:

  • 分析和比较了现有的采样方法,确定随机采样是在大规模点云上进行有效学习的最合适的组成部分。
  • 提出了一个有效的局部特征聚合(local feature aggregation)模块,通过逐步增加每个点的感受野来保持复杂的局部结构
  • 在多个大规模的基准测试(benchmarks)中证明了,相对于baselines有显著的内存和计算增益,并超过了最先进的语义分割方法。

论文提出的RandLA网络是一种内存和计算效率高的神经网络,它能够一次直接处理大规模3D点云,而不需要预处理或者后处理步骤,如体素化、块分割和图构造等; 同时,在两个大规模基准数据集Semantic3D和SemanticKITTI上明显优于最先进的语义分割方法。

二、论文的方法

2.1 下采样

论文中提出的下采样方法就是随机下采样:从原始的N个点中均匀的选取K个点。到此,论文下采样方法介绍完毕。

当然,这里的重点是作者在理论和经验上分析了一下现有下采样方法存在的问题。现有的下采样方法大致被分成两类:启发式下采样和基于学习的下采样。

  • 启发式下采样
    • Fathest Point Sampling(FPS),收敛好,时间复杂度O(N^2), N为点云的数量。在处理10^个点时,在GPU上大约需要200s。
    • Inverse Density Importance Sampling(IDIS): 为了从N个点中选择K个点,IDIS算法根据每个点的密度对N个点进行重排序,然后选择Top K个点。时间复杂度近似为O(N)[论文是这么写的,还没有太明白为什么是O(N),排序依据是O(NlogN)了]。根据经验表明,处理10^6个点需要10s,对于实时系统仍旧太慢;而且它对噪声多更加敏感。
    • Random Sampling(RS): 从原始的N个点中均匀的选取K个点。时间复杂度O(1),与输入总点数无关,即时间常数。在处理10^个点时需要0.004s。
  • 基于学习的下采样(下面的三个方法对应的论文我也没有细读过,在这里只介绍RandLA网络中提及的缺点)
    • Generator-based Sampling(GS): 在推理阶段,为了使学习到的子集与原始集合相匹配,通常使用FPS算法,增加了计算量。从10^6个点采样10%需要1200s。
    • Continuous Relaxation based Sampling(CRS): 当用一次矩阵乘法同时对所有新点进行采样时,会导致一个较大的权重矩阵,从而导致无法负担的内存开销。据估计,需要300GB以上的内存对10^6个点采样到10%。
    • Policy Gradient based Sampling(PGS): 作者通过经验发现,将PGS用于大型点云,则网络很难收敛。

从而可以看到,随机抽样计算效率高(time),而且不需要额外的内存进行计算(memory)。因此,作者得出结论,与现有方案相比,随机抽样是迄今为止处理大规模点云最合适的方法。

随机抽样有缺点吗 ??

有的,随机抽样会导致需要有用的点特征被丢弃。为了克服这个问题,作者提出了一个强大的局部特征聚合模块,这也就是下一章节要介绍的内容。

2.2 局部特征聚合(Local Feature Aggregation)

局部特征聚合模块对每个点进行提取特征,它包括以下三个模块:local spatial encoding(locSE), attention pooling和dilated residual block, 如Figure3所示。

在这里插入图片描述

  • Local Spatial Encoding(LocSE)

    LocSE模块主要是对位置(x, y, z)的编码。如Figure3的左上角所示,该模块的输入是 N x (3 + d)的向量P,N表示有N个点,3表示(x, y, z)信息,d表示每个点特征的维度。以N个点中的第i个点为例,说明此模块是如何处理的。设第i个点的位置信息为 p i ∈ R 3 p_i \in \mathbb R^3 piR3, 特征信息为 f i ∈ R d f_i \in \mathbb R^d fiRd

    首先对i个点进行K近邻搜索,得到K个紧邻点的位置信息 { p i 1 . . . p i k . . . p i K } \lbrace p_i^1...p_i^k...p_i^K \rbrace { pi1...pik...piK}和特征信息 { f i 1 . . . f i k . . . f i K } \lbrace f_i^1...f_i^k...f_i^K \rbrace { fi1...fik...fiK}。对第k个近邻的位置信息进行如下操作:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值