【点云识别】Grid-GCN for Fast and Scalable Point Cloud Learning (CVPR 2020)

Grid-GCN for Fast and Scalable Point Cloud Learning

本文介绍一篇cvpr2020里面关于点云识别的文章。
论文
代码

1. 问题

自PointNet++ 和DGCNN问世以后,基本所有的点云处理模型都要使用采样或近邻查询。

  • Sampling
  • Neighbor points querying

但是,上述两种操作的时间复杂度太高,这篇文章就是解决这个问题。和RandLA-Net有异曲同工之妙。

2. 思想

提出了一种基于 Voxel 的快速采样方法,并依赖 Voxel 做近似而快速的 Points Querying
在这里插入图片描述
其中基础模块GridConv 包含了数据的构建Coverage-aware Grid Query(CAGQ),以及图卷积Grid Context Aggregation(GCA)。

数据构建Coverage-aware Grid Query(CAGQ)
在这里插入图片描述
CAGQ由 Sampling和Neighbor points querying,都是十分费时的操作,如何快速的完成这两项操作也是本文的主要贡献点。

定义voxel 的大小 ( V x , V y , V z ) (V_{x},V_{y}, V_{z}) ,然后将所有点云 ( x , y , z ) (x,y, z) 映射到voxel当中,每个voxel中的点数固定为 n v n_{v} , 进而可以得到每个点的voxel索引 V i d ( u , v , w ) = f l o o r ( x / V x , y / V y , z / V z ) Vid(u,v,w)=floor(x/V_{x},y/V_{y},z/ V_{z})

假设 O v O_{v} 为非空 voxel 集合,需要采样 M 个 voxel O c O_{c} O v O_{v} 。对于每个 voxel v i v_{i} 。定义其周围的 voxel 集合为 π ( v i ) π(v_{i}) ,所有该集合中的点叫做 context points。

所以问题转换为:
Sampling:采样 voxel 集合 O c O_{c} O v O_{v}
Points Querying:从 Context Points 中选取 K 个点;

图卷积Grid Context Aggregation(GCA)
在这里插入图片描述
其实就是各种attention,不是很强的创新。

3. 算法

3.1 Sampling

本文提出了两种基于 voxel 的采样方法

  • Random Voxel Sampling (RVS)
    每个被占据的voxel等概率被抽中,这种随机采样的方式会使点云分布更均匀。
  • Coverage-Aware Sampling (CAS)
    CAS的目的是选取那些可以包含更多被占据空间的center voxels O c O_{c}

CAS使用了一个贪心算法来求解,先随机采样 M 个 voxel,即(RVS)

在这里插入图片描述

3.2 Points Querying

本文在 voxel 基础上来快速寻找邻近点,提供了两种方法:

  • Cube Query
    这是一种近似法,直接在 Context Points 中随机采样 K 个点作为最近邻点。

  • K-Nearest Neighbors
    在 Context Points 中寻找 K-NN,相比在全点云中找 K-NN,这种方法搜索速度会更快。

时间复杂度的对比
在这里插入图片描述

4 实验结果

在这里插入图片描述
分类精度还不错,特意强调他们没有使用voting的方式!!
在这里插入图片描述
大量实验展示自己的速度有多快。期待开源代码!

总结

文章做的很扎实,解决的问题也是之前我注意到的。
值得学习的地方:
1 对采样问题的归纳和总结,给出各个方式。就像DGCNN将PointNet归纳成自己的特例。
2 解决问题的思路和方法很简洁高效
3 充分的实验证明,速度快,精度尚可。

发布了131 篇原创文章 · 获赞 6 · 访问量 6919

猜你喜欢

转载自blog.csdn.net/Orientliu96/article/details/104905159