voxel R-CNN

基本介绍

稿件名称: Voxel R-CNN: Towards High Performance Voxel-based 3D Object Detection
pdf地址: https://arxiv.org/pdf/2012.15712.pdf
学术单位: 中国科学技术大学**1 、 港中文2 ** CAS Key Laboratory of GIPAS, EEIS Department

提出的新观点: 精确地3D位置点坐标不是必然的对于3D目标检测的精度而言,粗略的体素网格方法也能提供很好的精度

方法类型: 基于体素的俩阶段方法
实验数据集: KITTI 和 Waymo
Baseline:PV-RCNN、SECOND
主要指标: accuary and efficirncy

分析认为: PV-RCNN 和 SECOND 指标的提升主要取决于俩部分内容:(1)3D结构信息 (2)建议框精简
其中(1)BEV的表示形式不是足够精确地对于3D空间的目标框预测 仍然需要3D结构信息 (2)PV特征是非常耗费计算资源的
框架设计:
image.png
Voxel R-CNN 包括三部分:3D主干网络特征提取器、2D网络框架以及RPN、体素ROI-pooling以及2D目标检测头
其中3D主干网络特征提取器为:
image.png
然后使用HighCompression将3D特征处理为BEV:
然后在BEV下,采用2Dbackbone进行特征提取,由于还没有看过代码,因此不知道这个地方与PV-RCNN是否相同,在PV-RCNN中这个地方采用了BRV直接RPN的的做法,而此处是2Dbanckcone+RPN。
随后将由RPN生成的3D建议框(高度固定)在3D backbone的share feature上投影, 裁剪出了3D的建议框,由于建议框内大小不统一,因此采用了一个voxel roi-polling的方式进行归一化处理,最后经过一个2D检测头,得到置信度以及Box参数。
创新集中在voxel roi-polling

Voxel Roi Polling

3D 体表示方式 voxel volumes as points

3D 体(3D 建议框)表示为: 非空体素网格的中心点集合以及其相应的特征向量。其中,中心点表示为:
${ \nu_i = (x_i, y_i, z_i) }{i=1}^N$ 特征向量表示为:${\phi_i}{i=1}^N$
关于中心点是如何计算得到的,需要看代码。

Voxel query

目的:为了找到在3D体中的3D体素网格
这个地方类似于ball query,只不过距离公式用的不一样,这里采用了曼哈顿距离公式,即针对体素${\alpha = (i_\alpha , j_\alpha , k_\alpha) }$和体素 ${\beta = (i_\beta, j_\beta, k_\beta)}$,
其距离公式可以表示为:
${D_m(\alpha, \beta) = |i_\alpha - i_\beta|+ |j_\alpha - j_\beta| + |k_\alpha - k_\beta|}$
Here, a threshold is set to keep voxel that have specific number. After then, a random sample method is applied to fixed quantity. (随机采样到固定数量)
cosume compare:(计算量对比)【time complexity】
这里的主要区别在于ball query会计算到与自己不相邻的体素网格,而voxel query则只计算相邻的,因而作者这里说时间消耗会小一点。俩种方法都会将体素数量随机采样到固定数量。这个过程加速了group_operation操作。
image.png

Voxel ROI Polling Layer

Firstly, it divided a region proposal into ${G \times G \times G}$规则的子体素块 体素的中心点作为了子3D体的网格点
Here, according to 3D volumes are extremetry sparse (non-empty voxels account for 3% spaces), so we can not utilize max pooling. The specific method is :
(1) exploit voxel query to group a set of neighboring voxels ${\Gamma_i = { \nu_i^1 , \nu_i^2, … , \nu_i^K }}$
There, it is similar as ball query. So the result is ids that we choice.
(2) use pointnet to aggregate the neighboring voxel features ${\eta_i = max_{k =1,2 , \ldots , k} { \psi ([\nu_i^k - g_i ; \phi_i^k]) }}$ 其中, ${\nu_i - g_i}$是相对位置, ${\phi_i^k}$是${\nu_i^k}$所对应的特征向量
代码验证部分:选择来自3Dbackbone的最后俩层做voxel roi pooling, 并且对每一个阶段采用俩个threshold. 然后将来自不同阶段和不同尺度的特征拼接起来从而获得最终的聚合特征。

Accelerated local aggregation.

assume that there are r ROIs and G is the grid size. so we get the total grid points is $M = r G^3$
K voxels are grouped for each grid point. (sample number)
grouped feature vector: C+3 C-dim voxel feature 3-dim coordinates
Computation FLOPs: $(O(M \times K \times (C+3) \times C’))$
final: $(O(M \times K \times 3 \times C’ + N \times C \times C’))$ ???
image.png

Welcome to my other publishing channels