PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection阅读
PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection
Abstract
我们提出的方法深度集成了 3D 体素卷积神经网络 (CNN) 和基于 PointNet 的集合抽象,以学习更多有区别的点云特征。它利用了3D体素CNN的高效学习和高质量建议以及基于PointNet的网络的灵活感受野。首先,通过一个Set abstraction层将3D场景下的点云通过3D VoxelCNN转换成一组关键点,以节省后续计算 和编码表示场景特征 。通过 voxel CNN生成的高质量3D proposals,RoI grid pooling 通过set abstraction从关键点到 RoI 网格点的抽象提案特定特征。与CNN池化比,RoI-grid 特征点编码了更丰富的上下文信息,用于准确估计对象置信度和位置。
Introduction
我们使用点体素集成网络从不规则点云中学习更好的 3D 特征。
主要的挑战是,如何有效地结合这两种类型的特征学习方案:稀疏的3D voxel CNN 【Submani- fold sparse convolutional networks】【3d semantic segmentation with submanifold sparse convolutional networks】和PointNet-based set abstraction 成一个统一的框架。直观的解决方案是在每个3D提案中统一采样几个网格点,并采用集合抽象来聚合围绕这些网格点的 3D 体素特征以进行提案细化。然而,这种策略是高度内存密集型的,因为体素的数量和网格点的数量都可能非常大,以达到令人满意的性能。
因此,为了更好地整合这两种类型的点云特征学习网络,我们提出了一个两步策略,第一个 voxel-to-keypoin编码步骤和第二个keypoint-to-grid RoI feature abstraction。
Keypoint问题 :使用voxel CNN with 3D sparse convolution来学习体素特征。为了缓解体素太多的问题 ,通过最远点采样 (FPS) 选择一小组关键点来总结来voxel-wise features信息。每个关键点的特征通过基于 PointNet 的集合抽象对相邻的体素特征进行分组来聚合,以总结多尺度点云信息。
对于第二个keypoint-to-grid RoI feature abstraction。每个box proposal包含grid point locations,提出了一个RoI-grid pooling module。其中每个网格点采用具有多个半径的关键点集抽象层来聚合来自具有多尺度上下文的关键点的特征。然后,所有网格点的聚合特征可以共同用于后续的置信度预测和细粒度框细化。
contributions
提出了PV-RCNN很好用
提出了voxel-to-keypoint编码方案,它通过体素集抽象层将整个场景的多尺度体素特征编码为一小组关键点。这些关键点特征不仅保留了准确的位置,而且还编码了丰富的场景上下文,从而显着提高了 3D 检测性能。
我们为每个建议中的网格点提出了一个多尺度 RoI 特征抽象层,它从场景中聚合更丰富的上下文信息,以实现准确的框细化和置信度预测。
很领先
Related Work
PV-RCNN for Point Cloud Object Detection
3D Voxel CNN
具有 3D 稀疏卷积的Voxel-CNN是3D 检测器SOTA方法常用的,用于有效地将点云转换为稀疏的3D特征量【From points to parts】【Second】,所以我们也用了 as the backbone。
3D voxel CNN
点云被分为L × W × H大小的体素。非空Voxel直接用里面包含的点特征取平均。用3×3×3的3D卷积,把点云转化成1×, 2×,4×, 8× 的下采样大小的特征向量(feature volumes),这样的稀疏特征向量可以看作是一组体素特征向量。
3D proposal generation
通过将编码的 8 倍下采样 3D 特征量转换为 2D 鸟瞰特征图,按照SECOND,PointPillar的方法生成3D proposal。我们沿 Z 轴堆叠 3D 特征体积,得到W/8,H/8大小的鸟瞰特征图。每一类有2倍的W/8,H/8个特征框,每个像素估计0和90两个角度的框。采样3D Voxel CNN的anchor-based方法比PointBased的PointRCNN和STD效果都好。
Discussions
2阶段的SOTA,他们需要从生成的 3D 特征卷或 2D视图中汇集 RoI 特定特征,以进一步优化提案。然而,来自 3D voxel CNN的这些 3D 特征在以下方面存在重大限制。1. 分辨率低,被下采样达8倍。2.即使可以上采样,但依然稀疏。在RoIPooling/RoIAlign中常用的双线性插值/三线性插值只能从非常小的邻域中提取特征。因此,传统的池化方法将获得大部分为零的特征 ,并浪费大量计算和内存用于第 2 阶段的细化。
由于PointNet中的SA操作很强,因此,我们提出将 3D voxel CNN与一系列et abstraction operations相结合,以进行准确且鲁棒的第 2 阶段提案细化。
使用集合抽象操作来池化场景特征体素的一个简单的解决方案是直接将多尺度特征体积聚合到 RoI 网格。然而,由于大量的稀疏体素,这种直观的策略只是占用了大量的 GPU 内存来计算集合抽象中的成对距离。
为了解决这个问题,我们提出了一种两步方法,首先把不同层的voxel编码为数量较少的关键点,把关键点聚合到RoI grids来做 box proposal refinement。
Voxel-to-keypoint Scene Encoding via Voxel Set Abstraction
我们的框架首先将代表整个场景的多尺度特征体素(multi-scale feature voxels )聚合成少量的关键点,作为 3D 体素 CNN 特征编码器和提议细化网络之间的桥梁。
Keypoints Sampling
FPS,关键点均匀分布在非空体素周围,并且可以代表整个场景。(在实际场景中,这个一定是不好的)
Voxel Set Abstraction Module
提出了一个VSA(Voxel Set Abstraction )来将3D CNN feature volumes多尺度语义特征编码到关键点。PointNet++中提出的集合抽象操作被用于聚合体素特征量。关键点的周围点现在是具有由多层 3D 体素 CNN 编码的多尺度语义特征的常规体素,而不是像 [26] 中那样具有从 PointNet 学习到的特征的相邻原始点。
这里细节还是很多的,一会看代码吧。大概就是3D版的pointnet++,然后和pointnet++拼,所以最重要的是怎么拼的。
Extended VSA Module
通过原始点云来弥补8倍下采样后的信息损失,而 2D 鸟瞰图沿 Z 轴具有更大的感受野。原始点云在公式二中被聚合,关键点的鸟瞰图特征are obtained by 通过BEV feature map进行双线性插值。因此,通过连接所有相关特征进一步丰富了 pi 的关键点特征,具有很强的保留整个场景的 3D 结构信息的能力,以提高最终性能。
Predicted Keypoint Weighting
在整个场景由少量关键点编码后,它们将被后续阶段进一步用于进行提案细化。关键点由进一步点采样策略选择,其中一些可能只代表背景区域。直观地说,属于前景对象的关键点应该对提案的准确细化贡献更大,而来自背景区域的关键点应该贡献更少。
因此,我们提出了一个预测关键点加权(PKW)模块,通过点云分割的额外监督来重新加权关键点特征。分割标签可以直接由 3D 检测框注释生成,即通过检查每个关键点是在真实 3D 框的内部还是外部。每个关键点的特征f 的预测特征权重可以表示为

