CVPR2020:Grid-GCN用于快速和可扩展的点云学习
Grid-GCN for Fast and Scalable Point Cloud Learning
论文地址:
代码地址:https://github.com/xharlie/Grid-GCN
摘要
由于点云数据的稀疏性和不规则性,直接消耗点的方法已经成为一种流行的方法。在所有基于点的模型中,图卷积网络(GCN)充分保留了数据粒度,充分利用了点之间的相互关系,使得性能显著提高。然而,基于点的网络在数据结构(如最远点采样(FPS)和邻居点查询)上花费了大量的时间,这限制了速度和可扩展性。本文提出了一种快速、可扩展的点云学习方法gridgcn。gridgcn采用了一种新的数据结构策略:覆盖感知网格查询(CAGQ)。通过利用网格空间的效率,CAGQ提高了空间覆盖率,同时降低了理论时间复杂度。与最远点采样(FPS)和球查询等常用的采样方法相比,CAGQ的速度提高了50倍。通过网格上下文聚合(GCA)模块,gridgcn在主要点云分类和分割基准点上实现了最先进的性能,运行速度比以前的研究快得多。值得注意的是,网格GCN在ScanNet上使用81920个点作为输入,其推理速度达到50FPS。
1.介绍
点云数据在自动驾驶、机器人和无人驾驶飞行器等应用程序中非常流行。目前,激光雷达传感器每秒可以产生数百万个点,提供密集的实时世界表示。点云数据处理采用了多种方法。体积模型是将点云转换为空间量化体素网格并使用体积卷积在网格空间中执行计算的模型家族[28,45,28]。使用网格作为数据结构方法,体积法将点与网格中的位置关联起来,三维卷积核从相邻体素收集信息。虽然网格数据结构是有效的,但需要高体素分辨率来保持数据位置的粒度。由于计算和内存使用量随着体素分辨率的增加而呈立方形增长,处理大型点云的成本很高。此外,由于大多数点云大约90%的体素是空的[51],不处理任何信息可能会消耗大量的计算能力。另一类用于点云数据处理的模型是基于点的模型。与体积模型相比,基于点的模型能够有效地进行计算,但却存在数据结构不完善的问题。例如,PointNet[29]直接消耗点云而不进行量化,并在网络的最后阶段聚集信息,因此精确的数据位置是完整的,但是计算成本随着点数的增加而线性增长。后来的研究[30,47,41,37,46]在每一层应用一个下采样策略,将信息聚集到点群中心,从而逐层提取较少的代表性点(图1(a))。最近,图卷积网络(GCN)[32,39,21,49]被提出为网络层中的每个点组建立一个局部图,这可以看作是PointNet++体系结构的扩展[30]。然而,这种架构带来了很高的数据结构成本(例如FPS和k-NN)。刘等[27]表明,三种流行的基于点的模型[23,47,41]的数据结构成本高达总计算成本的88%。在本文中,还通过展示数据结构开销在可伸缩性方面的趋势来研究这个问题。
本文介绍了网格GCN,融合了体积模型和基于点的模型的优点,实现了高效的数据结构和高效的计算。如图1所示,模型由几个GridConv层组成,用于处理点数据。每一层包括两个阶段:一个是对代表中心进行采样并查询相邻点的数据结构阶段;一个是在每个点组上建立局部图并将信息聚合到中心的卷积阶段。为了实现高效的数据结构,设计了覆盖感知网格查询(CAGQ)模块,该模块1)加速中心采样和邻居查询,2)为学习过程提供更完整的点云覆盖。数据结构效率通过体素化实现,计算效率仅通过对占用区域进行计算获得。将在第4节展示CAGQ出色的速度和空间覆盖率。为了利用点关系,还描述了一个新的图卷积模块,称为网格上下文聚合(GCA)。该模块执行网格上下文池以提取网格邻域的上下文特征,从而在不增加额外开销的情况下有利于边缘关系计算。在两个任务上演示了网格GCN模型:点云分类和分割。具体而言,在ModelNet40和ModelNet10上执行分类任务[43],达到了最先进的整体准确率93.1%(无投票),同时平均比其模型快5倍。还对ScanNet[8]和S3DIS[1]数据集进行了分割,平均速度比其模型快10倍。值得注意的是,模型通过在20ms内处理一个场景中的81920个点,展示了实时大规模点学习能力。
2.相关工作
基于体素的三维学习方法为了扩展卷积神经网络模型[12,13]在二维图像上的成功,Voxnet及其变体[28,43,38,4,6]开始将点云或深度图传输到占用网格并应用体积卷积。为了解决立体增加的内存使用问题,OctNet[31]为占用的体素构造了树结构,以避免在空白空间进行计算。虽然在数据结构方面很有效,但体积法的缺点是计算效率低和数据粒度损失。基于点的点云学习方法是由[29,30]首次提出的,通过使用池来聚集点特征来追求置换不变性。为了更好地捕捉局部特征,提出了核相关[2,42]和扩展卷积[36]等方法。为了解决排序的模糊性,PointCNN[23]预测局部点的顺序,RSNet[14]从不同的方向依次消耗点。在基于点的方法中,计算量随着输入点数的增加而线性增长。然而,数据结构化的成本已经成为大规模点云的性能瓶颈。
点数据的数据结构策略大多数基于点的方法[30,23,37,26]使用FPS[10]对均匀分布的组中心进行抽样。FPS拾取最大化到选定点的距离的点。如果中心数不是很小,则采用O(N2)计算。近似算法[9]可以是O(NlogN)。随机点抽样(RPS)的开销最小,但对密度不平衡很敏感。CAGQ模块具有与RPS相同的复杂度,但是一次性执行采样和邻居查询,这甚至比使用Ball Query或k-NN的RPS更快(见表2)。KPConv[36]使用栅格子采样来拾取被占用体素中的点。
与CAGQ不同,该策略不能查询体素邻域中的点。CAGQ还有一个覆盖感知采样(CAS)算法,可以优化中心选择,从而比FPS获得更好的覆盖。或者,SO Net[22]构建了一个自组织映射。KDNet[15]使用kd-tree来划分空间。PATs[48]使用Gumble子集抽样来代替FPS。SPG[19]使用聚类方法将点作为超级点进行分组。这些方法要么速度慢,要么需要结构预处理。SPLATNet[33,11]中的晶格投影比体素空间保留了更多的点细节,但速度较慢。像体素网[51,20]这样的研究通过在每个体素内部使用点网[29]并应用体素卷积,将基于点的方法和体积法相结合。一个并行的高速模型PVCNN[27]使用了类似的方法,但没有逐步减少每层中的点数。然而,Grid-GCN可以通过CAGQ对大量点进行下采样,并通过考虑局部图中的节点关系来聚集信息。
点云学习的GCN图卷积网络已经广泛应用于点云学习[41,18,17]。通常为每个点群建立局部图,GCN根据点之间的关系聚集点数据。SpecConv[37]通过使用图形傅立叶变换来混合点特征。其研究对中心和节点之间的边缘特征进行建模。其中,[47,26,17,41,49]使用几何关系,而[6,39]则探讨节点之间的语义关系。除了这些特征外,提出的网格上下文聚合模块考虑覆盖率,并提取上下文特征来计算语义关系。
3. Methods
3.1. Method Overview
如图1所示,Grid-GCN构建在一组GridConv层上。每个GridConv层处理N个点的信息并将映射到M个点。下采样GridConv(N>M)重复几次,直到最终特征表示被学习。此表示法可直接用于任务,如分类或由分段任务中的上采样GridConv层(N<M)进一步上采样。GridConv由两个模块组成:
1)覆盖感知网格查询(CAGQ)模块,从N个点中抽取M个点组。每个组包括K个节点和一个组中心。在上采样过程中,CAGQ通过远程连接直接获取中心,并且只查询这些中心的节点点。
2)一个网格上下文聚合(GCA)模块,为每个点组构建一个本地图,并将信息聚合到组中心。M组中心作为下一层的数据点传递。为了清楚起见,在附录中列出了所有的符号。
3.2. Coverage-Aware Grid Query (CAGQ)
在图2d中,π(v(2,1))是红框内的3X3体素。把π(vi)中的存储点称为上下文点。由于前面建立了点体素索引,CAGQ可以快速检索出每个vi的上下文点,然后,CAGQ从每个vi的上下文点中选取K个节点,计算出一个组中节点的重心,作为组中心的位置。整个过程如图2所示。这里还有两个问题需要解决。(1) 如何采样中心体素Oc⊆Ov。(2) 如何从π(vi)的上下文点中选取K个节点。为了解决第一个问题,提出了中心体素采样框架,包括两种方法:
第一,随机体素采样(RVS):每个被占用的体素将具有相同的被拾取概率。在这些中心体素内计算的组中心比RPS在输入点上拾取的中心分布更均匀。
第二,覆盖感知采样(CAS):每个选定的中心体素最多可以覆盖λ占用的体素邻居。CAS的目标是选择一组中心体素Oc,使其能够覆盖最大的占用空间。寻找这个问题的最佳解决方案需要迭代所有选择的组合。
3.3. Grid Context Aggregation
对于CAGQ提供的每个点组,使用一个网格上下文聚合(GCA)模块从节点点到组中心聚集特征。首先构造了一个局部图G(V,E),其中V由CAGQ提供的群中心和K节点组成。然后将每个节点点连接到组中心。
边缘注意功能e已经被许多先前的研究所探索[47,6,39]。在这项工作中,设计了一个新的边缘注意功能,并进行了以下改进,以便更好地融入网络架构(图4):
覆盖权重
以前的研究[47,26,17,41,49]使用中心的χc和节点的χi来模拟边缘注意作为几何关系的函数(图4b)。但是,公式忽略了前一层中每个节点点的基本贡献。直观地说,对于前一层信息较多的节点,应该给予更多的关注。在图3中演示了这个场景。有鉴于此,引入了覆盖权重的概念,被定义为在前一层中聚集到一个节点的点数。这个值在CAGQ中很容易计算,认为覆盖权重是计算边缘注意的一个重要特征(见表6中的消融研究)。
网格上下文池
语义关系是计算边缘注意的另一个重要方面。在以往的文献[6,39]中,语义关系是利用群中心的特征fc和节点点的特征fi来编码的,这就要求从节点中选择群中心。在CAGQ中,由于群中心被计算为节点的重心,提出了网格上下文池,通过从所有上下文点集中提取上下文特征fcxt,充分覆盖了局部图的整个网格空间。
4. Analysis of CAGQ
为了分析CAGQ的好处,在ModelNet40上测试了不同条件下不同采样/查询方法的占用空间覆盖率和延迟[43]。中心采样方法包括随机点采样(RPS)、最远点采样(FPS)、随机体素采样(RVS)和覆盖感知采样(CAS)。邻域查询方法包括Ball查询、多维数据集查询和K-最近邻查询。条件包括不同的输入点数、一个点群中的节点数和点群的个数,用N、K和M表示。将定性和定量评估结果汇总在表2和图5中。报告的占用空间覆盖率计算为所有组的节点点占用的体素数与原始N个点所占体素数的比值。
4.1. Space Coverage
在图5a中,RPS采样的中心集中在点密度较高的区域,使得大部分空间未被覆盖。在图5b中,FPS选择彼此相距较远的点,主要位于3D形状的边缘,这导致了中心之间的间隙。在图5c中,CAS优化了体素选择,并覆盖了75.2%的占用空间。表2按RPS、FPS、RVS和CA列出了空间覆盖率的百分比。CAS在所有情况下都是空间覆盖率最高的(比RPS多30%)。当K值较小时,FPS与RVS相比没有优势。有利于CAGQ空间覆盖的因素可以总结如下:
•RVS不是从N个点采样中心,而是从占用空间中采样中心体素,因此对点密度不平衡更具弹性(图5)。
•CAS通过贪婪的候选替换进一步优化RVS的结果。每一次更换都保证能得到更好的覆盖。
•CAGQ在每个占用的体素中存储相同数量的点。上下文点分布更均匀,从上下文点中拾取的K节点点也分布得更均匀。因此,该策略减少了局部区域密度不平衡造成的覆盖损失。
4.2. Time complexity
在表1中总结了不同方法的时间复杂度。表2显示了潜伏期的经验结果。看到CAS的速度比速度快得多。当输入点云较大时,CAS+Cube查询的性能甚至可以超过RPS+Ball查询。这是由于较高的邻域查询速度。由于具有更好的时间复杂度,RVS+k-NN在所有条件下都处于领先地位,比FPS+k-NN提高了6倍。
5. Experiments
在多个数据集上评估网格GCN:ModelNet10和ModelNet40[43]用于对象分类,ScanNet[8]和S3DIS[1]用于语义分割。根据PVCNN[27]的约定,报告了每一个精度级别的延迟和性能。从发表的论文或作者那里收集其模型的结果。所有的延迟结果都在相应的批大小和输入点数下报告。所有的实验都是在一个RTX 2080 GPU上进行的。
5.1. 3D Object Classification
数据集和设置
对ModelNet10和ModelNet40数据集执行分类任务[43]。ModelNet10由10个对象类组成,训练3991个,测试对象908个。ModelNet40包括40个不同的类,有9843个训练对象和2468个测试对象。按照PointNet[29]的约定准备数据,使用1024个点和3个空间位置通道作为输入。一些研究使用标准[30,16]、八叉树[40]或kd树作为输入,而[26,25]则使用投票进行评估。
评估
为了比较具有不同精度和速度水平的不同模型,使用4种不同的设置来训练网格GCN,以平衡性能和速度(详情见第5.3节)。变量是指第一层的特征通道数量和组中节点的数量(见表6)。结果见表3。不经表决报告结果。对于所有四种设置,网格GCN模型不仅在ModelNet10和ModelNet40数据集上实现了最先进的性能,而且具有最佳的速度精度权衡。虽然Grid-GCN使用CAGQ模块进行数据结构,但延迟与PointNet相似,没有数据结构步骤,但其精度明显高于PointNet。
5.2. 3D Scene Segmentation
数据集和设置
在两个大规模点云分割数据集上评估网格GCN:ScanNet[8]和Stanford 3D大尺度室内空间(S3DIS)[1]。ScanNet由1513个扫描的室内场景组成,每个体素被标注在21个类别中。按照[8]中的实验设置,使用1201个场景进行训练,312个场景用于测试。按照PointNet++[30]中的例程和评估协议,在训练期间采样8192个点,每个点采样3个空间通道。S3DIS包含6个大型室内区域,共有271间客房。每个点都被标记为13个类别中的一个。由于5区是唯一没有与其区域重叠的区域,按照[35,23,27]在1-4和6区进行训练,并在5区进行测试。在每个分段中,抽取4096个点进行训练,采用[23]中的评价方法。
评估
报告了ScanNet的整体体素标记精度(OA)和运行时延迟[8]。训练了两个版本的网格GCN模型,一个是使用1×K节点点的完整模型,另一个是使用0.5×K节点点的紧凑模型。结果见表4。由于分段任务通常使用比分类模型更多的输入点,因此在数据结构方面的优势变得突出。在批量输入相同数量(32768个)的情况下,网格GCN输出速度PointNet++4.5×同时保持相同的精度水平。与PointCNN[23]和A-CNN[16]等更复杂的模型相比,Grid-GCN分别快25倍和12倍,同时达到了最先进的精度。值得注意的是,gridgcn可以以最先进的性能以50到133 FPS的速度运行,这是实时应用所需要的。一个流行的模型MinkowskiNet[5]没有报告整体的准确性,因此没有把放在表中。但github示例显示Scannet上的延迟为103ms。
在表5中显示了S3DIS的定量结果,图6显示了可视化结果。精简版GridGCN通常比其具有数据结构的模型快4到14倍。值得注意的是,即使与完全没有数据结构的PointNet相比,仍然快了1.6倍,同时在mIOU上获得了12%的性能增益。对于完整模型,仍然是最快的,并且比PVCNN++[27]实现了2倍的加速,这是一项专注于提高速度的最新研究。
消融研究
在ModelNet10和ModelNet40上的实验[43],完整模型有3个GridConv层。如表6所示,对GridConv层的输出特征通道数、第一个GridConv层中的节点数K以及是否使用网格上下文池和覆盖权重进行了缩减。一方面,减少Grid-GCNfull的信道数可以使Grid-GCN3的速度提高37%。另一方面,减少K并从Grid-GCN3中删除网格上下文池并不会给Grid-GCN2带来太多的速度优势,但会降低准确性。还通过逐步增加ScanNet上的输入点数量来测试模型的可伸缩性[8]。将模型与PointNet++[30]进行比较,后者是最有效的基于点的方法之一。将结果报告在表7中。在2048点的设置下,两个模型的延迟是相似的。然而,当输入点从4096增加到81920时,Grid-GCN在PointNet++上实现了11倍的加速,显示了模型在处理大规模点云方面的优势。