论文题目:VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection

开源代码:github.com/qianguih/vox

VoxelNet是一个端到端利用点云进行3D目标检测的网络,它的最大特征是把点云转成体素(voxel,所谓体素,其实就是网格,三维空间中的网格)形式再进行特征提取。也有的说的更直接,就是在voxel上运行PointNet

一、整体介绍

直接上图吧

网络共分为三层:

1)特征提取层:把点云划分为体素(voxel)并提取特征

2)中间卷积层:对特征进行卷积,得到高维特征

3)RPN层:用于生成边界框

二、详细介绍

1. 特征提取层

我们再看一下作者画的图里的内容

从图上可以看出,这一层又可以分为五个步骤了:
1)Voxel Partition:

把点云划分为Voxel形式

2)Grouping:

将点云空间中的点划分到其位置对应的voxel中,很多voxel中没有点,即为空

3)Random Samplling:

对于每个voxel,若所含点数大于T,则随机采样T个。

其目的有二:

  • 节约开销。
  • 降低各voxel之间点个数的不平衡

4)Stacked Voxel Feature Encoding:

对体素特征编码

这一部分确实不是特别好理解,我在网上查到了一篇资料,讲的还算清晰,内容截图贴在这里(资料链接:blog.csdn.net/AdamShan/

5)Sparse 4D Tensor

稀疏张量表示(截图中内容同样来自博客blog.csdn.net/AdamShan/

2. 中间卷积层

使用3D卷积进行特征提取。此处特征已经变为了规则的张量表示,可以直接应用3D CNN,后接BN和RELU。随着卷积加深,逐渐感受野变大,获取全局信息。

没太多好说的

3. RPN层

RPN网络的结构如下图所示

首先中间卷积层得到的结果经过几个block,每个block中,第一层下采样(stride=2),输出分布给下一个block作为输入,和经反卷积上采样到固定大小。各block上采样后的结果concat起来。使用三个block,每个block包含一个下采样,q个不变大小的卷积,一个上采样,都接BN和RELU。

这个特征再计算得到回归得分图和概率得分图,概率得分图channel=2,为前景和背景的得分。回归得分图channel=14。

三、实验结果

看看效果吧

论文里对比的这几个网络,它的性能是全面占优的。而且这个性能经得起检测,虽然它只使用了点云,但是在Kitti 的 benchmark上,它的性能要比很多结合点云和视觉的方法还要好。