A(·)是3层MLP+sigmod来预测前景的置信度,损失函数是Focal loss。

Keypoint-to-grid RoI Feature Abstraction for Proposal Refinement
在每个3D proposal中使用6 × 6 × 6大小的grid,采用set abstraction operation从关键点特征中聚合网格点的特征。还是用PointNet来聚合的局部特征,我们设置多个半径并聚合具有不同感受野的关键点特征,将它们连接在一起以捕获更丰富的多尺度上下文信息。在从其周围的关键点获得每个网格的聚合特征后,相同 RoI 的所有 RoI-grid 特征可以通过具有 256 个特征维度的两层 MLP 进行矢量化和转换,以表示整体提案。
和STD、pointpillar、partA2比,我们这种通过pointnet聚合特征要好。
3D Proposal Refinement and Confidence Prediction
给定每个box的RoI特征,the proposal refinement network开始学习预测值和真实值的偏差,由两层MLP和两个检测头组成。对于置信度预测分支,我们按照【Gs3d】【Acquisition of localization confidence for accurate
object detection】【partA2】一样,采用 3D RoI 与其对应的 ground-truth 框之间的 3D IoU 作为训练目标。
对于第K个3D RoI,它的confidence目标被归一化到[0,1]:

ground-truth box置信度分支用二元交叉熵损失,框细化分支的框回归目标采用传统的基于残差的方法进行编码,如 [37, 28],并通过平滑 L1 损失函数进行优化,例如Second,partA2。
Experiments
这部分详细介绍了实验的参数,值得一提的是正负样本选择。
对于提案细化阶段,我们随机抽取 128 个提案,正反提案的比例为 1:1,如果提案与 ground-truth 具有至少 0.55 的 3D IoU,则该提案被视为框细化分支的正提案框,否则将其视为否定提案。
数据增强:在训练过程中,我们利用广泛采用的 3D 对象检测数据增强策略,包括沿 X 轴的随机翻转、具有从 [0.95, 1.05] 采样的随机缩放因子的全局缩放、全局旋转从 [−π 4 , π 4 ] 采样的随机角度的 Z 轴。我们还进行了ground-truth采样增强[37],将其他场景中的一些新的ground-truth对象随机“粘贴”到当前的训练场景中,以模拟各种环境中的对象。
