CVPR 2020——Grid-GCN for Fast and Scalable Point Cloud Learning

论文:https://arxiv.org/abs/1912.02984
源码:https://github.com/Xharlie/Grid-GCN

Abstract

  • 在所有基于点的模型中,图卷积网络(GCN)通过完全保留数据粒度和利用点相互关系来带来显着的性能。
  • 但是,基于点的网络在数据结构上花费大量时间(例如,最远点采样(FPS)和邻居点查询),这限制了速度和可伸缩性。
  • 提出了一种名为Grid-GCN的方法,用于快速和可扩展的点云学习。 Grid-GCN使用一种新颖的数据结构化策略,即Coverage-Aware Grid Query(CAGQ)。通过利用网格空间的效率,CAGQ在降低理论时间复杂度的同时提高了空间覆盖率。
  • 与最远的点采样(FPS)和球形查询等流行的采样方法相比,CAGQ的速度提高了50倍。借助Grid Context Aggregation(GCA)模块,Grid-GCN可以在主要点云分类和分割基准上达到最新的性能,并且运行时间比以前的研究要快得多。
  • 值得注意的是,Grid-GCN使用81920点作为输入在ScanNet上实现了50fps的推理速度。

(一)Introduction

点云数据在自动驾驶,机器人技术和无人机等应用中很受欢迎。目前,LiDAR传感器每秒可以生成数百万个点,从而提供了世界的密集实时表示。许多方法用于点云数据处理。体素模型是将点云转移到空间量化的体素网格并使用体积卷积在网格空间中执行计算的一系列模型。

  • 使用网格作为数据结构化方法,体积方法将点关联到网格中的位置,并且3D卷积核从相邻体素收集信息。
  • 虽然网格数据结构高效,但是必须保持较高的体素分辨率以保持数据位置的粒度。
  • 由于计算和内存使用量随体素分辨率呈三次方增长,因此处理大型点云的成本很高。
  • 另外,由于大多数点云中约有90%的体素是空的,因此不处理任何信息可能会消耗大量的计算能力。

基于点的模型是用于点云数据处理的另一系列模型。

  • 与体素模型相反,基于点的模型可以进行高效的计算,但数据结构效率低下。例如,PointNet直接消耗点云而不进行量化,并在网络的最后阶段汇总信息,因此准确的数据位置是完整的,但计算成本随点数的增加而线性增长。
  • 后来的研究在每一层应用下采样策略,将信息汇总到点组中心,因此逐层提取较少的代表性点(图1(a))。
  • 最近,提出了图卷积网络(GCN)为网络层中的每个点组建立局部图,这可以看作是PointNet ++体系结构的扩展。但是,这种架构会导致较高的数据结构成本(例如FPS和k-NN)。

      

图释: Grid-GCN模型

  • 点云分割的网络架构图。模型包含几个GridConv层,每个层都可以用于下采样或上采样过程。 GridConv层包括两个阶段:
  • 在数据结构化阶段,Coverage-Aware Grid Query(CAGQ)模块实现了有效的数据结构化并提供了用于高效计算的点组,对代表中心进行采样并查询相邻点。
  • 对于卷积阶段,网格上下文聚合(GCA)模块通过聚合局部上下文对点组进行图卷积,在每个点组上构建局部图,并将信息汇总到中心。
  • 结合了体素模型和基于点的模型的优点,以同时实现高效的数据结构和高效的计算。

为了利用点关系,论文还描述了一种新颖的图形卷积模块,名为Grid Context Aggregation(GCA)该模块执行网格上下文池以提取网格邻域的上下文特征,这有利于边缘关系计算而不会增加额外的开销。

在两个任务上演示了Grid-GCN模型:点云分类和分割。

  • 在ModelNet40和ModelNet10上执行分类任务,并实现了93.1%(无投票权)的最新总体准确性,同时平均速度比其他模型快5倍。
  • 对ScanNet 和S3DIS数据集执行了分割任务,与其他模型相比,平均速度提高了10倍。
  • 值得注意的是,模型在20毫秒内处理场景中的81920个点,证明了其在实时大规模基于点的学习中的能力。 (请参阅第5.3.1节)。

(二)Related Work

基于Voxel的3D学习方法 :尽管在数据结构方面很有效,但是体积方法的缺点是计算效率低和数据粒度损失。

用于点云学习的基于点的方法 :基于点的方法中的计算成本随着输入点的数量线性增长。数据结构化的成本已成为大规模点云上的性能瓶颈。

