基于注意力机制的PointPillars+三维目标检测

2020-06-17 01:36詹为钦倪蓉蓉
关键词:注意力卷积特征

詹为钦,倪蓉蓉,杨 彪

(1.常州大学 信息科学与工程学院,江苏 常州 213164;2.常州纺织服装职业技术学院 能源管理科,江苏 常州 213164)

深度神经网络在计算机视觉领域取得了突破性进展,以传统机器学习算法为主导的二维目标检测算法正被深度神经网络算法[1]所取代.基于深度神经网络的目标检测算法在检测精度和识别率方面都优于传统目标检测算法.人们也在尝试将深度神经网络应用在其他检测领域.自动驾驶是三维目标检测领域的前沿应用方向,车辆在自动驾驶过程中,需要对周围的车辆、行人等目标进行检测和行为预测.

传统二维图片检测算法,使用车载相机作为数据来源,依赖外部光源,且无法精确定位目标车辆、人物的距离、位置、深度和角度等信息.由车载激光雷达所生成的三维点云数据,则包含了目标对象的位置、距离、深度和角度等信息,数据构成更符合真实情况.车载激光雷达具有测距准、无需可见光等优点.基于点云数据集的目标检测算法可以为自动驾驶系统提供目标对象的准确空间方位、速度等信息.因此研究基于点云数据的三维目标检测十分必要.

三维目标检测算法可分为单步检测算法和双步检测算法.单步检测算法通过使用卷积神经网络对鸟瞰图提取特征来实现.具有实现简单、检测速度快等优点.但在将点云数据转化为鸟瞰图时,会造成目标空间特征信息丢失.文献[2]将点云数据划分为一定数量的体素,使用体素特征编码层提取局部特征,再使用三维卷积层和区域候选网络对目标分类和回归.文献[3]通过在文献[2]网络中添加稀疏卷积层的方法,提高了网络的整体检测速度以及检测效果.文献[4]将检测最小单元从文献[2]中的体素改为柱,通过柱特征网络提取柱内点云特征并生成伪图,最后通过区域候选网络和单步多尺度检测网络实现目标检测任务.单步检测速度较快,精度适中,在车载嵌入式领域有广泛的应用.文献[5]对RGB图像使用检测算法以生成若干个目标建议区,接着在对应点云数据上延轴线生成若干个截锥体块,最后对每个截锥体块采用文献[6]的方法提取特征并输出检测结果.双步检测算法由于需要同时检测RGB图像和点云数据,因此检测速度通常慢于单步检测算法,而检测精度一般高于单步检测算法.

注意力机制可以对网络的输入数据按不同部分赋予权重,抽取其中关键信息,抑制不重要信息.帮助网络学习数据中的重要信息,以做出更加准确的判断.注意力模块计算要求低,不会给算法的训练、运行、计算和存储带来太多额外开销.文献[7]对通道重新加权,模块首先对输入(H×W×C1)使用压缩操作,输出大小为(1×1×C1)的特征图;接着使用提取操作,另参数ω学习C1个通道间的相关性,生成(1×1×C2)的特征图;最后输出堆叠后的特征图(H×W×C2),C2即为加权后通道值.文献[8]结合通道注意力和空间注意力2种注意力机制,重新加权通道和空间位置,并通过自主学习的方式学习每个特征空间的重要性程度.目前注意力模块被广泛应用于计算机视觉和自然语言处理等相关领域.

为进一步提取伪图中特征信息,笔者在文献[4]检测算法基础上提出一种基于注意力机制的PointPillars+三维目标检测算法,算法引入空间注意力模块及通道注意力模块.使用卷积神经网络对注意力模块输出结果进行处理,并使用SSD (single shot multibox detector)[9]算法进行三维目标检测.

1 检测网络模型

PointPillars+注意力模型如图1所示,网络输入点云数据集,计算并得出目标的预测结果.网络主要分为4个部分:① 柱特征网络,在三维空间中对点云数据按等尺寸柱均匀划分,并提取柱内点云特征生成伪图;② 注意力模块,对伪图特征数据更进一步加工(特征的放大和抑制);③ Backbone模块,将经过注意力模块处理过的伪图进行多尺度的特征提取;④ 检测模块,负责目标对象的检测,三维边界框的生成和回归.

图1 PointPillars+注意力模型

