【阅读笔记】voxelnet

2018年提出的voxelnet,把阅读过程中的一些关键内容和没看懂的地方做下笔记。

摘要

关键词:将高度稀疏的雷达点云与区域建议网络(RPN)进行接口。将特征提取和包围框预测统一到一个阶段,是一个端到端可训练的深度网络。引入体素特征编码层voxel feature encoding(VFE),点云被编码为描述性的体积表示,然后将其连接到RPN以产生检测。

介绍

由于3D空间的非均匀采样、传感器的有效范围、遮挡和相对姿态等原因,LiDAR点云稀疏且在空间上有高度可变的点密度。为了解决这些问题,传统手工方法有:

  • 将点云投影到透视图中,并应用基于图像的特征提取技术
  • 将点云光栅化为3D体素网格,并用手工制作的特征编码每个体素

手工设计选择引入了一个信息瓶颈,阻止这些方法有效地利用3D形状信息和检测任务所需的不变性。

  • 考虑到图像提供了详细的纹理信息,许多算法从2D图像推断出3D包围盒
  • 还存在多种结合图像和激光雷达的多模态融合方法以提高检测精度
  • pointnet,直接从点云学习点特征;及其改进,使网络能够在不同的尺度上学习局部结构

pointnet及其改进在所有输入点(1k点)训练特征变换网络(feature transformer networks)。由于使用LIDARS获得的典型点云包含100K点,因此pointnet中的体系结构导致高的计算和存储器需求。将3D特征学习网络扩展到多个数量级和3D检测任务是我们在本文中所要解决的主要挑战。

我们设计了一种新的体素特征编码(VFE)层,它能够在体素中实现点间交互,通过将点特征与局部聚集特征相结合。 堆叠多个VFE层允许学习复杂特征以表征局部3D形状信息。具体而言,VoxelNet将点云划分为等间距的三维体素,通过堆叠的VFE层编码每个体素,然后3D卷积进一步聚集局部体素特征,将点云转换为高维体积表示。最后,RPN消耗体积表示并产生检测结果。这种有效的算法既有利于稀疏点结构,又有利于体素网格的有效并行处理。

网络结构

所提出的VoxelNetwork由三个功能块组成:
(1)特征学习网络,将点云划分为voxel形式,使用层级的VFE层提取特征,得到稀疏的voxel-wise特征张量。
(2)卷积中间层,使用3D卷积,得到全局特征张量。
(3)区域建议网络,特征整合,anchor提取,输出预测结果:概率预测图,回归图。
如图2所示。
在这里插入图片描述

2.1.1 feature learning network

voxel partition体素划分
将DxWxH的点云空间划分为等距的体素,每个voxel大小为VDxVWxVH

grouping分组
每个体素中点的个数不同,大量体素中没有点

random sampling随机抽样
随机地从包含多于T个点的体素随机采样固定点T。该采样策略有两个目的,(1)计算节省;和(2)减少体素之间的点的不平衡,减少采样偏倚,并且增加训练的变化。

stacked voxel feature encoding堆叠体素特征编码
关键的创新是VFE层的链。为了简单起见,图2示出了一个体素的分层特征编码过程。在不损失一般性的情况下,我们使用VFE层-1来描述下面段落中的细节。图3显示了VFE层-1的体系结构。
在这里插入图片描述
对于输入 在这里插入图片描述
首先计算所有点坐标点均值,作为该体素的质心,此时可将体素格内所有点的特征数量扩充为七维(虽然并没有信息增加,但是却把全局特征xi,yi,zi和局部残差结合到了一起)

在这里插入图片描述
对每一个的piˆ通过全连接层(FCN)转化到特征空间,输入的特征维度为7。FCN层由一个线性层,一个批规范化层BN,一个RELU层组成,得到逐点的(point-wise)的特征表示
在这里插入图片描述
接着我们采用最大池化(MaxPooling)对上一步得到的特征表示进行逐元素的聚合,这一池化操作是对元素和元素之间进行的,得到局部聚合特征(Locally Aggregated Feature)
在这里插入图片描述
最后,将逐点特征和逐元素特征进行连接为fout,那么对于一个含有t个点的voxel,输出的特征集合为
在这里插入图片描述
​对于所有的非空的体素格我们都进行上述操作,并且它们都共享全连接层(FC)的参数。经过VFE以后特征的维数变化为(cin,cout),那么显然全连接层的参数矩阵大小为(cin,1/2cout)???

由于VFE层中包含了逐点特征和逐元素特征的连接,经过多层VFE以后,我们希望网络可以自动学习到每个体素内的特征表示(比如说体素格内的形状信),那么如何学习体素内的特征表示呢?原论文的方法下图所示:
在这里插入图片描述
通过对体素格内所有点进行最大池化,得到一个体素格内特征表示 C 。

sparse tensor representaion稀疏张量表示
获得的体素特征列表可以表示为一个大小为C×D’×H’×W’的稀疏的4D张量(D’=D/VD),超过90%的体素通常是空的。表示非空体素特征作为稀疏张量极大地减少了在反向传播期间的内存使用和计算成本,并且它是我们高效实现的关键步骤。

例如
在这里插入图片描述

2.1.2convolutional middle layers

ConvMD(Cin,Cout,k,s,p),含义分别是channel−in,channel−out,keisize(k∗k∗k),stride−size,padding。基础结构有3D卷积,BN和Relu。

2.1.3 region proposal network

在这里插入图片描述
输入是 Convolutional Middle Layers出来的feature map。
网络中有3个全卷积的block。每个block通过步长为2(stride=2)的下采样,feature map大小减半。第2、3个block再上采样为固定大小(H/2撇×W/2撇),三个block连接(concat)起来为768xH’/2xW’/2。(D维和特征维度融合了?不确定)
这个特征再计算得到概率得分图和回归图(probability score map, regression map)。

probability score map为2通道,为前景和背景的得分。
regression map为14通道,这是因为每个bounding box都用7维来表示,即中心位置+长宽高+yaw轴(绕y轴转角)。
(为什么没有pitch和roll?因为默认地面水平!)

损失函数loss function

只关注置信度高的正负预测,分别计算正负类的交叉熵损失,对于回归计算L1范数,三者加权组合得到最终的loss。

预测锚点anchor位置为在这里插入图片描述
groundtruth右上角标为g。则可定义如下残差
在这里插入图片描述
其中da是anchor框底部的对角线长度,用来对Δx与Δy归一化。于是损失函数为
在这里插入图片描述
前面两项是归一化判别损失,其中的ppos和pneg分别表示softmax层对aposi和anegj的分数。采用的是交叉熵表示,α和β
为正定平衡系数。最后一项是回归损失,采用的是SmoothL1损失。

参考文档

参考文档

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值