点数据的数据结构策略

  • 大多数基于点的方法使用FPS 来抽样均匀分布的小组中心。 FPS会选择使到所选点的距离最大的点。如果中心数量不是非常少,则该方法将进行O(N2)计算。
  • 随机点采样(RPS)的开销可能最小,但对密度不平衡敏感。论文的CAGQ模块具有与RPS相同的复杂性,但是它一次执行采样和邻居查询,甚至比使用Ball Query或k-NN的RPS更快(请参见表2)
  • KPConv 使用网格子采样在占用的体素中选取点。与论文的CAGQ不同,该策略无法查询体素邻居中的点。
  • CAGQ还具有CoverageAware采样(CAS)算法,可以优化中心选择,与FPS相比,可以实现更好的覆盖范围。
  • Grid-GCN可以通过CAGQ对大量的点进行下采样,并通过考虑局部图中的节点关系来聚合信息。

用于点云学习的GCN:图卷积网络已广泛应用于点云学习。通常会为每个点组构建一个局部图,GCN会根据相关关系汇总点数据。SpecConv通过使用图傅立叶变换来混合点特征。其他研究对中心和节点之间的边缘特征进行建模。使用几何关系,或探索节点之间的语义关系。除了这些功能,论文提出的Grid Context Aggregation module 考虑了覆盖范围并提取了上下文特征以计算语义关系。

(三)Methods

3.1. Method Overview

      

如图1所示,Grid-GCN建立在一组GridConv图层上。每个GridConv层处理N点的信息并将其映射到M点。下采样GridConv(N> M)重复几次,直到了解到最终的特征表示为止。此表示形式可以直接用于分类等任务,或者进一步上采样通过分割任务中的上采样GridConv层(N<M)

GridConv consists of two modules:

  1. 一个涵盖范围的网格查询(CAGQ)模块,该模块从N个点中采样M个点组。每个组包括K个节点点和一个组中心。在上采样过程中,CAGQ直接通过远程连接获取中心,并且仅查询这些中心的节点。
  2. 网格上下文聚合(GCA)模块,可为每个点组构建局部图,并将信息聚合到组中心。 M组中心作为下一层的数据点传递。
3.2. Coverage-Aware Grid Query (CAGQ)

工作:在本小节中,讨论CAGQ模块的详细信息。

  • 给定一个点云,CAGQ旨在有效地构建点云,并简化中心采样和邻居点查询的过程。

  • 为了执行CAGQ,首先通过设置体素大小 ( v x , v y , v z ) \left ( v_{x},v_{y},v_{z}\right ) (vx,vy,vz)对输入空间进行体素化。然后,将每个点映射到体素索引 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(\frac{x}{v_{x}},\frac{y}{v_{y}},\frac{z}{v_{z}}) Vid(u,v,w)=floor(vxx,vyy,vzz)

  • 在每个体素中最多只能存储 n v n_{v} nv点。

  • O v O_v Ov表示所有非空体素。

  • 然后,对M个中心体素 O c ⊆ O v Oc⊆Ov OcOv进行采样。对于每个中心体素 v i v_{i} vi,将其体素邻居 π ( v i ) \pi (v_{i}) π(vi)定义为中心体素邻域内的体素。

  • 在图2d中, π ( v ( 2 , 1 ) ) \pi (v(2,1)) π(v(2,1))是红色框中的3X3体素。

  • π ( v i ) \pi (v_{i}) π(vi)内的存储点为上下文点。由于在上一步中建立了点体素索引,因此CAGQ可以快速检索每个 v i v_i vi的上下文点。

  • CAGQ从每个 v i v_i vi的上下文点中选取K个节点。

  • 将组中节点的重心计算为组中心的位置。 整个过程如图2所示。

在这里插入图片描述

图释: 覆盖感知网格查询(CAGQ)的图示。假设我们要采样M = 2个点组,并为每个组查询K = 5个节点。

  • (a)输入为N点(灰色)。列出了每个占用的体素的体素ID和点数。
  • (b)建立体素点索引,并在每个体素中最多存储 n v = 3 n_v = 3 nv=3点(黄色)。
  • (c)比较不同的采样方法:FPS和RPS优先选择标记体素内的两个中心。
  •    论文的RVS可以随机选择任意两个占用的体素(例如(2,0)和(0,0))作为中心体素。
  •    论文的CAS,体素(0,2)将替换(0,0)。
  • (d)中心体素(2,1)的上下文点是其附近的黄色点(以3×3为例)。
  •    CAGQ从这些上下文点中查询5个点(带有蓝色环的黄色点),然后计算组中心的位置。

