
#百人创作先锋团#RandLA-Net:大规模点云的高效语义分割 原创
@[toc]
RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds
https://arxiv.org/abs/1911.11236
做了什么
深度神经网络对点云进行处理不可避免地需要在保证不丢失有用的点特征的前提下对这些点进行下采样。而大规模的点云跨度可达数百米,包含数十万、百万个点,采样的时间和空间复杂度都较高。
这篇论文
- 分析并比较了现有的点云采样方法,得出随机采样(Random Sampling)是最适合大规模点集这一结论。
- 设计了一个局部特征聚合器(Local Feature Aggregation),它通过逐步增加每个点的感受野来避免随机采样导致的特征丢失。
随机采样和局部特征聚合器结合使得整个网络(RandLA-Net)在效率和效果之间实现了极好的平衡,在多个大型点云基准中超越了当时最先进的语义分割方法。
RandLA-Net
RandLA-Net整体结构
首先使用共享参数的MLP层提取输入点云每个点的特征。然后使用四个编码和解码层来学习每个点的特征。最后,使用三个全连接层和一个Dropout层来预测每个点的语义标签。
网络输入
输入为$N\times d_{in}$的大规模点云。$N$为点的数量;$d_{in}$为每个输入点的特征维数。
编码层
RandLA-Net中使用了四个编码层,以逐步减小点云的大小并增加每点特征维数。每个编码层由局部特征聚合模块和随机采样组成。
下采样保留25%的点云:
$$
\left(N \rightarrow \frac{N}{4} \rightarrow \frac{N}{16} \rightarrow \frac{N}{64} \rightarrow \frac{N}{256}\right)
$$
同时,每层逐点特征维数是逐渐增加的,以保留更多信息:
$$
(8 \rightarrow 32 \rightarrow 128 \rightarrow 256 \rightarrow 512)
$$
解码层
在上述编码层之后使用四个解码层。对于解码器中的每一层,我们首先使用KNN算法为每个查询点(编码阶段对应的四倍于解码层输入点的点集)找到输入点中的一个最近邻点,然后通过最近邻插值对点特征集进行上采样(使查询点的特征等于距离它最近的输入点的特征)。接下来,通过跳跃连接将上采样特征与编码层生成的中间特征拼接起来,然后将共享参数的MLP应用于拼接的特征。
最终语义预测:
每个点的最终语义标签通过三个共享参数的全连接层和Dropout层获得。
$$
(N, 64) \rightarrow(N, 32) \rightarrow\left(N, n_{\text {class }}\right)
$$
其中$n_{class}$是类别数。
随机采样(RS)
点云采样方法有启发式的Farthest Point Sampling (FPS)、Inverse Density Importance Sampling (IDIS);基于学习的Generator-based Sampling (GS)、Continuous Relaxation based Sampling (CRS)、Policy Gradient based Sampling (PGS)。其中FPS、IDIS和GS的计算量过大;CRS的内存占用过大;PGS则很难学习。
RandLA-Net采用的则是随机采样(Random Sampling,RS):均匀地从$N$个点中选取$K$个点。相比于其他方法,如图:
随机采样具有以下两个优点
(1)具有显著的计算效率,因为它与输入点的总数无关;
(2)不需要占用太多的内存。
这些优点使得随机采样非常适合处理大规模点云的采样。然而,随机采样可能导致许多有用的点特征被丢弃。为了克服这个问题,RandLA-Net还精心设计了一个的局部特征聚合(Local Feature Aggregation)模块。
局部特征聚合(LFA)模块
局部特征聚合(LFA)模块是一个残差模块。主要由局部空间编码(Local Spatial Encoding,LocSE)和注意力池化(altentive pooling)构成。
由于大规模的点云将会被下采样,因此希望显著地增加每个点的感受野,这样即使一些点被删除,输入点云的几何细节也更有可能被保留。为了达到这个目的,RandLA-Net将两个LocSE和altentive pooling堆叠起来:
两个LocSE和attentive pooling(LA)单元能够扩大感受野:
红色3D点在第一次LA后能获得蓝色点和绿色点的特征信息,而蓝色点和绿色点将包含其近邻点的特征信息。在第二次LA时,红色点将获得蓝色点和绿色点及其近邻点信息,这意味着感受野扩大。
(1) 局部空间编码(LocSE)单元
给定一个点云$\boldsymbol{P}$和每个点的特征(例如,原始RGB、法线,或中间学习的特征),局部空间编码单元显式地嵌入所有邻近点的x-y-z坐标:
这样相应的点特征总是知道它们的相对空间位置。这使得LocSE单元可以明确地观察到点云的局部几何模式,从而有利于整个网络有效地学习复杂的局部结构。具体而言,这个单元包括以下步骤:
寻找近邻点:
使用KNN算法从输入的所有点中获取其中第$i$个点$p_i$的近邻点。
点相对位置编码
对于每一个$p_i$的K近邻点${p_i^1\cdots p_i^k\cdots p_i^K }$,将点相对位置编码如下:
其中$p_i$和$p_i^k$为点与其第$k$个近邻点的x-y-z位置,$\oplus$为连接操作,$||\cdot||$计算中心点与近邻点的欧式距离。
点特征增强
将每一个近邻点$p_i^k$的特征$\boldsymbol{f}_i^k$与已编码的相对点位置特征$\boldsymbol{r}_i^k$连接起来,得到增强特征向量$\hat{\boldsymbol{f}}_i^k$
最终,LocSE单元的输出是一个近邻点特征新集:
$$
\hat{\mathbf{F}}{i}={\hat{\mathbf{f}}i^k}=\left{\hat{\mathbf{f}}{i}^{1} \cdots \hat{\mathbf{f}}{i}^{k} \cdots \hat{\mathbf{f}}_{i}^{K}\right}
$$
包含了以$p_i$为中心的局部集合信息。
(2) 注意力汇聚(Attentive Pooling)单元
这个单元用于聚合局部点特征集。
现有的工作常使用max/mean pooling来硬汇聚点的相邻特征,这可能导致大部分信息丢失。相比之下,RandLA-Net使用注意力机制来自动学习重要的局部特征。主要包括以下步骤。
计算注意力得分:
给定局部特征集$\hat{\mathbf{F}}{i}=\left{\hat{\mathbf{f}}{i}^{1} \cdots \hat{\mathbf{f}}{i}^{k} \cdots \hat{\mathbf{f}}{i}^{K}\right}$。使用一个共享参数的函数$g()$来学习每个特征的注意力得分:
基本上,函数$g()$由一个共享MLP和一个softmax组成,其中$\boldsymbol{W}$共享参数MLP的可学习参数。
加权求和:
学习到的注意力分数可以看作是一个自动选择重要特征的 soft mask。对得到的局部特征的加权求和:
总而言之,给定输入点云$\boldsymbol{P}$,对于第$i$点$p_i$,LocSE和注意力汇聚单元学习聚合其$K$个最近点的几何模式和特征,并最终生成一个富含信息的特征向量$\tilde{f}_{i}$
.
实验
RandLA-Net的效率
RandLA-Net使用随机采样且所有组件都使用共享参数的MLP实现,因此时间和空间复杂度都较低。
语义分割结果
消融实验
(1) 去掉LocSE
(2∼4) 将 attentive pooling 用 max/mean/sum pooling 替代
(5) 仅使用一个LocSE和attentive pooling
