second

论文:Sensors | Free Full-Text | SECOND: Sparsely Embedded Convolutional Detection (mdpi.com)

前人贡献

使用RGB-D数据的二维表示的方法分为基于鸟瞰图、基于前景两种。

Front-View- and Image-Based Methods

在一般的基于图像的方法中,先生成二维box类语义、实例语义,再使用手工方法生成特征图。另一种方法使用CNN从图像中估计3Dbox,并使用专门设计的离散连续CNN估计物体运动方向。

对于基于激光雷达数据的方法包括将点云转换为前景的2D map,并应用2D探测器对前景视图中的图像进行定位、和其他方法相比,这些方法在BEV检测和三维检测方面都做得很差。

代表论文:CVPR 2017 Open Access Repository (thecvf.com)、[1608.07916] Vehicle Detection from 3D Lidar Using Fully Convolutional Network (arxiv.org)

Bird’s-Eye-View-Based Methods

这种方法将点云数据转换为多个切片得到height maps(按不同高度划分),再将height maps与intensity map、density map 结合得到多通道特征。这种方法的问题是在生成BEV图时,许多数据点被丢弃,导致垂直轴上信息损失很大,这种信息丢失会严重影响在3Dbox回归中的性能

如MV3D(首个将点云数据转换为BEV的方法);ComplexYOLO使用YOLO网络和复杂角度编码方法来提高速度和定位性能、但在预测3D边界框时只能固定高度);

代表文章:CVPR 2019 Open Access Repository (thecvf.com)CVPR 2019 Open Access Repository (thecvf.com)

3D-Based Methods

多数的3D-based方法或者直接使用点云数据、或者将数据转换为3Dvoxel(而不是BEV),然后采用一种卷积式的投票算法进行检测。这种方法利用点云数据的稀疏性,以特征中心的投票方案提高计算速度。但是是使用手工制作特征方式,无法适应自动驾驶的复杂环境。

之后又有人提出使用CNN网络、k-领域等方法从点云中学习局部空间信息。但是这些方法不能应用于大规模的点,需要用图像检测结果对原始数据点进行滤波。

CNN网络应用到点云也是目前的研究热门,其基本思想是基于CNN的检测器将点云转换为voxel,有下列一些方向:

  1. 将点云数据离散为二值的voxel,然后进行三维卷积
  2. 将点云数据分组为voxel,提取voxel特征,再将这些特征转换为密集张量,利用3D或2D卷积网络进行处理

这种方法的主要问题是3D CNN的高计算成本,而且3D CNN的计算复杂度随着voxel分辨率的增加而增加。因此,使用稀疏结构的卷积网络会降低计算复杂度。而 CVPR 2018 Open Access Repository (thecvf.com)提出了一种空间结构不变的3D CNN。这种网络已经应用于三维语义分割任务,但是还没有利用稀疏卷积进行检测的方法。

代表论文:[1505.02890] Sparse 3D convolutional neural networks (arxiv.org)CVPR 2018 Open Access Repository (thecvf.com)

Fusion-Based Methods

这种方法将相机图像与点云相结合。

  1. 使用3维的RPN两个尺度不同的接受域产生三维proposal,然后将每个三维proposal的深度数据反馈到三维CNN并且将相应的二维的颜色补充到二维CNN网络来预测最终结果。
  2. 将点云数据转换为一个正视图和一个BEV,再从这两个图中提取特征图与图像特征图融合。但是它含有三个CNN网络并不适用于小心对象
  3. 将图像与BEV结合,使用一种新的结构生成高分辨率的特征图的三位对象proposal
  4. 使用二维检测结果过滤点云,PointNet就可以应用于三维box

这些方法需要处理大量的数据,因此基于融合的方法运行缓慢。并且它对激光雷达的时间同步和校准摄像机的额外要求限制这种方法的使用环境,降低了鲁棒性。

代表论文:CVPR 2017 Open Access Repository (thecvf.com)

论文概述

SECOND Detector

SECOND Detector以原始点云作为输入,将其转换为voxel特征和坐标,并应用两个VFE层和一个线性层。然后使用稀疏CNN。最后应用RPN生成检测结果。

image-20220105165859553

作者的Point Cloud Grouping、Voxel-wise Feature Extractor与VoxelNet的处理相同此处便不再赘述。

稀疏卷积网络

作者的主要改进体现在引入了稀疏卷积网络,替代voxelNet中的三维卷积提取特征图。常规的稀疏卷积是如果没有相关的输入点,则不计算输出点。子簇卷积(常规卷积网络的替代)限制当且仅当相应的输入位置处于活动状态是,输出位置才处于活动状态,这可以避免生成过多的活动点,提升卷积速度。

