SECOND 学习笔记

《SECOND: Sparsely Embedded Convolutional Detection》 (单阶段,point-based)


前言

基于LiDAR或基于RGB-D的目标检测被用于从自动驾驶到机器人视觉的众多应用中。 在处理点云LiDAR数据时,基于Voxel的3D卷积网络已经使用了一段时间,体素方法能够在处理雷达点云数据时的保留更多的信息。 但是,仍然存在问题,包括推理速度慢和方向估计性能低。因此,我们研究了一种改进的稀疏卷积方法用于这种网络,这显着地增加了网络训练和推理的速度。通过引入角度损失的方法来提高方向估计性能,以及一种新的能增强收敛速度和性能的数据增强方法。所提出的网络在KITTI 3D物体检测基准测试中产生最先进的结果,同时保持快速的推理速度。

一、网络结构

在这里插入图片描述
提出的SECOND检测模型由3部分组成:体素网格特征提取器,稀疏卷积层(中间层),RPN网络

1. 体素特征提取器

包括图中的前两部分

① Point Cloud Grouping

个人理解是将点云数据转化为体素格式,转化方法为:首先根据cfg中预先设定的体素数量设置一个缓冲区,即指定大小的一个tensor,全部给0,然后遍历点云计算点云分别属于哪个体素,记录所属的体素坐标和每个体素的点数,这个步骤使用的方法是哈希表。最后得到的数据是all voxels,their coordinates and the number of points per voxel三个。这些体素在生成时限制了体素所处的实际位置以及每个体素可以包含的最大点数。

② Voxelwise Feature Extractor

使用体素特征编码(VFE)层提取体素特征。 VFE层以同一体素中的所有点的数据作为输入,并使用由线性连接层,批归一化(BatchNorm)层和激活函数层(ReLU)组成的完全连接网络(FCN)来提取逐体素提取特征。 然后,它使用逐体素最大池来获取每个体素的局部聚合特征。 最后,将获得的体素局部特征平铺,并将这些平铺的体素局部要素和每个点的特征拼接在一起。再然后使用一个FCN(cout)将输入这些逐点的特征转换为cout维的输出特征,FCN(cout)也是一个Linear-BatchNorm-ReLU层。 总体而言,三维特征提取器由几个VFE层和一个FCN层组成。

2. 稀疏卷积中间层

体素化之后大约会产生5k~8k个体素以及约0.005的稀疏度,直接运用3D卷积将消耗巨大的计算资源和时间.这里作者采用了submanifold convolution, 通过输入数据的稀疏性限制输出的稀疏性,从而极大减少了后续卷积操作的计算量。

本文使用的稀疏卷积特征提取网络包含了稀疏卷积层(由黄色表示), submanifold convolution(白)以及稀疏到稠密的转换层(红)。

在这里插入图片描述

3. RPN

在这里插入图片描述
使用类似SSD的网络作为RPN,由3个stage组成,即(conv * k + BN + ReLU) * 3,然后将每个stage的输出反卷积上采样连接成一个特征图。最后使用三个1* 1的卷积得到类别,偏移和方向。

二、损失函数

Sine-Error Loss for Angle Regression

以往的角度回归方法,包括角点编码,直接编码和向量编码,通常表现出较差的性能。 角预测方法[8]不能确定方向 在一个物体上,不能用于行人检测,对于这个物体,BEV盒子几乎是正方形的。 矢量编码方法[9,19]保留冗余信息,导致检测困难 基于LiDAR的远距离物体。 Voxel Net[14]直接预测弧度偏移,但在0和π弧度之间存在一个对抗性的例子问题,因为这两个角度是共的 响应于同一个框,但当一个被错误识别为另一个时,会产生很大的损失。 我们的体系结构通过引入一个新的角度损失回归来解决这个问题:
在这里插入图片描述
其中下标p表示预测值。 这种角度损失方法有两个优点:(1)它解决了0和π方向之间的对抗性例子问题;(2)它是自然的 根据角度偏移函数对IoU进行建模。 为了解决这个问题,即这个损失将具有相反方向的框视为相同的问题,我们在Outp中添加了一个简单的方向分类器 RPN的UT。 此方向分类器使用Softmax损失函数。 我们使用以下方法生成方向分类器目标:如果偏航围绕地面tr的z轴旋转 高于零,结果为正,否则为负。

Focal Loss for Classifification

我们的网络通常在KITT I点云中生成∼70k锚。 不幸的是,通常只有几个基本真理,每一个真理只产生4-6个积极。 这导致了一个极端 前景类和背景类之间的不平衡。 视网膜网的作者介绍[33]一种有效的单级损失,称为focal loss,可以解决这一问题,因此,我们使用 我们建筑中的这种损失。 分类损失有以下几种形式:
在这里插入图片描述
处理前景背景类别不平衡的问题。其中pt是模型的估计概率和α,γ是focal loss的参数。 我们在培训过程中使用α=0.25和γ=2。

Total Training Loss

结合上面讨论的损失,我们可以得到多任务损失的最终形式如下 :
在这里插入图片描述
其中Lcls是分类损失,Lreg-other是位置和尺寸的回归损失,Lreg-θ是我们的新颖角度损失,Ldir是方向分类损失。 β1= 1.0,β2= 2.0和β3= 0.2是我们损失公式的常数。 我们使用相对较小的β3值来避免网络难以识别物体方向的情况。

三、数据增强

Sample Ground Truths from the Database

我们在训练中遇到的主要问题是地面真相的存在太少,这大大限制了网络的收敛速度和最终性能。 来解决这个问题 莱姆,我们引入了一种数据增强方法。 首先,我们生成了一个数据库,其中包含所有地面真相的标签及其相关的点云数据(3D边界框内的点 来自训练数据集的基本真理。 然后,在训练过程中,我们从这个数据库中随机选择了几个地面真相,并通过concat将它们引入当前的训练点云中 诱惑。 使用这种方法,我们可以大大增加每个点云的地面真相数量,并模拟存在于不同环境中的对象。 为了避免身体上不可能的结果,我们 在采样地面真相后进行碰撞测试,并移除与其他物体碰撞的任何采样物体。

Object Noise

为了考虑噪声,我们采用了VoxelNet[14]中使用的相同方法,其中每个地面真相及其点云被独立和随机地转换,而不是转换所有点cl 具有相同参数的OUD。 具体来说,我们使用了从均匀分布∆θ∈[π/2,π/2]中采样的随机旋转和从高斯分布中采样的随机线性变换 平均值为零,标准差为1.0。

Global Rotation and Scaling

我们将全局缩放和旋转应用于整个点云和所有地面真相框。 尺度噪声来自均匀分布[0.95,1.05],[π/4,π/4]用于 整体旋转噪音。

四、Network Details

最优化

利用随机梯度下降(SGD)对所提出的第二检测器进行了训练)。 我们使用了一个Adam优化器运行在GTX1080Ti GPU上,每个小型舱总共有三点云。 所有模特都是 训练160个历元(200K迭代)。 初始学习率为0.0002,指数衰减因子为0.8,每15个时代衰减一次。 衰变重量为0.0001,β1值为0.9和 β2值为0.999。 用单个GTX1080TiGPU训练大型汽车检测网络需要19h,只需要9h就可以训练较小的模型。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值