Voxel-RCNN

Voxel R-CNN: Towards High Performance Voxel-based 3D Object Detection

Abstract

3D对象检测的最新进展在很大程度上取决于如何表示3D数据,即基于体素或基于点的表示。 许多现有的高性能三维探测器都是基于点的,因为这种结构可以更好地保留精确的点位置。 尽管如此,由于无序存储,点级特性会导致较高的计算开销。 相反,基于体素的结构更适合于特征提取,但由于输入数据被划分为网格,往往产生较低的精度。 在本文中,我们采取了一个稍微不同的观点-我们发现,对原始点的精确定位对于高性能的3D对象检测来说并不是必不可少的,粗体素粒度也可以提供足够的检测精度。 考虑到这一观点,我们设计了一个简单但有效的基于体素的框架,名为Voxel R-CNN。 通过在两阶段方法中充分利用体素特征,我们的方法获得了与最先进的基于点的模型相当的检测精度,但仅占计算成本的一小部分。Voxel R-CNN由3D主干网络、2D鸟瞰区域建议网络和检测头组成。 设计了一个体素RoI pooling,直接从体素特征中提取RoI特征,以便进一步细化。 对广泛使用的KITTI数据集和最近的Waymo开放数据集进行了广泛的实验。 我们的结果表明,与现有的基于体素的方法相比,Voxel R-CNN在保持实时帧处理速率的同时,即在NVIDIA RTX 2080Ti GPU上以25FPS的速度提供了更高的检测精度。 代码将很快提供。

Introduction

主要分为两个大类:基于体素的和基于点的。VoxelNet, Second和PointPillars将点云划分为规则的网络,这对于CNN更实用,对于特征提取更高效,因为它的优越的记忆局部性。但是缺点就是体素常常导致准确位置信息的丢失。目前表现最好的3D检测器主要是基于点的,这是将原始点作为输入,通过迭代的采样和组提取一系列点(PointNet)。比较好的基于点的方法(STD, Point R-CNN, 3DSSD, PV R-CNN)都在不同的基准上(KITTI, nuScenes, Waymo开源数据集)排名靠前。

新观点: 对于准确定位的目标定位,原始点云的精确位置信息不是必须的.

现存体素方法的不足: 3D特征转化为BEV视角时没有保存3D结构语境信息.
voxel R-CNN_struct2

Voxel R-CNN的结构:

  • 一个3Dbackbone;

  • 一个2Dbackbone 之后跟着一个RPN;

  • 带有voxel RoI pooling操作的检测头;

在设计体素RoI Pooling时,我们采用邻居感知的属性(有利于更好的内存局部性)来提取相邻的体素特征,并设计一个局部特征聚合模块以进一步加速。

Reflection on 3D Object Detection

Revisiting

Second

second_struct1
Second是一个基于体素的一阶段目标检测器.送入体素数据到3D backbone网络,用于特征提取.之后的3D特征卷转化为BEV展示.最后在利用一个2D的backbone以及RPN进行目标检测.

PV-RCNN

PV-RCNN对Second的方法进行了延展,增加了关键点分支用于保存3D结构信息. 引入Voxel Set Abstraction,在关键点中聚合多尺度的3D体素特征.通过RoI Pooling进一步从关键点中提取每个三维区域提案的特征,以进行框细化。

Analysis

second与pv-rcnn之间的区别:

  • second采用的是一阶段,pv-rcnn采用的是二阶段;
  • PV-RCNN中的关键点保存了3D结构信息, Second直接利用BEV进行了检测.

Summary:

  • 3D结构对于3D目标检测非常重要;
  • point-voxel 特征交互非常耗时;

Voxel R-CNN Design

Voxel RoI pooling

Voxel Volumes as Points