稀疏卷积算法

  1. 将稀疏的输入特征通过gather操作获得密集的gather特征;

  2. 然后使用GEMM对密集的gather特征进行卷积操作,获得密集的输出特征;

  3. 通过预先构建的输入-输出索引规则矩阵,将密集的输出特征映射到稀疏的输出特征

image-20220105165859553

二维密集卷积算法中,W表示过滤元素,D表示图像元素。函数P(x,y)需要根据输出位置来计算输入位置。因此,卷积输出Y计算如下:
$$

Y_{x,y,m}=\sum_{u,v\in P(x,y)}{\sum_{l}{W_{u-u_0,v-v_0,l,m}D_{u,v,l} } }\quad(1)

$$
基于矩阵乘法GEMM算法可用于收集全部用于构建矩阵的数据,并执行GEMM本身。
$$

Y_{x,y,m}={\sum_{l}{W_{*,l,m}\tilde{D}_{P(x,y),l} } }\quad(2) {% rendrawaw %}

$$
此处的W与上式的W相同,只是使用GEMM形式。对于稀疏数据D‘和相关联的输出Y’直接计算算法如下:
$$

{% raw %} Y_{x,y,m}=\sum_{i\in P'(j)}{\sum_{l}{W_{k,l,m}D'_{i,l} } }\quad(3) {% endraw %}

$$
其中p‘是获取输入索引和滤波器偏移量的函数。基于GEMM的版本
$$

{% raw %} Y’_{j,m}={\sum_{l}{W_{*,l,m}\tilde{D'}_{P'(j),l} } }\quad(4) {% endraw %}

$$
因为D’中含有大量的零不用参与计算,因此引入规则矩阵R,指定输入索引i给出核偏移量k和输出索引j,公式如下:
$$

