RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds CVPR 论文笔记 2020

牛津大学,国防科技大学

代码:地址

更加详细的论文翻译:地址

本文提出轻量级高效的大规模点云语义分割算法:RandLA-Net。其单次可处理10610^6个点,速度相较于基于图的SPG方法快了200倍,且内存占用较小,语义分割精度SOTA。

现有方法均不能处理大规模的点云数据,局限在较小规模的场景和点云数据上,作者认为主要原因有:

  1. 点云采样方法计算量大,内存占用高(这个是主因,除了随机采样,常用的采样算法都太慢了)
  2. 点云局部特征学习器均依赖于kernelisation或graph construction,速度慢
  3. 对于大规模点云,局部特征学习器感受野不足,不能捕获复杂的几何结构信息。

因此,本文RandLA-Net 针对以上问题做出了如下改进:

  1. 采用随机采样算法。

    相比之下,常用的采样方法有:

    • 启发式:最远点采样(O(N2)),反密度采样(O(N));在106规模的点云数据上处理时间分别为200s和10S。而随机采样方法只需要0.04s
    • 基于学习的方法:GS、CRS,更慢,分别是12000s和3000G的内存消耗,不能用。
  2. 提出一种有效的局部特征聚合模块 LocSE,通过逐步增加每个点的感受野来更好地学习和保留大场景点云中复杂的几何结构。

  3. 采用了基于注意力的点云特征池化方法,较之于maxpooling 精度更高。

最终RandLA-Net在多个大场景点云的数据集上都展现出了非常好的效果以及非常优异的内存效率以及计算效率

当然,使用随机采样是有代价的,随机采样可能会丢弃一些关键点云,造成几何信息的丢失,这也是为什么现有方法使用其他采样方法的原因。作者因此设计了更加高效的局部特征融合机制来补偿。

网络结构

层层降采样:通过堆叠多个局部特征聚合模块和随机采样层来实现RandLA网络

RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds CVPR 论文笔记 2020

其中,局部特征聚合模块由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个近邻,计算新的特征:
    rik=MLP(pipik(pipik)pipik) \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 代表 连接操作
    该特征将绝对坐标、相对坐标以及距离中心点的距离使用MLP编码到特征中

  • 特征扩增:

    对每一个点,将计算得到的r特征和原来的特征f连接在一起得到新的特征:f^ik\hat f_i^k

2.注意力池化,Attentive Pooling

  • 根据扩增后的点特征计算注意力权重:

    对每一个点,使用权重为W的共享函数g()计算其领域内K个点的权重:
    sik=g(f^ik,W) \mathbf{s}_{i}^{k}=g\left(\hat{\mathbf{f}}_{i}^{k}, \boldsymbol{W}\right)

  • 将扩增后的点特征加权求和:

    将每一个点的领域内k个点的扩增特征加权求和得到该点的池化后的特征:
    f~i=k=1K(f^iksik) \tilde{\mathbf{f}}_{i}=\sum_{k=1}^{K}\left(\hat{\mathbf{f}}_{i}^{k} \cdot \mathbf{s}_{i}^{k}\right)

所以1、2两个模块(L、A),将输入的点云进行局部K近邻特征的融合,得到了最终的点特征:f~i\tilde{\mathbf{f}}_{i}

3.空洞残差块

将12两个模块组合在一起(L+A)然后级联多个LA模块,可以达到扩大感受野的效果:

RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds CVPR 论文笔记 2020

因此本文级联了两个LA模块,再多可能速度就慢了(还有过拟合)。此外还添加了一个skip connection作为空洞残差块。

实验结果

关于采样算法的时间空间效率的实验跳过,总之就是随机采样最快,其他的在大规模点云上速度非常慢。

Rand LA能达到22FPS的速度。

  • 语义分割任务:

RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds CVPR 论文笔记 2020

RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds CVPR 论文笔记 2020

上面是point-based的方法,精度相对较低,中间是projection-based 的方法,精度相对较高但是模型很大。

下面是本文方法,SOTA。

消失实验用于验证各个模块的作用

RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds CVPR 论文笔记 2020

本文方法可以用于端到端、实时大规模点云处理任务(实例分割、检测等)