一系列非空点:
{ v i = ( x i , y i , z i ) } i = 1 N { ϕ i } i = 1 N , 性 质 : 索 引 , 体 素 大 小 以 及 点 云 边 界 \{v_i = (x_i, y_i, z_i)\}_{i = 1}^{N}\\ \{\phi_{i}\}_{i = 1}^{N}, 性质:索引, 体素大小以及点云边界 \\ {vi=(xi,yi,zi)}i=1N{ϕi}i=1N,:,
Voxel Query
voxel R-CNN_voxel_query
这个query point首先量化为一个体素,之后通过索引平移能够高效的得到临近的体素。我们在voxel query中利用曼哈顿距离,并且在一个距离阈值上采样最多K个voxels。

Voxel RoI Pooling Layer.

我们将近邻体素的特征集成到网格点进行特征提取。具体来说,给定一个网格点g_i,我们首先利用voxel query来分组一系列的近邻体素{v_i^1, v_i2,…,v_iK}。之后我们利用Point net模块聚合近邻体素特征。

其中,
η i = m a x k = 1 , 2 , . . . , K { Ψ ( [ v i k − g i ; ϕ i k ] ) } v i − g i : 表 示 相 对 坐 标 ϕ i k : 表 示 v i k 的 体 素 特 征 Ψ : 表 明 是 一 个 M L P m a x : 表 示 m a x p o o l i n g η i : 聚 合 的 特 征 向 量 \eta_i = max_{k = 1, 2, ..., K}\{\Psi([v_i^k - g_i;\phi_i^k])\}\\ v_i - g_i: 表示相对坐标\\ \phi_i^k: 表示v_i^k的体素特征\\ \Psi: 表明是一个MLP\\ max:表示max pooling\\ \eta_i: 聚合的特征向量\\ ηi=maxk=1,2,...,K{Ψ([vikgi;ϕik])}vigi:ϕik:vikΨ:MLPmax:maxpoolingηi:
我们利用Voxel RoI Pooling从3D backbone网络中最后两个阶段的3D特征中提取体素特征.对于每个阶段,利用两步曼哈顿距离作为多尺度的分组体素的阈值.之后我们合并这些聚合的特征进而得到RoI特征,这些聚合的特征是不同的阶段和不同的尺度的.

Accelerated Local Aggregation
voxel R-CNN_accelerated_pointnet1

(a)中表示:

  • 一共有M个网格点,每个网格点的大小为 r x G x G x G r x G x G x G rxGxGxG, 其中 r r r表示RoI的数量, G表示网格的大小.
  • 每个网络点中有K个体素特征, 每个体素特征有多个 C + 3 C+3 C+3个通道,其中C表示体素特征,3表示坐标.
  • 分组的算力为 O ( M x K x ( C x 3 ) x C ′ ) O(M x K x (C x 3) x C') O(MxKx(Cx3)xC)

(b)表示: accelerated PointNet Module

目的: 降低Voxel feature的算力

  • 将体素特征和相对坐标分解成两个分支
  • 在进行voxel query之前, 直接对体素特征进行FC, 参数为 W F W_F WF. 因为体素特征独立于网格点.
  • voxel query之后,我们仅仅对分组的相对坐标进行乘法运算, 参数为 W C W_C WC, 获得相对位置特征
  • 之后两者相加,时间复杂度为 O ( N x C x C ′ + M x K x 3 x C ′ ) O(N x C x C' + M x K x 3 x C') O(NxCxC+MxKx3xC), 由于 M x K M x K MxK远大于 N N N, 所以该部分更高效.

Backbone and Region Proposal Networks

采用的backbone和Second和PV R-CNN网络的backbone结构一致.

Detect Head

共享2层MLP首先将RoI特征转换为特征向量。之后将展开的特征送入到两个分支中: 一个是边界框回归, 一个是置信度预测.

Conclusion

我们提出了VoxelR-CNN,一种新的基于体素的3D目标检测器。 以体素为输入,VoxelR-CNN首先从鸟瞰特征表示中生成密集区域提案,然后利用体素RoI Pooling从3D体素特征中提取区域特征,以进一步细化。 通过充分利用体素表示,我们的VoxelR-CNN在准确性和效率之间取得了仔细的平衡。 在KITTI数据集和WaymoOpen数据集上的令人鼓舞的结果表明,我们的Voxel-RCNN可以作为一个简单但有效的基线,以方便对3D对象检测和其他下游任务的研究。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值