这里有两个问题有待解决。 (1)如何采样中心体素 O c ⊆ O v Oc⊆Ov OcOv。(2)从 π ( v i ) \pi (v_{i}) π(vi)的上下文点中选取K个节点。为了解决第一个问题,提出了中心体素采样框架,其中包括两种方法:

1.随机体素采样(RVS)

  • 每个被占用的体素将具有相同的被拾取概率。
  • 在这些中心体素内部计算出的组中心比RPS在输入点上选取的中心分布更均匀。将在第4节中讨论详细信息。

2.覆盖感知采样(CAS)

  • 每个选定的中心体素最多可以覆盖λ个占用的体素邻居。
  • CAS的目标是选择一组中心体素 O c O_c Oc,以便它们可以覆盖最占用的空间

寻求此问题的最佳解决方案需要迭代选择的所有组合。采用贪婪算法来求出最优解:

  • 首先,从 O c O_c Oc中随机选择M个体素作为现有者;
  • 然后从所有未挑选的体素中,每次都迭代选择一个以挑战随机的现有体素。
  • 如果添加此挑战者(同时删除现任者)为我们提供了更好的覆盖范围,则可以用挑战者替换现任者。
  • 对于挑战者 v C v_C vC和现任 v I v_I vI,启发式计算如下:

    其中λ是体素的邻居数量, C V C_V CV是覆盖体素V的现有数目。 H a d d H_{add} Hadd表示如果添加 C V C_V CV(按过度覆盖进行惩罚)的覆盖率增益。 H r m v H_{rmv} Hrmv表示删除 V I V_I VI后的覆盖范围损失。如果 H a d d > H r m v H_{add}> H_{rmv} Hadd>Hrmv,我们用挑战者的体素替换现有的。如果将 β β β设置为0,则每次替换都可以确保提高空间覆盖率。

这些方法的比较将在第4节中进一步讨论。

Node points querying 为了解决第二个问题, CAGQ还提供了两种策略来从 π ( v i ) \pi (v_{i}) π(vi)中的上下文点中选取 K K K个节点。

  • 1.Cube Query:从上下文点中随机选择K个点。与PointNet ++ 中使用的Ball Query相比,当点密度不平衡时,Cube Query可以覆盖更多空间。在图2的场景中,Ball Query从所有原始点(灰色)中采样K个点,并且可能永远不会从只有3个原始点的体素(2,1)中采样任何节点点。
  1. K-Nearest Neighbors: 与传统的k-NN的搜索空间是所有点不同,CAGQ中的k-NN只需在上下文点之间搜索,从而使查询速度大大提高
3.3. Grid Context Aggregation

对于CAGQ提供的每个点组,使用网格上下文聚合(GCA)模块将特征从节点点聚合到组中心。

  • 首先构造一个局部图G(V,E),其中V由CAGQ提供的组中心和K个节点组成。
  • 然后,将每个节点点连接到组中心。
  • GCA投影一个节点特征 f i f_{i} fi f i ~ \tilde{f_{i}} fi~. GCA根据节点和中心之间的边缘关系,计算出所有未融合特征的贡献,将其作为中心特征。形式上,GCA模块可以描述为

    其中, f c , i ~ \tilde{f_{c,i}} fc,i~是来自节点的贡献, x i x_i xi是节点的xyz位置。 M是多层感知器(MLP),e是边缘注意函数,而A是聚集函数。
  • 设计了一个新的边缘注意功能,并进行了以下改进以更好地适应网络体系结构(图4):

在这里插入图片描述
图释:
从节点 n i n_i ni到中心c的计算贡献 f c , i ~ \tilde{f_{c,i}} fc,i~的不同策略。 f i f_i fi x i x_i xi是特征图和 n i n_i ni的位置。 e i e_i ei是从边缘注意函数计算出的 n i n_i ni和c之间的边缘特征。

  • (a)Pointnet ++ 忽略 e i e_i ei
  • (b)基于 n i n_i ni和c之间的低维几何关系计算 e i e_i ei
  • (c)还考虑了中心点与节点之间的语义关系,但是c必须在来自上一层的点之中进行采样。
  • (d) Grid-GCN的地理关系还包括覆盖范围权重。它从所有存储的邻居中合并上下文特征 f c x t f_{cxt} fcxt,以在 e i e_i ei计算中提供语义参考。