1.1 柱特征网络

首先对点云数据进行划分,点云数据中的点L用(x,y,z)表示.柱特征网络将点云数据均匀分布在基于Oxy平面的网格中.由这些网格组成1组柱集合,即柱Pillars.柱Pillars在z轴上没有高度限制.点L添加rf,xm,ym,zm,xp,yp信息来增强表示,rf为反射率;xm,ym,zm分别为点L到柱中所有点的算术平均值距离;xp,yp分别为点L距柱中心(x,y)的方向偏离.因此网络中的1个点L由9维特征表示.点云数据集具有稀疏性,空间中大部分的柱都为空柱,少数非空柱也只有很少的点.点云数据使用0~97%的稀疏度,通过对每个样本的非空柱数(P)和每个柱的点数(N)实施限制来利用这种稀疏度(D),以此产生尺度为(D,P,N)的疏密度张量.如果样本或柱中保留过多数据,则通过随机采样保留数据以适应张量.相反,如果样本或柱中数据过少,则使用0填充张量.接着使用类似PointNet[6]的网络,使每个点通过线性层、BatchNorm层和ReLU层,输出大小为(C,P,N)的张量.对通道C使用最大化操作,得到大小为(C,P)的张量.线性层可以用卷积核为1×1的卷积层替代,这种替代方法可以提高计算效率.最后,特征被按照原始柱的位置组合堆积起来,形成大小为(C,H,W)的伪图,其中,H和W分别为伪图的高度和宽度.生成伪图后,送入注意力模块,对伪图中特征进行处理.

1.2 注意力模块

注意力模块的主要功能:期望通过添加注意力机制来增加数据的表征能力,使网络学习伪图特征中的重要信息并抑制不重要的信息.注意力机制是受人的行为特点启发所发明,当人们需要做出决定时,会有选择性地使用数据中重要的部分作为判断的主要依据.与之类似,人工模型在处理问题时,不会平等地处理所有数据,而是只关注其中重要数据,这一过程称为注意力机制.当处理的问题是输入本身时,通常称为自我注意力.自我注意力对于网络学习给定任务十分有意义.例如,在分类任务下,自我注意力以关注信息特征的形式表现出来.假设输入特征图F∈RC×H×W,参考CBAM[8]注意力模型将F分为一维的通道注意力Mc∈RC×1×1和二维的空间注意力Ms∈R1×H×W.整个注意力处理过程如下:

F′=Mc(F)⊗F,

(1)

F″=Ms(F′)⊗F′,

(2)

式中:F′为经过通道注意力加工后的数据;F″为经过空间注意力加工后的数据;⊗为逐元素乘法.

1.2.1通道注意力

模块采用通道内部间的特征关系来产生通道注意力,如图2所示.由于每个通道的特征图都被看作特征探测器,因此通道注意力主要试图找出输入数据中“有意义”的部分.为了提高计算通道注意力的效率,对输入数据的空间维度进行了压缩.为了汇总空间信息,通道注意力同时采用了最大池化和平均池化来聚合特征图的空间信息,分别用Fcmax,Fcavg表示.接着将上述信息转入共享网络中以产生通道注意力Mc∈RC×1×1.共享网络由单隐层的多层感知机组成,为了减少参数开销,隐藏层激活大小设置为R(C/r)×1×1,其中r为缩减比例.在这之后使用逐元素相加法,输出合并后的特征向量.通道注意力[8]为

Mc(F)=σ{MLP[AvgPool(F)+MaxPool(F)]}=

σ{W1[W0(Fcavg)]+W1[W0(Fcmax)]},

(3)

式中:MLP为多层感知机;AvgPool为平均池化;MaxPool为最大池化;σ为sigmoid函数;W0,W1均为多层感知机的可学习参数,W0∈R(C/r)×C,W1∈RC×(C/r).

图2 通道注意力

1.2.2空间注意力

模块利用特征的内部空间关系生成空间注意力,如图3所示.与通道注意力不同,空间注意力更关注信息的具体位置,是对通道注意力的补充.为了计算空间注意力,在通道注意力之后依次进行平均池化和最大池化,通过2个池化操作,依次生成2个二维特征图:Fsavg,Fsmax.接着将两者连接起来输入卷积层,生成Ms∈R1×H×W.

图3 空间注意力

空间注意力[8]计算如下:

Ms(F)=σ{f7×7[AvgPool(F);MaxPool(F)]}=

σ{f7×7[Fsavg;Fsmax]},

(4)

式中:f7×7为7×7的卷积核卷积操作.

1.3 Backbone模块

Backbone模块分为下采样网络和上采样连接网络.下采样网络可由一系列(S,H,O)的块表示,其中:S为步长;O为输出通道数;H为3×3的二维卷积层层数.每个通道后都接有BatchNorm层和ReLU层,层内的第1个卷积具有步幅S/Sin,以确保网络层在接收到步长Sin的输入后,仍保持为S.层中的后续卷积步长均为1,3层的通道数分别为64,128,256.下采样网络可以产生依次减小的空间分辨率.上采样连接网络Up(Sin,Sout,SF)从初始步幅Sin到最后步幅Sout并得到最终特征SF,和下采样网络相同,上采样网络后都接有BatchNorm层和ReLU层.最终输出来自不同步长的所有模块连接.

1.4 检测模块

检测模块采用了SSD进行目标检测,SSD是典型的单步检测算法,检测速度快,精度高.SSD网络中引入了锚的思想,可以适应多尺度的目标检测任务,较为符合点云数据尺度变换较大的特点.SSD主要分为6个模块,第1个模块由VGG16的前5层Conv1-Conv5卷积层组成,接着将VGG16中的FC6,FC7全连接层转变为Conv6,Conv7卷积层为第2模块,在此基础上,又添加了Conv8,Conv9,Conv10和Conv11卷积层4个模块,以此提取不同尺度下的目标信息,最后进行目标分类检测和非极大值抑制回归位置操作.非极大值抑制使用了二维IoU[10],将先验边界框与真实目标相匹配.提出的SSD检测算法可以替换成其他检测算法,如Faster R-CNN[1]等.

1.5 损失函数

参考文献[4]设置损失函数.真实目标的边界框由(x,y,z,w,l,h,θ)表示,其中:x,y,z为边界框中心坐标;w,l,h分别为边界框的宽度、长度和高度;θ为边界框绕z轴的偏航旋转角度.目标和锚点之间的线性回归残差定义为

(5)

因此总的定位损失函数为

(6)

式中:SmoothL1为L1平滑函数.

因为定位损失无法区分边界框是否翻转,因此使用Ldir在离散方向上学习边界框方向.分类损失使用focalloss损失函数,即

Lcls=-αa(1-Pa)γlogPa,

(7)

式中:Pa为锚点的概率值;αa=0.25;γ=2.

总的损失函数为

(8)

式中:Npos为正概率锚数;βloc=2;βcls=1;βdir=0.2.

损失函数使用的是Adam优化器,初始学习率为2×10-4,每15个周期衰变为当前学习率的0.8倍,试验参数均来自文献[4],并使用KITTI[11]官方点云数据集,通过两折交叉验证法证实参数有效性.

2 试验相关

2.1 数据集

试验数据来自KITTI[11]官网,它是目前自动驾驶领域最重要的数据集之一.由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合建立.KITTI数据集包含点云和图像数据.数据集内包含市区、乡村和高速公路等真实驾驶场景的数据图像.每张图像中最多包括15辆车和30个行人,以及不同程度的遮挡物等.在训练过程中只使用KITTI点云数据.根据惯例,将数据集划分为7 481个训练集和7 518个测试集.在训练过程中,又将训练集分为3 712个训练样本和3 769个验证样本.

2.2 试验细节

试验环境为Ubuntu 16.04操作系统,Python 3.7,Pytorch 1.1.处理器为Intel i5 CPU,显卡为Nvidia 1080 GPU.默认参数:柱的x,y分辨率都为0.16 m;最大柱数(P)为12 000 个;柱内最大点数(N)为100 个.每个类的锚点由宽度、长度、高度和z中心组成,具有0°和90°这2个方向.二维IoU将锚点与真实目标匹配时,正匹配通常选择标记值中最高的或大于正匹配阈值的.负匹配则选低于负阈值的.匹配时使用轴对齐的非最大抑制方法,重叠阈值为0.5倍IoU.汽车的x,y,z阈值分别为(0,70.4),(-40.0,40.0),(-3.0,1.0)m.锚宽、长度和高度分别为1.60,3.90,1.50 m,z中心为-1.00 m.匹配正负阈值为0.60和0.45.行人和骑行者的x,y,z阈值分别为(0,48.0),(-20.0,20.0),(-2.5,0.5)m.行人锚宽、长度和高度分别为0.60,0.80,1.73 m,骑行者锚宽、长度和高度分别为0.60,1.76,1.73 m,两者z中心均为-0.60 m.

