牛津大学,国防科技大学
代码:地址
官方论文讲解:地址
本文提出轻量级高效的大规模点云语义分割算法:RandLA-Net。其单次可处理 1 0 6 10^6 106个点,速度相较于基于图的SPG方法快了200倍,且内存占用较小,语义分割精度SOTA。
现有方法均不能处理大规模的点云数据,局限在较小规模的场景和点云数据上,作者认为主要原因有:
- 点云采样方法计算量大,内存占用高(这个是主因,除了随机采样,常用的采样算法都太慢了)
- 点云局部特征学习器均依赖于kernelisation或graph construction,速度慢
- 对于大规模点云,局部特征学习器感受野不足,不能捕获复杂的几何结构信息。
因此,本文RandLA-Net 针对以上问题做出了如下改进:
-
采用随机采样算法。
相比之下,常用的采样方法有:
- 启发式:最远点采样(O(N2)),反密度采样(O(N));在106规模的点云数据上处理时间分别为200s和10S。而随机采样方法只需要0.04s
- 基于学习的方法:GS、CRS,更慢,分别是12000s和3000G的内存消耗,不能用。
-
提出一种有效的局部特征聚合模块 LocSE,通过逐步增加每个点的感受野来更好地学习和保留大场景点云中复杂的几何结构。
-
采用了基于注意力的点云特征池化方法,较之于maxpooling 精度更高。
最终RandLA-Net在多个大场景点云的数据集上都展现出了非常好的效果以及非常优异的内存效率以及计算效率
当然,使用随机采样是有代价的,随机采样可能会丢弃一些关键点云,造成几何信息的丢失,这也是为什么现有方法使用其他采样方法的原因。作者因此设计了更加高效的局部特征融合机制来补偿。
网络结构
层层降采样:通过堆叠多个局部特征聚合模块和随机采样层来实现RandLA网络
其中,局部特征聚合模块由3个模块组成:局部特征编码,注意力池化,空洞残差块。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BV61v2nm-1598173648704)(C:\Users\phy12321\AppData\Roaming\Typora\typora-user-images\image-20200823163308334.png)]
1.局部特征编码,Local Spatial Encoding
输入N个点,每个输入的点特征为坐标(3)+RGB(d=3)
-
使用KNN算法找到K近邻
-
相对坐标编码:
对每个点i的第k个近邻,计算新的特征:
r i k = M L P ( p i ⊕ p i k ⊕ ( p i − p i k ) ⊕ ∥ p i − p i k ∥ ) ⊕ 代 表 连 接 操 作 \mathbf{r}_{i}^{k}=M L P\left(p_{i} \oplus p_{i}^{k} \oplus\left(p_{i}-p_{i}^{k}\right) \oplus\left\|p_{i}-p_{i}^{k}\right\|\right)\\ \oplus 代表 连接操作 rik=MLP(pi⊕pik⊕(pi−pik)⊕∥∥pi−pik∥∥)⊕代表连接操作
该特征将绝对坐标、相对坐标以及距离中心点的距离使用MLP编码到特征中 -
特征扩增:
对每一个点,将计算得到的r特征和原来的特征f连接在一起得到新的特征: f ^ i k \hat f_i^k f^ik
2.注意力池化,Attentive Pooling
-
根据扩增后的点特征计算注意力权重:
对每一个点,使用权重为W的共享函数g()计算其领域内K个点的权重:
s i k = g ( f ^ i k , W ) \mathbf{s}_{i}^{k}=g\left(\hat{\mathbf{f}}_{i}^{k}, \boldsymbol{W}\right) sik=g(f^ik,W) -
将扩增后的点特征加权求和:
将每一个点的领域内k个点的扩增特征加权求和得到该点的池化后的特征:
f ~ i = ∑ k = 1 K ( f ^ i k ⋅ s i k ) \tilde{\mathbf{f}}_{i}=\sum_{k=1}^{K}\left(\hat{\mathbf{f}}_{i}^{k} \cdot \mathbf{s}_{i}^{k}\right) f~i=k=1∑K(f^ik⋅sik)
所以1、2两个模块(L、A),将输入的点云进行局部K近邻特征的融合,得到了最终的点特征: f ~ i \tilde{\mathbf{f}}_{i} f~i
3.空洞残差块
将多个LocSE,Attentive Pooling以及skip connection连接在一起组成扩张残差块(Dilated Residual Block) 可以达到扩大感受野的效果:
因此本文级联了两个LA模块,再多可能速度就慢了(还有过拟合)。
语义分割网络:
最后,将随机采样以及局部特征聚合模块组合到一起,基于标准的encoder-decoder结构组建了RandLA-Net。
网络的详细结构如下图所示,
可以看到,输入的点云在RandLA-Net中持续地进行降采样以节约计算资源及内存开销。
此外,RandLA-Net中的所有模块都由简单高效的feed-forward MLP组成,因此具有非常高的计算效率。
最后,在解码器中的上采样阶段,不同于广泛采用的三线性插值(trilinear interpolation),论文选择了更加高效的最近邻插值(nearest interpolation),进一步提升了算法的效率。
实验结果
关于采样算法的时间空间效率的实验跳过,总之就是随机采样最快,其他的在大规模点云上速度非常慢。
Rand LA能达到22FPS的速度。
- 语义分割任务:
上面是point-based的方法,精度相对较低,中间是projection-based 的方法,精度相对较高但是模型很大。
下面是本文方法,SOTA。
消失实验用于验证各个模块的作用
本文方法可以用于端到端、实时大规模点云处理任务(实例分割、检测等)