Coverage Weight 以前的研究使用中心的 x c x_c xc和节点的 x i x_i xi来将边缘注意力建模为几何关系的函数(图4b)。但是,该公式忽略了来自先前层的每个节点的潜在贡献。应该给与更多来自前几层信息的节点更多的注意。 在图3中说明了这种情况。引入了coverage weight的概念,它的定义是在先前的层中已聚合到节点的点数。该值可以在CAGQ中轻松计算,并且论文认为覆盖权重是计算边缘注意力时的重要功能(请参阅表6中的消融研究)。

Grid Context Pooling 语义关系是计算边缘注意力时的另一个重要方面。

  • 在以前的论文中,语义关系是通过使用组中心的特征 f c f_c fc以及节点的特征 f i f_i fi来编码的,这要求从节点中选择组中心。
  • 在CAGQ中,由于将组中心计算为节点的重心,因此使用网格上下文池,该网格上下文池通过池化从所有上下文点提取上下文特征 f c x t f_{cxt} fcxt,从而充分覆盖了局部图的整个网格空间。

网格上下文池带来以下好处:

  • f c x t f_{cxt} fcxt对虚拟组中心的特征进行建模,允许我们计算中心与其节点之间的语义关系。
  • 即使在某个物理点上选择了组中心, f c x t f_{cxt} fcxt仍然是一种有用的特征表示,因为它覆盖了邻域中的更多点,而不是仅覆盖图中的点。
  • 由于已经将上下文点关联到其在CAGQ中的中心体素,因此没有额外的点查询开销。
  • f c x t f_{cxt} fcxt在本地图中的所有边缘计算之间共享,并且合并是一种轻量级的操作,不需要可学习的权重,这几乎没有引入计算开销。

GCA模块总结在图4d中,边缘注意功能可以建模为

(四)Analysis of CAGQ

为了分析CAGQ的好处,在ModelNet40上测试了在不同条件下不同采样/查询方法的占用空间覆盖率和等待时间。

  • 中心采样方法包括随机点采样(RPS),最远点采样(FPS),随机体素采样(RVS)和覆盖感知采样(CAS)。
  • 邻居查询方法包括球查询,多维数据集查询和K近邻。条件包括不同数量的输入点,点组中的节点号和点组数,分别用N,K和M表示。
  • 在表2和图5中总结了定性和定量评估结果。占位空间覆盖率计算为所有组的节点点所占的体素数与原始N点所占的体素数之比。补充说明中列出了更多条件下的结果。
    在这里插入图片描述
    图5:通过RPS,FPS和CAS可视化显示的采样组中心和所查询的节点。蓝色和绿色的球表示“球查询”。红色方块表示多维数据集查询。球和立方体的体积相同。
       
        1. 在图5a中,通过RPS采样的中心集中在具有更高点密度的区域中,大部分空间未被发现。
        2. 在图5b中,FPS选择的点彼此远离,主要是在3D形状的边缘上,这导致了中心之间的间隙。
        3. 在图5c中,CAS优化了体素选择,并覆盖了75.2%的占用空间。
    在这里插入图片描述表2列出了RPS,FPS,RVS和CAS的空间覆盖百分比。在所有情况下,CAS都领先于空间覆盖(比RPS多30%)。当K较小时,FPS与RVS相比没有优势。
4.1. Space Coverage

可以使CAGQ在空间覆盖范围内受益的因素可总结如下:

  1. RVS不是从N个点采样中心,而是从占用的空间采样体素,因此它对点密度不平衡更具弹性(图5)。
  2. CAS通过进行贪婪的候选替换进一步优化了RVS的结果。保证每次更换都能带来更好的覆盖范围
  3. CAGQ在每个占用的体素中存储相同数量的点。上下文点分布更均匀,从上下文点中选取的K个节点也是如此。因此,该策略减少了由局部区域的密度不平衡引起的覆盖损失。
4.2. Time complexity

表释: CAS比FPS快得多,并且达到了50倍的加速。当输入点云很大时,CAS +Cube查询甚至可以胜过RPS +Ball 查询。这是由于较高的邻域查询速度。由于更好的时间复杂度,RVS + k-NN在所有条件下均处于领先地位,并比FPS + k-NN达到6倍的加速。

(五)Experiments

在多个数据集上评估Grid-GCN:ModelNet10和ModelNet40 用于对象分类,ScanNet和S3DIS用于语义分割。所有实验均在单个RTX 2080 GPU上进行。

5.1. 3D Object Classification

