Vote3Deep: Fast Object Detection in 3D Point Clouds Using Efficient CNN论文综述()

时间:2024-03-29 17:08:13

1、 为什么要做这个研究(理论走向和目前缺陷) ?
在点云数据集上做3D目标检测这时还没大爆发。
2、 他们怎么做这个研究 (方法,尤其是与之前不同之处) ?
本文思想基本全部借鉴了Vote3D,即用基于投票的滤波器提取特征,这种卷积只在非零的3D网格中做计算,故能够加速。然后ReLU**。损失函数还要用L1正则化。其中ReLU**有利于维持中间层特征的稀疏性,能够加速训练,L1正则化能够保证模型滤波器参数的稀疏性,也能够加速训练。
3、 发现了什么(总结结果,补充和理论的关系)?
本文作为较早的3D目标检测算法还是有很多缺点。1)纯粹用的点云数据,没有考虑与图像数据的融合。2)并不是直接在点云上进行处理,还要先把点云划分为3D网格,这是比较耗时的,而且划分标准往往对检测结果有很大影响。3)CNN在3D网格上进行处理本身就是计算量比较大的任务。4)本文的Bbox是预先设定好的,实际上模型能做的就是找这个固定大小的框的位置,而不能调整其大小,这对于有不同大小的物体上做检测有很大问题。5)不同类别需要同时用到不同的网络,这大大限制了模型的通用型。6)训练集准备,训练中的调参都相当麻烦。

摘要:本文提出一种计算高效的方法实现点云输入中的目标检测。具体来说,这是通过利用了一种新的以特征为中心的投票方式来实现的卷积层,这种新的卷积层显式利用了输入中的稀疏性。最后,还测试了不同的结构以实现速度与准确率的权衡,还在卷积核的**值上利用了L1正则化来进一步鼓励中间表示的稀疏性。本文首先提出了稀疏卷积层和对3D数据的大规模高效处理。只用了3层网络就在KITTI上取得了很好的效果。

1、 引言
CNN给CV带来的巨大突破,但是在3D点云数据中,并没有大突破。我们将此归因于点云数据中的第三个维度(深度)会带来巨大的计算负担。这种计算负担导致简单把CNN迁移到3D感知中不太可行。于是,之前实现3D感知的方法普遍都是把3D数据转换为2D表示,这会导致2D表示中临近的特征在3D原始数据中可能并不是临近的,后期还需要进行处理以恢复这种几何关系。
点云数据很稀疏,Vote3D提出了以特征为中心的投票算法以利用点云的稀疏性。这种算法的计算仅仅来源于3D网格中的非0位置。Vote3D证明了投票机制和密集卷积的等效性,并通过离散点云为3D网格并实现滑动窗口检测阐明了投票机制的高效性。结果Vote3D实现了准确率和速度的最好结果。
受到Vote3D的启发,我们提出利用以特征为中心的投票算法构建高效的CNN网络实现对原生点云输入的目标检测,也就是所不需要把点云数据先映射到低维空间或者限制检测器的搜索空间。除此之外, 为了利用点云的稀疏特性带来的计算优势,中间层加入了L1正则化以鼓励稀疏性。以上组成了Vote3Deep。
就我们所知,我们首先提出了基于投票机制和L1正则化的稀疏卷积层,主要贡献如下:
1) 基于利用输入数据的稀疏性的投票机制构建了稀疏卷积层,作为处理点云数据的一层。
2) 利用ReLU**和L1正则化来鼓励数据在网络中间表达的稀疏性,以探索CNN中的稀疏卷积层的作用。

我们证明3层的Vote3Deep在KITT上实现了最先进的性能。

2、 相关研究
虽然CNN特征表现力很强,但是将点云映射到一个特定的视角会丢弃信息,这有害。而且卷积核需要学习深度的局部依赖性,就要进行暴力搜索,非常耗时。然而如果直接利用点云的3D表示能够轻易获得这些局部依赖性,当然,这需要利用到稀疏卷积。
点云的3D网格交由CNN来处理,其中,每个网格元素的空间大小最小是0.1m,有研究表明,在GPU上用其最慢的模型计算323232大小的网格的时间是6ms, 但是将原始点云数据(20万个点)映射为3D网格需要花费0.5秒。本文中,将2万个点云数据点,映射为2000000个网格,其中每个网格边长0.2m。因此,如果在3D网格中所有位置都进行计算大概会花费1500秒。
有一种能够充分利用点云稀疏性的替代方案就是在小2D或者3D特征上应用稀疏卷积。虽然稀疏卷积和值应用在稀疏特征位置上,但是这种算法还需要考虑临近值是否是0或其他常量,导致不必要的计算和存储消耗。还有一种方案是利用一种带训练参数的特殊滤波器。

CNN也被用在医学领域的密集3D数据上,

3 方法
Vote3Deep用CNN网络在3D点云上实现了高效的,大规模的,多实例的目标检测。第一步是把点云转换为离散的3D网格(含有很多0)。本文中,对于每个包含非零个点的网格(cell),基于这个网格里的点提取一个特征向量,这个向量中包含如下元素:一个表示这个网格中是否有点的数(0或者1),反射值的均值和方差,以及三个形状元素。对于没有点云数据的网格,并不储存。这样就实现了稀疏表征。
我们用了投票策略实现稀疏卷积,后面跟上ReLU**,这样返回的还是一个稀疏的3D表示。这个处理过程可以重复和堆叠,就类似与传统的CNN一样。最后输出层预测一个目标是否出现的得分。
跟Vote3D中类似,为了处理不同朝向的物体,CNN在N个不同朝向处理点云数据。这使得任意姿态的目标都能只消耗最少的额外时间得到处理。在3D空间里还应用的NMS实现对重复检测的剪枝。

A 基于投票的稀疏卷积
当在一个稀疏点云数据上应用密集3D卷积,由于大多数网格都是0,就浪费了很多时间。另外第三个空间维度(深度)也使得这个过程计算量更大。Vote3D的投票算法的过程就是每个非零网格会进行会在滤波器中进行投票(滤波器中心和非零网格对齐),在输出层的对应位置产生同滤波器同样大小的网格,每个网格的值=原始非零网格的值*滤波器中对应输出层这个网格的值。最终的卷积结果,即输出层的每个网格的值是通过累加输出层中每个网格中的所有的投票值得到。这个过程简化如下所示:
Vote3Deep: Fast Object Detection in 3D Point Clouds Using Efficient CNN论文综述(2016)

其中偏差b是负数,因为正数会导致几乎输出的每个网格都是一个非零向量,就失去了稀疏性
B 用ReLU**维持稀疏性
当堆叠多个稀疏的3D卷积层时,有必要在中间层维持稀疏性。随着稀疏卷积层的堆叠,如果不做处理,稀疏性会不断降低,如上图所示。为了维持稀疏性,最简单的方法就是加ReLU**:
Vote3Deep: Fast Object Detection in 3D Point Clouds Using Efficient CNN论文综述(2016)

其中Zc是在第c层的输入, hc是隐藏层的中间输出。

4 训练
基于同一类别的实例往往其边界框大小差不多的假设,我们为每个类别预设了固定大小的边界框。网络的感受野至少不能比边界框小,但也不能太大以防计算量太大。因此我们训练了三个分离的网络,这三个网络在测试阶段可以同时运行,且每个网络的感受野不同,每个网络专门检测一个类别。然而,这三个网络在低层共享计算和特征也是可以的,留给以后来研究。
处理点云数据时要从多个角度处理(按一定角度递增或递减),以实现网络对不同角度的目标都有较好的鲁棒性。训练集还要经过随机旋转训练实例的最初的前视图一定角度进行数据增强,这个旋转角度要小于之前的递增或递减的角度。类似的,还要对训练实例进行随机的平移一个小距离,这个距离小于每个3D网格的大小,这样做是为了消除离散点云为3D网格时的影响。

A. Linear Hinger Loss
损失函数如下:
Vote3Deep: Fast Object Detection in 3D Point Clouds Using Efficient CNN论文综述(2016)

其中 代表输出的检测得分, 代表标签值。Theta代表网络参数。
这样,如果标签值为正例1,只要预测值为1,损失就是0,如果标签纸为负例-1, 只要预测值小于-1,损失就是0。
和普通的CNN网络一样,损失能够进行反向传播更新梯度。

B. L1稀疏性惩罚
L1正则化有利于维持模型参数的稀疏性(ReLU**维持特征的稀疏性,注意区分),故采用L1正则化。

5 实验
A. 数据集
在KITTI数据集上训练与评估,数据集包含标定了的立体相机和激光雷达,标注物体有8个类别,我们只用了点云数据,训练集有7481帧,测试集有7518帧,只用了8个类别中的3个(汽车,行人,骑自行车的人),分别有28742, 4487和1627个实例。
B. 架构
比较了多种架构,如表1,Fig3展示了model D。为了探索目标周围的环境信息,设计的输出层每个网格的感受野稍大于目标大小。
Vote3Deep: Fast Object Detection in 3D Point Clouds Using Efficient CNN论文综述(2016)

C. 训练
网络在正例或负例所在网格中训练,正负例数要基本平衡,其中,正例全部保留,负例从不与正例重合的背景中随机裁剪(crop)。每10个epoch采取一次难负例最小化(hard negative mining)操作,通过在全部的点云训练集(不是crop)中运行当前的点云模型完成。在每次难负例最小化中,至多10000个最高得分的FP被加入到训练集中。

网路参数用He初始化,SGD优化算法,L2权重衰减(L1正则化也用了),bs=16.在16核CPU上训练大概花了3天。

D. 评估
KITTI官方是在图像平面上进行评估的,所以我们要将雷达坐标系的检测结果映射到图像相机图像平面上,映射的过程中,我们要抛弃所有跑出图像之外的检测结果。KITTI基准根据标注边界框的大小设置了3个难度等级,easy, moderate和hard,其中hard中包含moderate, moderate中包含easy的框。官方评估是在moderate实例上做的。
E. 模型比较
这节研究准确率和模型复杂度(速度)的权衡。共比较了5中结构,每种结构变的只有模型层数和卷积核的数目。训练的过程中不加L1正则化,后面会讨论。
Vote3Deep: Fast Object Detection in 3D Point Clouds Using Efficient CNN论文综述(2016)
Vote3Deep: Fast Object Detection in 3D Point Clouds Using Efficient CNN论文综述(2016)

由上图Fig4, Fig5可知,非线性的,多层的网络性能大幅超过线性基准,这说明增加模型复杂度和表现力很有用。
模型的表现会随着隐藏层滤波器的数目增大而有提升,但是提升有限。同样的,增大滤波器的感知域,同时保持模型总的感知域不变(B和C对比,或者D和E对比),并没有带来提升,这可能是由于模型没有进行足够的正则化,另外一种潜在解释是3D数据的可解释性更好,这使得相对小的模型也能够捕获到大多数的输入表征中的变化,而这些变化有利于实现更好的检测。

F. 测试结果
从table 1中,选择模型B来检测汽车, 模型D检测行人和骑自行车的人,每个隐藏层有8个滤波器,并且在test测试集上不用稀疏惩罚。PR曲线如图Fig 5.
模型横向比较如下表,表2中与只用了点云数据的模型比较,Vote3Deep最好。
表3中Vote3Deep与同时用了点云和图像的模型进行比较,可以观察到虽然vote3Deep只用了点云数据集,但是相对于用了点云和图像的模型,表现依然不差,其中在骑车人检测实例中表现更好,推测这可能是由于骑车人拥有更加具有分辨力的形状导致。

Vote3Deep: Fast Object Detection in 3D Point Clouds Using Efficient CNN论文综述(2016)

G. 耗时与稀疏性
稀疏性惩罚(L1正则化)使得模型参数更加稀疏,能够加速训练。由表4可见,通常,原本AP很高,通常不应该用稀疏性惩罚,会降AP。对于行人实例,不用稀疏性惩罚虽然慢一些,但是AP很高。这可能是由于行人实例本来就小,而稀疏性惩罚能够增加模型的感受野,这样就导致行人实例信息太少而无法学习到表现。
Vote3Deep: Fast Object Detection in 3D Point Clouds Using Efficient CNN论文综述(2016)

5 结论
本文提出基于投票机制的稀疏点云上的目标检测算法。