Second:Sparsely Embedded Convolutional Detection

一.总结

基于体素划分的3D卷积网络可以较好的处理lidar信息,但是有推理速度慢和朝向估计的性能差的不足。

贡献:

  • 我们在基于lidar的目标检测中应用了稀疏卷积,从而大大提高了训练和推理的速度。
  • 我们提出了一种改进的稀疏卷积方法,使其运行速度更快。
  • 我们提出了一种新的角度损失回归方法,该方法展示了比其他方法更好的方向回归性能。
  • 我们为仅限lidar的学习问题引入了一种新的数据增强方法,大大提高了收敛速度和性能。

二.网络体系结构

1.Point Cloud Grouping(点云分组)

  • 根据指定的体素数量限制,预先分配缓冲区
  • 遍历点云并将点云分配给其相关的体素,并保存每个体素的坐标和每个体素中点的数量。通过哈希表来检查体素是否存在,如果不存在则创建,如果存在则点数量+1。
  • 一旦体素数量达到指定上限,遍历停止,就可以得到所有的体素,他们的坐标以及每个体素中点的数量。

2.Voxel Feature Extractor(体素特征提取器)

  • 我们使用体素特征编码(voxel feature encoding, VFE)层来提取体素特征,VFE层将同一体素中的所有点作为输入
  • 使用由线性层、批归一化(BatchNorm)层和整流线性单元(ReLU)层组成的全连接网络(FCN)来提取逐点特征。
  • 然后,它使用元素最大池化(elementwise max pooling)来获得每个体素的局部聚合特征。
  • 最后,它将获得的特征进行平铺,并将这些平铺特征和点向特征连接在一起。我们使用VFE(cout)来表示VFE层,该层将输入特征转换为cout维输出特征。类似地,FCN(cou)表示一个Linear-BatchNorm-ReLU层,它将输入特征转换为cou维的输出特征。
  • 总体而言,体向特征提取器由多个VFE层和一个FCN层组成。

3.Sparse Convolutional Middle Extractor

3.1 Sparse Convolution Algorithm(稀疏卷积)

(1).首先考虑二维密集卷积算法。我们使用

表示过滤元素

表示图像元素,其中u和v空间位置指标l 表示输入通道m表示输出通道。函数

在给定输出位置的情况下,生成需要计算的输入位置。因此,对于

的卷积输出由以下公式给出:

(1)

  • 其中x和y是输出空间指标,

    表示核偏移u和v坐标。基于一般矩阵乘法(GEMM)的算法(也称为基于im2col的算法)来收集构造矩

    所需要的数据,然后执行GEMM:

(2)

  • 其中

    对应于

    但采用GEMM形式。对于稀疏数据

    和关联的输出

    ,直接计算算法可以写成:

(3)

  • 其中:

    是获取输入索引i和滤波器偏移量的函数,下标k是1D kernel offset,对应方程

    ,下标i对应方程(1)中的u和v。式(3)基于gemm的版本为:

(4)

  • 稀疏数据的采集矩阵

    仍然包含许多不需要的零计算。

(5)

(2).稀疏卷积的大致网络结构

  • 稀疏的输入特征通过gather操作获得密集的gather特征
  • 然后使用GEMM对密集的gather特征进行卷积操作,获得密集的输出特征
  • 通过预先构建的输入-输出索引规则矩阵,将密集的输出特征映射到稀疏的输出特征。

(3).Rule Generation Algorithm 输入-输出索引规则矩阵的生成规则

1.图文解释

  • 收集输入索引(input indexes) 和相关的空间索引(associated spatial indexes)并复制输出位置(Duplicate output locations)。
  • 首先生成输入特征的索引relu0,根据输入坐标的索引生成关联空间坐标的索引rule1,在空间索引执行unique parallel (去重)算法,获得输出索引(output indexes)和对应的空间索引associated spatial indexes)。
  • 生成一个与稀疏数据的相同空间维度的缓冲区,用于查找表。接着就计算relu0和relu1在输出坐标的的索引位置变换
  • 对规则进行迭代,并使用存储的空间索引来获得每个输入索引对应的输出索引。可以通过relu0特征映射返回到原始的特征坐标

2.具体的伪代码实现如下(按照上面的步骤进行了一一对应):

  • Indice Coordinates of active points 活动点索引坐标
  • Grid A buffer with dimensions of N x D x H x W 具有尺寸N x D x H x W 网格 A 缓冲区 描述了一个具有四个维度的网格 A 缓冲区,其维度分别为 N、D、H 和 W(N表示网格中的数量,D表示网格的深度维度,H为高度维度,W表示网格中的宽度维度)
  • 为输入索引

    为输出索引
  • 输入点的数量

    为卷积核的体积

    为输出点的数量

  • 收集输入索引(input indexes) 和相关的空间索引(associated spatial indexes)并复制输出位置(Duplicate output locations)。

  • 空间索引执行unique parallel 算法,获得输出索引(output indexes)和对应的空间索引associated spatial indexes)。

  • 生成一个与稀疏数据的相同空间维度的缓冲区,用于查找表。

  • 对规则进行迭代,并使用存储的空间索引来获得每个输入索引对应的输出索引
3.2 Submanifold Convolution(子流形稀疏卷积网络)

  • (a) VGG块由两个VSC卷积和一个最大池操作组成
  • (b)ResNet(block) 保持空间分辨率的ResNet块将两个VSC卷积的输出添加到输入中
  • (c)减少空间分辨率的ResNet块通过一条SC卷积代替第一个VSC卷积和(隐式)标识函数
  • (d)保持空间分辨率的密集网块将两个VSC卷积的输出与输入连接起来
  • (e)减少空间分辨率的密集网块执行单个VSC卷积和平均池化
3.3 Sparse Convolutional Middle Layers(中间提取器)

中间提取器用来学习关于z轴的信息,并将稀疏的3D数据转换为2D BEV图像。如下图显示了中间提取器的结构。稀疏卷积特征提取网络包含了稀疏卷积层(由黄色表示), submanifold convolution(白)以及稀疏到稠密的转换层(红)

三.RPN(区域生成网络)

  • 我们使用Conv2D(count,k,s)来表示Conv2D-batchnorm-reluDeConv2D(cout,k,s)来表示DeConv2D-batchnorm-relu层(其中K内核大小s步幅,cout输出通道的数量)
  • 所有的层在所有维度上都有相同的大小,所以我们使用标量值k和s所有的Conv2D层都有相同的填充,所有的DeComv2D层都没有填充。在我们的RPN的第一阶段,应用了三个Conv2D(128,3,1)层。然后,在第二和第三阶段分别应用5个Conv2D层(128,3,1)和5个Conv2D层(256,3,1)。

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值