留个笔记自用

Grid-GCN for Fast and Scalable Point Cloud Learning

做什么

首先先得理解点云是什么
点云的概念:点云是在同一空间参考系下表达目标空间分布和目标表面特性的海量点集合,在获取物体表面每个采样点的空间坐标后,得到的是点的集合,称之为“点云”(Point Cloud)。
点包含了丰富的信息,包括三维坐标X,Y,Z、颜色、分类值、强度值、时间等等,不一一列举。《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
一般的3D点云都是使用深度传感器扫描得到的,可以简单理解为相比2维点,点云是3D的采样
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning

做了什么

在3D点云数据的处理前,往往会采用几个方法对数据进行提取
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
第一个是随机点采样,对所有点云中的随机几个点进行采样。第二种是最远点采样,随机取一点后,剩下的点均是以当前点为中心而取的距离最远的采样点,每一次迭代更换一次中心。第三种是覆盖采样,即本文提出的一种方法,后面再进行解释。这里的方法均使用了文中提到的Sampling和Neighbor points querying两种思想,但这两种思想的时间复杂度均很高
而这里则是使用了Grid-GCN,一种基于 Voxel 的快速采样方法
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
如图所示,这里的Grid-GCN用了一组多个的GridConv网格卷积,每个网格转换层处理N个点的数据,将N个点转换成M个特征点,得到最后的特征表示。

怎么做

《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
Grid-GCN的核心结果GridConv,这里分为两个部分,Coverage-Aware Grid Query覆盖感知网格查询(CAGQ)部分和Grid Context Aggregation网格上下文聚合(GCA)部分
首先简单理解一下两个模块各自的功能,CAGQ部分就是从N个点中抽取M个点组作为特征组,每个组包含K个节点和一个组中心(前面做上采样的时候用的上采样参考点就是M组的点中心)。GCA部分就是为每个点组都构造一张图,然后对点中心做信息聚合(其实就是它对组内所有点的attention)
接下来的具体细节。首先是CAGQ模块
首先先设定一个voxel大小(即三维数据大小),将点云中的所有点index
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
这里的x,y,z即点坐标,vx,vy,vz即设定的index大小,然后将点映射到voxel当中,每个voxcel内包含的点数设定为nv,就是将每个点的三维坐标都index到一个规范化的网格中
然后设定Ov为所有非空的voxel集合,从中提取M个voxel作为Oc集合,每个voxel的中心记为vi,定义π(vi)为中心voxel的邻域
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
上图中,v(2,1)的邻域即为以(2,1)为中心的3×3红色矩形区域
然后对每个点vi,取各自邻域中的K个点,计算这K个点的中心作为位置特征代表
所以问题还是转化成了Sampling即取Oc集合和Points Querying从Oc中取K个点
文中提到了两种采样方法,一种是Random Voxel Sampling (RVS),一种是Coverage-Aware Sampling (CAS)
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
首先是RVS。就是普通的随机采样,每个voxel被选中的概率相同
然后是主要提出的CAS
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
主要思想就是上面说的使采样点能占据最大的空间。首先先是从Ov中随机选择M个voxel。从剩下的未选择到的voxel中迭代地选择一个来对当前选择的M个点做一个挑战,来判断增加了这个未选择的voxel会不会使整个占据空间更大
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
这里的vc表示挑战者,vi表示被选中者,λ是邻域中相邻点的数量,Cv是覆盖了当前点的现任的数量。
接下来理解下三个式子的意思,第一个很简单。第二个Hadd是覆盖增益,首先V取自Π(Vc)即所有未选中者,这里的σ(Cv)表示未选中者中某一点它邻域中覆盖的当前点的数量,如果包含了某个选中点,表示这里可能不需要这个未选中者。因为已经有区域囊括了。
第三个式子是Hrmv即更改损失,V是Π(Vi)即所有选中者,表示先寻找选中者中是否存在单一区域(即区域中只有一个选中点,删掉该区域就不覆盖了),然后再计算现有情况的损失
Sampling问题结束后接下来是Points Querying问题
这里也提供了两个方法,一个是Cube Query即随机取K个点,还有一个是K-Nearest Neighbors,这个也很好理解
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
这里就是CAGQ的过程展示,设置M=2,K=5,输入点数为N个灰色点,定义一个voxel大小后给各自方格选择点,这里最多只选择3个点(橙色),然后用三种方法进行选择中心点的结果对比
然后是GCA部分
首先先使用CAGQ的结果构造一个图,定义V是所有中心点组的集和,E表示每个点组中点到组中心的连接
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
更改一下图的特征表示,fc,i~是某一组内的节点,xi就是该点的坐标,M是一个MLP网络,e是一个节点attention函数,A是一个聚合函数。这里的意思就是将每组中所有点与节点的attention计算出来后聚合成节点中心的特征。
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
这里提出了多种节点attention函数,怎么说呢就是套娃attention。一个个简单理解一下,a就是点特征直接加MLP,无视边。b就是边特征和点特征MLP后结合。c就是边特征和点特征和各点与中心点语义信息的结合。d就是最终版,首先考虑了点的特征信息
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
考虑边相关信息,这里还加了attention一样的权重,就是更改边的重要程度
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
所有节点的语义特征经过context pool得到整体语义特征fcxt
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
将fcxt和中心点的语义关系经过MLP
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
最后的计算方法就是这样
《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning

总结

1.从效果上来看,这种方法非常nb《论文阅读》Grid-GCN for Fast and Scalable Point Cloud Learning
展示各种测试结果,不服不行
2.感觉可以结合上一篇FPConv来对中心点特征进行计算

相关文章: