[论文笔记] VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection

VoxelNet

1. contribution

  • 针对激光雷达获取的高数量级点云数据,提出了一个端到端的可训练深度网络架构,实现精度较高的物体检测任务。
  • 将稀疏的点云数据转化为稠密的体素(voxel)张量,能够进行GPU加速。

2. 网络架构

[论文笔记] VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection_第1张图片

网络架构分为三层:

  • 特征提取层:将点云划分为voxel形式,使用层级的VFE层提取特征,得到稀疏的voxel-wise特征张量。
  • 中间卷积层:使用3D卷积,得到全局特征张量。
  • RPN层:特征整合,anchor提取,输出预测结果:概率预测图,回归图。

2.1特征提取层(Feature Learning Network)

2.1.1 Voxel Partition

将输入的点云空间(DxWxH)均匀划分为voxel,得到D’xH’xW’个voxel。

2.1.2 Grouping

将点云空间中的点划分到其位置对应的voxel中。由于点云的分布不均匀,每个voxel中点的个数不一定相等。(应该有很多空的?)

2.1.3 Random Sampling

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

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

2.1.4 Stacked Voxel Feature Encoding

每一层VEF的作用原理这个博客讲的很好,直接贴过来:
在这里插入图片描述

此处需要学习的参数即为FC层所需的参数, C o u t C_{out} Cout是由两段等长特征向量concat成,因此总参数为 c i n x c o u t c_{in}xc_{out} cinxcout
最终,每个voxel包含n个点,使用多层VEF layer提取特征,得到n个C维的Point-wise的特征向量。这些特征向量再经过全连接层特征整合,经element-wise max pooling,提取出1xC维的voxel的特征向量。
空间中共D’xH’xW’个voxel,独立得到D’xH’xW’个C维的特征向量。即特征提取层的输出:CxD’xH’xW’的张量。*文中说,此处得到的CxD’xH’xW’是稀疏张量,由于只对非空的voxel进行了处理(VFE),将所有非空的voxel特征表示为稀疏张量,能够有效节省资源。*这里不是很明白,主要是稀疏张量的表示。

2.2 中间卷积层(convolutional middle layers)

使用3D卷积进行特征提取。此处特征已经变为了规则的张量表示,可以直接应用3D CNN,后接BN和RELU。随着卷积加深,逐渐感受野变大,获取全局信息。
但是从后文也可看到,这一层仍是整个网络最花时间的部分,3D CNN的时间开销不可忽视。

2.3 RPN层(Region Proposal Network)

这里RPN的设计和faster RCNN很像。
在这里插入图片描述
首先中间卷积层得到的结果经过几个block,每个block中,第一层下采样(stride=2),输出分布给下一个block作为输入,和经反卷积上采样到固定大小。各block上采样后的结果concat起来。这里原始输入是中间卷积层的结果(128xH’xW’),**不知道为什么丢了一个D’维度?不太懂3D CNN是怎么做的。**使用三个block,每个block包含一个下采样,q个不变大小的卷积,一个上采样,都接BN和RELU。各输出256xH’/2xW’/2的特征,concat为768xH’/2xW’/2。
这个特征再计算得到回归得分图和概率得分图,*原文没说怎么得到的(this feature is mapped to …),可能是FC??*其中,概率得分图channel=2,为前景和背景的得分。回归得分图channel=14,按后文所说,回归目标有七维(x,y,z,l,w,h,θ),不知道这个14维咋回事
损失函数的设定也很faster cnn很像,只关注置信度高的正负预测,分别计算正负类的交叉熵损失,对于回归计算L1范数,三者加权组合得到最终的loss。

三、训练细节

3.1 高效实现

在这里插入图片描述
这里提出了把稀疏点云转化为密集张量(dense tensor)的方法,使得VFE能够高效实现。主要是把原始点云构造为如图的KxTx7的结构。K是非空voxel的最大数量,每个voxel包含最多T个点,每个点7维(为啥??)。构造之前点云随机打乱,确保构造的采样均匀。使用哈希表查找voxel,O(N)时间内可以构造完成。这样就只留下来了非空的voxel,构造了dense tensor,可以在GPU上并行实现VFE操作。
在VFE的concat之后,将空点对应的特征置零。*这里的空点是一个voxel中不足T的部分吗?好像不是啊。VFE出来的张量应该是稀疏的?*总之,之后把VFE输出的稀疏结构转化为密集的voxel网格,再在GPU上进行高效的3D CNN和RPN。

3.2 数据增强

文章提出了三种数据增强方法,主要是针对旋转平移缩放变换,全局或局部进行,之后如果有机会复现再整理叭。此外点云进行了预处理操作(points thar are projected outside of image boundaries are removed),不知道这的投影是什么操作。文章也给出了十分详细的各种超参数设定,很良心惹。

你可能感兴趣的:(深度学习,三维物体识别,论文笔记)