2.3 数据增强

数据增强通过增加数据样本提高网络的泛化能力及检测效果.首先为所有类创建基于真实目标的三维边界框查找表以及边界框内的点云.对每个样本,采用随机选择15辆汽车及8位骑车者的真实样本,将它们放入当前点云数据中参与网络训练.接下来逐个增加真实目标的边界框,对每个边界框分别旋转[-π/20,π/20]以及平移操作,其中框的x,y,z坐标按N(0,0.25)的正态分布进行转换,模型通过以上操作实现训练样本集数量的增加.最后,对所有边界框沿x轴进行镜像翻转并按N(0,0.20) 的正态分布绘制x,y,z全局平移,模拟定位噪声.

3 结果分析

3.1 定量分析

定量分析评测分为鸟瞰图、二维、三维和平均方向相似性几种方法.KITTI官方数据集分为简单、中等和困难3种难度,KITTI官网排行榜按中等难度数据集排名.鸟瞰图模式、三维模式、AOS模式验证结果分别如表1-3所示,其中:mAP为平均均值精度;mAPm为汽车、行人以及骑行者中等难度下mAP的均值;检测算法均为单步目标检测算法.

表1 鸟瞰图模式验证结果

表2 三维模式验证结果

表3 AOS模式验证结果

从表1,2可以看出:PoinPillars+并行注意力在所有类检测结果中均取得良好的结果,相对于PointPillars算法,鸟瞰图下,mAPm从66.19增加到69.95,汽车的mAP从86.10增加到87.73;三维模式下,mAPm从59.20增加到62.55,汽车的mAP从74.99增加到76.25.除骑行者类中等难度以外,PoinPillars+并行注意力在鸟瞰图和三维2种方法下,均优于表中其他检测模型,骑行者类中等难度检测结果也与第1名相差不大.证明了PoinPillars+并行注意力模型的有效性,以及注意力机制的有效性.

从表3可以看出:行人和骑行者的mAP检测结果略有下降,并不理想,考虑到平均方向相似性模式和三维模式的主要检测区别在于是否判别目标方向,推测是模型在提高了检测结果后,丢失了一部分的方向信息.通过观察三维模式和鸟瞰图模式中行人检测结果的mAP大幅提升,可以说明这个问题.

3.2 定性分析

在训练过程中仅使用点云数据集,为了便于研究、观察和解释说明,分别展示了鸟瞰图和RGB图像的边界框预测结果.正例试验结果如图4所示.

图4 正例试验结果

从图4可以看出:检测结果具有紧密且定向的三维边界框.汽车的预测结果也较准确,此外鸟瞰图的三维边界框与RGB图像中的边界框的对应关系也很明显,没有发现误报、错报等错误现象.反例试验结果如图5所示,所展示的为一些常见的检测失败结果.主要包括对困难样本(部分遮挡或距离较远)或相似类别(卡车与大型客车)误报.此外检测行人和骑行者更加困难,行人和骑自行车者通常被错误分类,行人和桌子组合被误判为骑行者.此外,行人也容易被误判为杆、树干之类的物体,此处也更进一步说明了平均方向相似性模式下,模型行人检测率较低的原因.

图5 反例试验结果

4 结 论

提出了一种基于注意力机制的PointPillars+注意力机制的目标检测模型,用来检测真实交通场景下的汽车、行人和骑行者检测.将训练的模型结果与以往模型的结果相比较可以发现,PointPillars+并行注意力检测模型在预测结果方面有较大优势.2组注意力机制对比结果表明:并行注意力机制更适用于本模型,注意力机制的内部结构,也对模型检测结果的准确率有十分重要的影响.

猜你喜欢
注意力卷积特征
根据方程特征选解法
离散型随机变量的分布列与数字特征
让注意力“飞”回来
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络的分析与设计
从滤波器理解卷积
不忠诚的四个特征
基于傅里叶域卷积表示的目标跟踪算法
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things