PV-RCNN++网络结构

PV-RCNN++(PV-RCNN-V2)

论文:
https://arxiv.org/pdf/2102.00463v1.pdf
代码:
https://github.com/open-mmlab/OpenPCDet

1. 介绍

PV-RCNN-v2 是基于 PV-RCNN 进行改进的,包括两点,
第一个是 sectorized proposal-centric (proposal中心扇形化)策略,用于生成更具代表性和更均匀分布的关键点,
第二个是VectorPool aggregation,以取代 set abstraction,更好地聚合局部点云特征,并且资源消耗也少的多。
通过这两项重大修改,PV-RCNN-v2运行速度是v1版本的两倍多,同时在Waymo数据集上也有更好的性能。

了解 V2 之前需要对 V1 的网络结构有所了解;
可以参考这两篇博客:
PV-RCNN论文翻译
PV-RCNN之Roi-grid pooling详解

2. 贡献

(1) PV-RCNN-v1采用了两种新的操作,即 voxel-to-keypoint 场景编码和 keypoint-to-grid RoI 特征提取,将 point-based 和 voxel-based 的特征学习策略的优点深入融合到一个统一的3D检测框架中。
(2)PV-RCNN-v2具有更好的性能、更少的资源消耗和更快的运行速度,通过 sectorized proposal-centric 关键点采样策略实现,以更快的速度获得更多代表性的关键点,此外,还采用了新颖的 VectorPool aggregation 技术,以更少的资源消耗和更有效的表示方式在大量中心点上实现局部聚合。
(3) PV-RCNN-v2 在Waymo开放数据集上以10 FPS的推理速度在150m×150m检测区域获得最好的效果。

3. PV-RCNN++ 网络结构

如下图所示,用 Sectorized Proposal-Centric 的关键点采样和 VectorPool 聚合来代替 pvrcnn-v1 框架中的对应部分。
Sectorized Proposal-Centric 关键点采样策略比 PV-RCNN-v1 中使用的最远点采样(FPS)快得多,并且能够得到更具代表性的关键点。
VectorPool aggregation 用来处理点云的大规模局部特征聚合,用空间矢量化表示来编码相对点位置。
在 PV-RCNN-v2 框架中的 VSA 和 RoI-grid pooling ,相比 v1 大大减少了内存/计算消耗,同时有着更好的检测性能。
PV-RCNN++网络结构_第1张图片

3.1 Sectorized Proposal-Centric Sampling for Efficient and Representative Keypoint Sampling

在 PV-RCNN-v1 中,使用最远点采样(FPS)算法从原始点云中对关键点进行采样,有两个缺点:
(i) FPS算法由于是 O(n2) 复杂度而耗时,尤其是对于大规模点云采样时,阻碍了训练和推理速度;
(ii)FPS算法将生成大量背景关键点,这些关键点对第二阶段的网络回归是没有帮助,因为 RoI-grid 操作只能检索 proposal 周围的关键点。
为了解决这些缺点,提出了 SPC 采样算法。
PV-RCNN++网络结构_第2张图片

      如上图所示,Sectorized Proposal-Centric (SPC) 关键点采样操作是从 proposal 的周围区域均匀采样关键点,比FPS采样算法快得多。
具体地说,将原始点云表示为 P,并将3D proposal 的中心和尺寸分别表示为 C 和 D。为了更好地生成关键点集,我们设定了候选关键点P’ 为所有 proposals 的相邻点集,
在这里插入图片描述
其中 r(s) 是表示 proposal 最大扩展半径的超参数,dxj、dyj、dzj 是 3D proposal 的大小。以 proposal 的中心为圆心对关键点进行过滤,将关键点采样的候选数量从 P 大幅减少到 P’,这不仅降低了后续关键点采样的复杂性,而且关键点比较集中,可以更好的对 proposal 周围的区域进行编码。

     为了进一步并行加速的关键点采样过程,我们将 proposal-centric 点集 P’ 分布到以整个场景中点为中心的 s 个扇区中,第 k 扇区的点集可以表示为 Sk’,
在这里插入图片描述
其中 k 属于 {1, 2…, s},arctan(pyi,pxi) 表示正X轴和 以点(pxi,pyi)结束的射线之间的角度。第 k 个扇区从 Sk’ 中采样关键点的个数为 (Sk’ / P’) * n。这些 s 个子任务可以在GPU上并行执行,从而关键点采样的规模则从 P’ 减少到 Sk’。
因此,SPC关键点采样大大减少了关键点采样的规模,这不仅有效地加快了关键点采样过程,而且将关键点集中到3D proposal 的邻域,提高了关键点特征表示的能力。

SPC可以概括为:

  1. 首先筛选 以 roi中心为圆心, 最长边+1.6 为半径的范围内的点;
  2. 然后 根据公式 (arctan(pyi, pxi) + np.pi) * (num_sectors / 2np.pi) 得到每个点所属于的扇区;
  3. 每个扇区采样的点数等于 (落在该扇区内的点数 / 第一步筛选后的总点数) * 需要采样的点数
  4. 利用 fsp 并行运算对每个扇区进行采样。

     需要注意的是,文中提出的基于扇区并行化的关键点采样与下图中使用随机分割的FPS点采样不同,因为我们的策略保留了采样关键点的均匀分布,而随机分割可能会破坏FPS算法的均匀分布特性。
