VoxelRCNN

PDF: Voxel R-CNN: Towards High Performance Voxel-based 3D Object Detection
CODE: https://github.com/djiajunustc/Voxel-R-CNN

一、大体内容

现有基于Point-based的目标检测方法可以保留精确点的位置,具有更好的性能,但是由于无序的存储方式,计算量很大。而Voxel-based方法更容易提取特征,但是由于输入点云被划分成网格,精度会降低。分析现有实验发现,位置精确的原始点对于高性能的3D目标检测并不重要,粗粒度的体素也足以完成高精度检测,而将3D特征转换为BEV表示会造成很大的精度损失,基于此设计一个速度与voxel-based方法一样快,同时精度与point-based方法一样高的3D检测框架Voxel R-CNN,其包括3D backbone、2D BEV RPN网络以及检测头三部分Voxel ROI pooling直接从voxel特征上提取ROI特征,用于3D框进一步优化。在KITTI和Waymo Open数据集上性能均达到SOTA。

二、贡献点

  • 设计了VoxelRCNN框架,在速度和精度取得了很好的平衡,能够实现高性能3D目标检测。
  • 提出Voxel ROI pooling直接从voxel特征上提取ROI,加速了后续特征融合过程。

三、细节

3.1 如何发现BEV对Voxel-based方法精度影响较大

首先给出了Voxel-based和point-based以及Voxel-RCNN的大体架构如下图所示

然后对比分析了SECOND(Voxel-based)PV-RCNN(Point-based)方法,

  • SECOND
    SECOND是one-stage网络,将3D体素特征转换为BEV特征后,借助2D BackBone和RPN实现目标检测

  • PV-RCNN
    PV-RCNN是two-stage网络,VSA模块将多尺度特征集成到关键点上,借助关键点信息来保存3D结构信息,再利用ROI-grid pooling模块提取候选框特征(边界框refinement模块),最后再用两个分支实现目标检测

为了验证边界框refinement和3D结构信息对于检测性能的影响,在SECOND 的2D backbone网络上增加一个检测头,且利用Rotated RoI Align提取 RoI特征。由表1知:直接在BEV特征上添加BEV检测头可提高0.6% AP,这验证了边界框refinement的有效性,同时也证明了BEV表示的能力相当有限。由表2可知,keypoint特征提取的VSA模块比较耗时。

3.2 Voxel ROI Pooling

VoxelRCNN主要包含以下三部分

  • 3D backbone
  • 2D BEV RPN网络
  • Voxel RoI pooling 和检测头
    3D backbone、2D BEV RPN网络以及检测头和前面介绍的一些3D目标检测方法差不多,第三块中的VoxelROI Pooling是VoxelRCNN的关键模块,其以高效的方式保留了3D结构信息,为后续预测提供了更丰富的特征。Voxel RoI pooling可以直接从三维体素特征中聚合空间上下文特征,主要包含以下四个部分。

3.2.1 体素作为点处理(Voxel Volumes as Points)

3D非空体素直接以其中心点坐标以及相应的特征来表示。

3.2.2 体素查找(Voxel query)

由于体素有规律地排列在量化空间中,因此访问领域很方便,本文提出voxel query来查找最近邻voxel(之前大多是ball query),通过设置曼哈顿距离来采样周围的K个voxel。对于2个体素\(a=(i_{\alpha}, j_{\alpha}, k_{\alpha}),b=(i_{\beta}, j_{\beta}, k_{\beta})\),两个voxels之间的曼哈顿距离计算公式为:

相较ball query查找,voxel query查找的计算复杂度由O(N)降为O(K)。

3.2.3 提取区域池化(Voxel RoI Pooling Layer)

首先把候选框划分成G x G x G的均匀子体素(sub-voxel),其中心点就是网格点。由于3D特征volumes的稀疏性,非空体素大约只占3%,不能直接对每个子体素进行max-pooling。因此,作者采用pointnet模块,将周围体素聚集到网格点进行特征提取,距离的度量还是采用曼哈顿距离,实现上在3D backbone的最后两层提取体素特征,并且在每一层使用了两个不同的曼哈顿距离对不同尺度体素进行分组,最后将这些不同层不同尺度的体素特征进行融合来获得RoI特征

3.2.4 加速聚合特征(Accelerated Local Aggregation)

这一步是在特征融合时进行加速,进一步提高检测效率。
假设共\(M\)个子体素格点,每个格点需要查找\(K\)个邻域,其特征为\(C+3\),C表示体素特征,3表示3维相对坐标,融合后特征向量为\(c\)
原始的PointNet模块的时间复杂度为\(O(M \times K \times (C+3) \times c)\),而Accelerated Local Aggregation将体素特征和相对坐标分开后单独处理,在执行voxel query前,对体素特性应用一个FC层,计算复杂度为\(O(N \times C \times c)\);进行voxel query后,我们对相应体素进行位置特征转换,此时间复杂度为\(O(M \times K \times 3 \times c)\),总的计算复杂度为\(O(N \times C \times c + M \times K \times 3 \times c)\)。由于\(M \times K \leq N\),所以计算复杂度变小,检测速度提高。

四、效果

  • 在KITTI数据集上效果

  • 在Waymo Open数据集上效果

  • 各模块的速度

posted @ 2024-03-26 21:50  半夜打老虎  阅读(40)  评论(0编辑  收藏  举报