Datasets and settings ModelNet10由10个对象类别组成,具有3991个训练对象和908个测试对象。 ModelNet40包括40个不同的类,其中包含9843个训练对象和2468个测试对象。使用1024个点以及3个空间位置通道作为输入。

Evaluation 在第一层中,特征通道的数量和组中节点的数量有所不同(请参见表6)。结果如表3所示。对于这四个设置,Grid-GCN模型不仅在ModelNet10和ModelNet40数据集上均达到了最先进的性能,而且具有最佳的速度精度权衡。尽管Grid-GCN使用CAGQ模块进行数据结构化,但它的延迟时间与PointNet相似,后者没有数据结构化步骤,但其准确性明显高于PointNet。

5.2. 3D Scene Segmentation

Dataset and Settings 在两个大型点云分割数据集上评估了Grid-GCN:ScanNet 和斯坦福3D大型室内空间(S3DIS)。

  • ScanNet包含1513个扫描的室内场景,每个体素都分为21类。使用1201个场景进行训练,并使用312个场景进行测试。
  • 遵循PointNet ++ [29]中的常规和评估协议,在训练过程中采样了8192个点,每个点有3个空间通道。
  • S3DIS包含6个具有271个房间的大型室内区域。每个点都标记有13个类别之一。
  • 由于区域5是唯一不与其他区域重叠的区域,在区域1-4和6上进行训练,并在区域5上进行测试。在每个划分的区域中,共有4096个点样本用于培训。

Evaluation 报告了ScanNet的整体体素标记准确性(OA)和运行时间延迟。训练了Grid-GCN模型的两个版本,一个完整的模型使用1×K节点,而紧凑模型使用0.5×K节点。结果记录在表4中。

由于分割任务通常比分类模型使用更多的输入点,因此论文在数据结构方面的优势非常突出

  1. 批处理中具有相同数量的输入点(32768)时,Grid-GCN可以使PointNet ++ 4.5倍速运行,同时保持相同的准确性。
  2. 与PointCNN 和A-CNN 等更复杂的模型相比,Grid-GCN为25倍和12倍,分别达到最先进的精度。
  3. 值得注意的是,Grid-GCN可以以50到133 FPS的速度下运行,达到最先进的性能,这是实时应用程序所希望的。

在表5中显示了S3DIS上的定量结果,在图6中显示了可视结果。

  1. GridGCN紧凑版通常比其他具有数据结构的模型快4到14倍。
  2. 值得注意的是,即使与完全没有数据结构的PointNet相比,速度仍是1.6倍,而mIOU的性能却提高了12%。
  3. 对于完整模型,仍然是最快的,并且达到了PVCNN ++的2倍提速,这是一个专注于提速的最新研究。
5.3. Ablation Studies

在ModelNet10和ModelNet40 的实验中,完整模型具有3个GridConv层。

如表6所示,减少了GridConv层的输出要素通道的数量,第一GridConv层中的节点K的数量,以及是否使用Grid上下文池和coverage权重。

  • 一方面,减少来自Grid-GCN full的通道数量可以使Grid-GCN3的速度提高37%。
  • 另一方面,减少K并从Grid-GCN3中删除Grid上下文池并不能给Grid-GCN2带来很大的速度优势,但却会导致准确性下降。
  • 这证明了CAGQ和网格上下文池的效率和有效性。覆盖权重也很有用,因为它几乎不增加延迟,但会提高整体准确性。

5.3.1 Scalability Analysis
通过逐渐增加ScanNet 上的输入点数量来测试模型的可伸缩性。

表释: 在2048点的设置下,两个模型的等待时间相似。但是,当将输入点从4096增加到81920时,Grid-GCN可以达到PointNet ++的11倍加速,这显示了我们模型在处理大规模点云中的主导能力。

(六)Conclusion

  • 提出了Grid-GCN用于快速和可扩展的点云学习。
  • Grid-GCN通过引入CoverageAware网格查询(CAGQ)实现了有效的数据结构和计算。
  • CAGQ通过体素化大大降低了数据构建成本,并为点组提供了整个点云的完整覆盖。
  • 提出了一种图形卷积模块网格上下文聚合(GCA),以将上下文特征和覆盖范围信息纳入计算中。
  • 通过这两个模块,Grid-GCN可以在各种基准上达到最新的准确性和速度。 Grid-GCN具有卓越的性能和效率,可用于大规模实时点云处理应用程序。

橘子:熟悉MXNET框架的小伙伴,私聊一下,嘻嘻~

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值