PV-RCNN++网络结构_第3张图片

局部关键点抽样策略的比较
     要从每个Sk’ 中采样特定数量的关键点,有以下几种方法:FPS、随机并行FPS、随机采样、体素化采样、覆盖率采样,它们会导致非常不同的关键点分布(见图6)。我们观察到,FPS算法可以均匀分布整个区域的关键点,而其他算法无法分布类似的关键点。表7显示,FPS均匀分布的性能明显优于其他关键点采样算法。
PV-RCNN++网络结构_第4张图片

3.2 Local vector representation for structurepreserved local feature learning from point clouds

     PV-RCNN-v1在 VSA 和 RoI-grid pooling 中采用 SA 进行局部特征聚合,对于点云的大规模局部特征聚合,SA 操作是非常耗时和耗费资源的。因此,在PV-RCNN-v2框架中,提出了用于从点云进行局部特征聚合的 VectorPool 聚合操作,以实现更准确、更高效的 3d 对象检测。

对于 RoI grid pooling SA操作的局限性
     假设 RoI-grid pooling 模块中,有 100 个proposal,网格大小为 6, 则有 21600(6x6x6x100) 个网格点,每个点的特征维度为 Cin,通过共享参数的 MLP,生成大小为 21600 * Cout 的点特征,当局部邻域较大时,空间复杂度和计算都是非常大的,因此,PV-RCNN-v1中消耗了大量GPU内存, 限制了其在计算和内存资源有限的轻量级设备上运行的能力。此外, SA 操作中的 maxPooling 丢弃了局部点云的空间分布信息,损失了点云局部聚集特征的表示能力。

局部向量法用于保持局部结构特征的学习
     为了从局部点云邻域中提取更多信息量的特征,提出了一种新的局部特征聚合操作,即 VectorPool 聚合,它保留了局部邻域的空间点分布,并且比 SA 占用更少的内存/计算资源。在每个不同的局部邻域中使用单独的核权重和特征通道,以生成对位置敏感的特征,然后将这些通道拼接起来,来表示局部点特征的空间结构。

     具体地说,将输入点的坐标和特征表示为 P={(pi, fi) | i∈{1,…,M}}, 关键点(N个局部邻域的中心)表示为 Q = {qi | i∈{1,…,N}}。
为了减少 VectorPool 聚合的计算量,首先将逐点特征 fi (特征通道数为Cin)转化为更紧凑的无参数方案表示形式 fi’(特征通道数为Cr),
在这里插入图片描述
其中 Cr1 是输出特征通道,Cin=n×Cr1(实际就是将 Cin 拆成 n 个 Cr, 然后相加为一个 Cr,以减少输入点云的特征通道数)。
式(13)就是将 n 个 Cr 特征通道相加成一个输出特征通道Cr,将特征通道减少 n 次,可以有效地减少后续处理的资源消耗。

上述公式用代码表示非常简单,即
features = features.view(N, -1, Cr).sum(dim=1)

     为了生成位置敏感的特征,我们将关键点q 其周围空间邻域分割为nx×ny×nz密集体素,如下所示,
PV-RCNN++网络结构_第5张图片
式中(rx,ry,rz)=(pj− qk)表示点pj在该局部立方邻域(以qk为中心)中的相对位置,l 是以 qk 为中心的相邻立方空间的边长,ix、iy、iz分别是沿X、Y、Z轴的体素索引,以表示该局部立方空间的特定体素。然后,将每个体素内点的相对坐标和逐点特征平均为该局部体素的位置特定特征,如下所示V’,
在这里插入图片描述
其中 v={1,2,…,nx×ny×nz},nv表示某个体素内点的数量。

     由于不同局部体素的点分布不同,这些不同位置的特征可能代表非常不同的局部特征。因此,与 SA 中使用共享参数MLP对局部特征进行编码不同,我们建议使用单独的局部核权重对不同的局部体素特征进行编码,以捕获位置敏感特征为U’,
在这里插入图片描述
其中E(·)是结合相对位置 ri’ 和特征 fi’ 的操作,有几个选项(包括concatenation、PosPool(xyz或cos/sin))(如表10所列)。Wv 是用通道 Cr2 编码局部体素(ix,iy,iz)特定特征的可学习核权重,不同位置具有不同的核权重,用于学习位置敏感的局部特征。
PV-RCNN++网络结构_第6张图片
     最后,我们根据(ix,iy,iz)的空间顺序直接对局部体素特征U’(ix,iy,iz)进行排序,并将它们的特征顺序 拼接 起来,生成最终的局部向量表示,即
在这里插入图片描述
其中,U通过简单地将不同位置的特征分配到其相应的特征通道来对保留结构的局部特征进行编码,保留了以qk为中心的相邻空间中带有空间结构的局部特征,该局部向量表示最终将使用另一个MLP进行处理,以将局部特征编码到Cout特征通道以进行后续处理。

你可能感兴趣的:(深度学习,计算机视觉,机器学习)