{% raw %} Y’_{j,m}=\sum_k{\sum_{l}{W_{k,l,m}\tilde{D'}_{R_{k,j},k,l} } }\quad(5) {% endraw %}

$$
而5式的inner sum无法通过GEMM的计算,因此还需要收集足够的数据构建矩阵来执行GEMM,再将数据分散回去。实际中可以利用预先构造的输入-输出索引规则矩阵从原始稀疏矩阵数据中收集数据

生成规则算法

常见的哈希表规则生成算法是基于CPU的,速度较慢,并且需要再CPU和GPU间进行数据传输。另一种方法是迭代输入点,找到每个输入点相关的输出,并将相应的索引存储到规则中。在迭代的过程中,需要使用一张表检查每个输出位置的存在性以决定是否使用全局输出索引计数器来累加数据,这也是制约并行计算在算法中使用的最大挑战。

作者设计了一种基于GPU的规则生成算法

  1. 收集输入的索引和对应的空间索引而非输出索引(此阶段会重复获得输出索引)
  2. 在空间索引数据上使用一种独特的并行算法,以获得输出索引以及相关的空间索引。
  3. 根据前两步的结果生成一个与稀疏数据空间维度相同的缓冲区,用于下一步的表查找
  4. 对规则进行迭代,并使用存储的空间索引来获取每个输入索引的输出索引。

img

稀疏卷积中间提取器

中间提取器用于学习z轴信息,并将稀疏的三维数据转换为二维BEV图像。它包含了稀疏卷积的两个阶段。每个阶段都有几个子流形卷积层和一个正常的稀疏卷积,用于在z轴进行下采样。在 z 维被下采样到一维或二维后,稀疏数据被转换为密集特征图。 然后,将数据简单地重新整形为类似图像的 2D 数据。

image-20220105165859553

黄色表示稀疏卷积,白色表示子流形卷积,红色表示稀疏到密集层,图的上半部分是稀疏数据的空间维数。

Anchors与目标

作者的anchor size与VoxelNet中anchor size,对正负锚点的阈值选择都是一样。作者同时为每个锚点分配一个以分类为目标的one-hot向量、一个边界框回归为目标的7维向量、一个以方向分类为目标的one-hot向量。

损失函数

Sine-Error Loss for Angle Regression(方向回归)

作者在RPN中增加了一个direction classifer分支,将车头是否区分正确直接通过一个softmax loss来进行约束。如果θ>0则为正,θ<0则为负,将其转换为了一个简单的二分类问题。
$$
L_{\theta}=SmoothL1(\sin{(\theta_p-\theta_t)})
$$

它可以很好的解决0和Π两个角度的对抗样本问题,也可以根据角度偏移对IoU进行建模。

Focal Loss for Classification

该网络产生的约70k个锚点中,只有约4k~6k是有用的。作者引入RetinaNet中的单级损失single-stage loss,即focal loss
$$
FL(p_t)=-\alpha_t(1-p_t)^{\gamma}\log(p_t)
$$
pt是模型的估计概率,α=0.25,γ=2.

总训练损失

$$
L_{total}=\beta_1L_{cls}+\beta_2(L_{reg-\theta}+L_{reg-other})+\beta_3L_{dir}
$$

第一个损失函数是分类损失,第二个损失函数是新角度损失,第三个损失函数是位置和尺寸回归损失,第四个损失函数是方向分类损失。β1=1.0、β2=2.0、β3=0.2(将β3使用较小的值,避免网络难以识别物体发方向情况)

数据增强

从数据库中采样Ground Truths

  1. 从训练数据集生成一个包含所有Ground Truths及其相关点云数据(ground truths的三维box中所有点)
  2. 从数据库中随机选中几个ground truths,通过串联方式引入当前训练的点云中(可以增加训练中ground truths点的数量,以模拟不同环境中的物体)
  3. 进行碰撞测试,删除任何与其他物体碰撞的采样对象

目标噪音

作者使用voxelNet方法对每个ground truth与其中点云独立、随机的进行转变。

全局旋转和放缩

作者对全部点云以及所有ground truth box进行全局放缩和旋转。从[0.95,1.05]的均匀分布提取局部噪音,从[-Π/4,Π/4]提取全局噪音

网络细节

作者使用一大一小两个网络,在摄像机视野外的点被舍弃。

汽车检测任务

在SECOND中使用两个VFE层,即大型网络的VFE(32)和VFE(128),较小的网络的VFE(32)和VFE(64),在线性(128)层之后。因此,输出稀疏张量的维数对于大型网络为128 × 10 × 400 × 352,对于小型网络为128 × 10 × 320 × 264。然后,我们使用两阶段稀疏CNN进行特征提取和降维。每个卷积层遵循一个BatchNorm层和一个ReLU层。所有稀疏卷积层都有一个64-output feature map,核大小为(3,1,1)核大小,stride为(2,1,1)。对于大型网络,中间块的输出维数为64 × 2 × 400 × 352。一旦输出被重塑为128 × 400 × 352,就可以应用RPN网络。我们使用Conv2D(cout, k, s)来表示con2d - batchnorm - relu层,使用DeConv2D(cout, k, s)来表示DeConv2D- batchnorm - relu层,其中cout为输出通道数,k为内核大小,s为stride。因为所有层在所有维度上都有相同的大小,所以我们对k和s使用标量值。所有Conv2D层都有相同的填充,所有DeConv2D层都有零填充。在我们的RPN的第一阶段,应用了三个Conv2D(128, 3,1(2))层。然后,在第二阶段和第三阶段分别应用5个Conv2D(128, 3, 1(2))层和5个Conv2D(256, 3, 1(2))层。在每一阶段中,只有第一卷积层的s = 2;否则,s = 1。我们对每个阶段的最后一次卷积应用一个单一的DeConv2D(128, 3, s)层,三个阶段的s依次为1、2和4。

image-20220105165859553

行人和骑自行车者检测任务

与汽车检测方面唯一的区别是RPN中第一个卷积层的步幅为1而不是2。

实验结果

在KITTI的验证集上,该网络无论大小网络都具有极高的平均准确度,以及极快的处理速度。同时该网络的角度编码速度、收敛速度也是非常快的。

image-20220105165859553

汽车检测任务

该网络在检测汽车时展示出了极强的性能,尤其是该网络可以有效的检测被遮挡的汽车。但是对于获得数据量较少的汽车任然无法做到准确检测,尤其是对于点数小于10的车辆

行人和骑自行车者检测任务

对行人和自行车的检测出现了更多的假阳性与假阴性,一些预测甚至出现在不合理的位置。这些问题可能归因于行人和自行车的实例包含的点更少,容易与其他点或是噪音混淆。此外,行人和自行车数量相对较少,导致包含他们的voxel数量较少,训练效果也就较差。过滤不相关信息并基于二维检测结果确定目标位置,应该会解决这个问题。

做出的贡献

  1. 将稀疏卷积应用于基于激光雷达的目标检测
  2. 提出了一种改进的稀疏卷积方法,显著提升训练与推理的速度
  3. 引入一种新的角度损失回归方法
  4. ,提高收敛速度和性能
谢谢你请我吃糖果
0%