一种改进的单步多框目标检测算法

2021-04-12 08:51王燕妮刘祥刘江
西安交通大学学报 2021年4期
关键词:空洞卷积注意力

王燕妮,刘祥,刘江

(1.西安建筑科技大学信息与控制工程学院,710055,西安;2.西安现代控制技术研究所,710065,西安)

目标检测的任务是找出图像中的感兴趣目标,确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于不同图像中待检测目标的类别、外观、数量、尺度、位置等不同,且存在遮挡等干扰因素,使目标检测在机器视觉领域成为最具挑战性的任务。目标检测在红外探测技术、智能视频监控、遥感影像目标检测、医疗诊断[1-4]以及智能建筑中的火灾、烟雾检测中都有广泛应用。

目标检测算法可以分为传统目标检测算法和基于深度学习的目标检测算法,传统目标检测算法使用手工设计特征来检测,首先在图像上选择候选区域,对这些区域进行特征提取,最后使用分类器进行分类。代表算法有尺度不变特征变换算法(SIFT)[5]和维奥拉-琼斯算法(V-J)[6]等,但该类算法时间复杂度高且鲁棒性较差。

基于深度学习的目标检测算法,根据是否有产生候选区域的机制分为两阶段目标检测算法和单阶段目标检测算法。两阶段目标检测算法有基于区域的卷积神经网络(R-CNN)[7]算法、快速基于区域的卷积神经网络(Fast R-CNN)[8]算法和更快的基于区域的卷积神经网络(Faster R-CNN)[9]算法等。R-CNN算法通过选择性搜索算法对输入图像提取候选区域,利用卷积神经网络提取特征,最后通过支持向量机SVM[10]进行分类;Fast R-CNN在R-CNN的基础上,加入了感兴趣区域,通过多任务损失函数,实现端到端的训练;Faster R-CNN采用候选区域生成网络(RPN)代替了选择性搜索算法,提高了算法的速度和准确率。单阶段目标检测算法利用回归的思想,直接在输入图像上回归出目标的类别及边框。单阶段目标检测算法有快速目标检测算法(YOLO)[11]和SSD[12]:YOLO采用全图信息进行预测,极大地提高了检测速率;SSD算法借鉴了Faster R-CNN中的思想,在提高检测速度的同时也提高了检测精度。

目标检测算法中经常会存在误检、漏检等问题,因此本文以SSD算法为基础,对其进行改进,以提升检测效果,可以较好地改善误检、漏检情况。

1 SSD算法

1.1 SSD网络结构

SSD目标检测算法使用视觉几何群网络VGG-16[13]作为基础网络,并且将网络中原本的全连接层fc6和fc7转换为3×3的卷积层,将分类层替换为4组卷积层,用来获取更多特征图用于检测,网络结构如图1所示。由图1可以看出,SSD采用多尺度特征图进行检测,其中大尺度特征图用于检测小目标,小尺度特征图用于检测中、大目标,这种检测策略可以提高识别的准确度,提高了对不同物体尺寸变化的泛化能力。

图1 SSD网络结构图

1.2 SSD候选框

如1.1节中所述,SSD采用多尺度特征图进行检测,分别选取conv4_3、conv7、conv8_2、conv9_2、conv10_2、conv11_2共6个特征图。SSD借鉴了Faster R-CNN中锚点框的思想,在每个特征图上设置不同尺寸、长宽比的候选框,候选框的尺寸计算公式如下

(1)

式中:sn表示候选框与图片的比例;smax和smin代表比例的最大值和最小值,分别取值为0.9和0.2;e代表特征图的个数。

(2)

1.3 SSD算法损失函数

SSD算法中的损失函数定义为位置误差Lloc和置信度误差Lconf的加权和,计算公式为

(3)

采用Smooth Ll loss[14]计算SSD算法中的位置误差,对候选框的中心(xc,yc)及宽度(w)、高度(h)的偏移量进行回归,公式如下

(4)

(5)

(6)

SSD算法中的置信度损失,使用softmax loss表示,Neg代表负样本集,公式如下

(7)

2 改进SSD算法

为改善SSD算法中存在的误检漏检等问题,本文结合空洞卷积[15]、反卷积[16]和注意力机制,提出一种改进的SSD目标检测算法。算法首先使用连续3次空洞卷积替代原本conv4_3卷积层及之前的2次卷积操作;然后结合反卷积的思想,对基础网络提取出的不同尺度的特征图进行特征融合;最后在每个用于检测的特征图后添加注意力模型,以达到提高检测能力的效果。

2.1 空洞卷积和反卷积

空洞卷积也称为膨胀卷积,是一种改进的图像卷积方法,在标准卷积的基础上注入空洞,以此扩大感受野。在空洞卷积中,增加了一个扩张率参数d,(d-1)为卷积核之间填充的空洞数量,扩张率越大,卷积核之间的空洞数量越多,感受野越大,通过调整扩张率参数控制空洞卷积中空洞填充的大小。扩张率参数为1时,即为标准卷积。标准卷积和空洞卷积示意图如图2所示。

图2 标准卷积和空洞卷积操作示意图

加入空洞卷积后卷积核尺寸计算公式为

q=k+(k-1)*(d-1)

(8)

式中:q为加入空洞卷积后的卷积核尺寸;k为加入空洞卷积之前的卷积核尺寸。

加入空洞卷积后特征图尺寸的计算公式为

(9)

式中:o为加入空洞卷积后的特征图尺寸;a为输入特征图尺寸;s为步长;p为填充。

反卷积也称为转置卷积,是标准卷积操作的逆运算,用来对特征图尺寸进行还原,解决经过一系列卷积池化操作等运算后特征图分辨率变小的问题,扩大感受野。标准卷积和反卷积的操作示意图如下。

图3 标准卷积和反卷积操作示意图

使用反卷积输出特征图尺度的计算公式如下

O=s(a-1)+k-2p

(10)

式中:O为反卷积输出特征图尺寸。

2.2 注意力机制

计算机视觉借鉴了人类视觉系统中的注意力机制,对一幅图像中的感兴趣区域进行重点关注,抑制其他干扰区域带来的影响。在深度学习中,通过对特征图添加掩码来实现注意力机制,就是对特征图添加权重,将感兴趣区域的特征标识出来,通过神经网络的训练,让网络学到每一幅图像中需要重点关注的感兴趣区域,这样就形成了深度学习中的注意力,以此提高神经网络处理信息的能力。从注意力域的角度,可以分为空间域、通道域和混合域。

空间域将图像中的空间信息变换到另一个空间中并保留了关键信息。Jaderberg等提出空间变换网络的网络模型,模型结构如图4所示[17],H为特征图的高,W为特征图宽,C为通道数。对图像中的空间域信息做对应的空间变换,提取特征图中的关键信息。在卷积操作后,不同卷积核产生的通道信息所包含的信息量及重要程度不同,故使用同样的变换器解释性不强,因而一般用于图像输入层之后。

2018年11月26日,机电一体化专家博泽中国太仓新基地举行了开业庆典仪式。多名博泽集团和中国区领导层、太仓市政府领导和业界人士共同出席了此次活动。

图4 空间域模型结构图

通道域主要分布于通道中,表现在图像上就是对不同图像通道的关注程度不同。Hu等提出通道域注意力机制[18]结构如图5所示。图中X为输入特征,通过卷积操作生成新的特征U,通过全局平均池化操作将其挤压成通道数为C的一维向量,通过激励函数获得权重,最后对特征图上每个像素点加权。

图5 通道域模型结构图

混合域是结合空间域和通道域的注意力机制。Fei等提出了基于注意力机制的残差学习方式[19],其添加的掩码借鉴了残差网络的思想,不只根据当前网络层的信息添加掩码,还添加了上一层的信息,防止了掩码后信息量过少引起的网络层数不能堆叠很深的问题。这可以看做每一个特征元素的权重,通过给每个特征元素找到其对应的注意力权重,就同时形成了空间域和通道域的注意力机制。

2.3 改进SSD算法

在SSD目标检测算法中,采用多尺度特征图的方法对目标进行检测,其中底层特征图对应细节信息,高层特征图对应抽象的语义信息。底层特征图上的小目标物体在经过一系列卷积、池化等操作后,获得的高层特征图上保留的信息将变得更少,所以对小目标物体的检测更不敏感。因此,在SSD算法中,底层特征图用于对小目标进行检测,高层特征图用于对中、大目标进行检测。

感受野是指在卷积神经网络中,每一层特征图像素在输入图像上映射区域的大小。在SSD算法中,选择conv4_3、conv7、conv8_2、conv9_2、conv10_2、conv11_2这6个特征图用于检测,conv4_3为底层特征图,包含的细节信息丰富,但语义信息较少,同时感受野较小;其他5个为高层特征图,包含的细节信息较少,语义信息丰富,感受野较大。只有conv4_3一个底层特征图用于对小目标进行检测,细节信息不足且没有利用到高层的语义信息,导致SSD算法对小目标物体检测效果较差。因此,引入空洞卷积,通过对扩张率进行调节,使具有相同尺寸的卷积核感知到更广泛的感受野,防止局部信息丢失,挖掘多尺度信息。

如1.1节中所述,SSD算法采用VGG-16为基础网络进行特征图提取,通过叠加使用3次3×3卷积核替代7×7卷积核,有效减少了参数量,保证了检测算法的实时性。在感受野相同的情况下,引入了更多层的非线性函数,一定程度上加深了网络深度,使网络学到更复杂的特征,提升检测效果。为了增大卷积核的感受野,更容易获得待检测物体的全局特征,本文使用3次扩张率d=1,2,4的空洞卷积,替换原本conv4_3卷积层及之前的2次卷积核尺寸为3×3的标准卷积,以达到扩大感受野的作用。引入空洞卷积结构与原始标准卷积结构对比如图6所示,空洞卷积感受野计算公式如下

图6 引入空洞卷积结构与原始标准卷积结构对比

v=2*(d-1)*(k-1)+k

(11)

式中:v为空洞卷积感受野范围。

图7 感受野对比图

表1 特征图尺度和参数值的对比

图8a表示算法输入图像,图8b表示原算法进行标准卷积后的conv4_3特征图输出,图8c表示由空洞卷积替代标准卷积后的conv4_3特征图输出。对比图8b和图8c,在使用空洞卷积替换原标准卷积后,扩大了输出的特征图感受野,但是细节信息较之前有所下降,可能对检测结果产生不利影响,故需要引入反卷积和注意力机制。通过反卷积将空洞卷积输出的底层特征图和高层特征图进行特征融合,可以同时具有较丰富的细节信息和语义信息;同时通过注意力机制,使网络对图像中复杂的信息进行再次整合。

(a)输入图像

在进行特征融合时,首先对conv4_3进行扩张率为2的空洞卷积以扩大感受野;然后对具有丰富语义信息的特征图conv9_2进行反卷积操作,对其进行特征图尺寸的还原,扩大感受野;最后通过元素相加的方式进行融合,直接对2个特征图进行相加,没有改变通道数,节省了计算量。通过融合将高层特征图中的语义信息映射到用于检测小目标物体的底层特征图中,相比融合前包含了更丰富的上下文信息,对小目标物体的检测更敏感,同时也增强了网络的辨识能力。

本文引入通道注意力机制,分为挤压、激励和注意3个步骤。

挤压操作的公式如下

(12)

式中:H、W分别为输入的高度、宽度;U为输入特征图;Y为挤压操作的输出;C为输入的通道数。式(12)将HWC的输入转化为1×1×C的输出,相当于进行了一次全局平均池化操作。

激励操作的公式如下

S=h-Swish(W2ReLU6(W1Y))

(13)

式中:S为激励操作的输出;W1的维度为C/β×C,W2的维度为C×C/β,β为一个缩放参数,本文取值为4。W1与Y相乘代表全连接操作,然后经过ReLU6激活函数;再与W2相乘,也代表一次全连接操作,最后再经过h-Swish激活函数,就完成了激励操作。ReLU6和h-Swish激活函数的图像如图9所示,公式如下

(a)ReLU6函数图像

(14)

注意操作的公式如下

X=SU

(15)

式中:X为添加注意力机制后的特征图。通过该方法为融合后的特征图和其他5个特征图分别添加注意力模型,为特征图通道上的信号添加权重。这个权重代表与感兴趣区域的相关度,使网络投入更多关注对感兴趣区域进行学习,忽视不重要的区域,使训练的模型学习能力提升,能更充分地学习到待测物体的多种特征信息,以提升检测效果。本文提出的改进SSD算法网络结构如图10所示。

图10 改进SSD算法网络结构图

3 实验结果

3.1 实验环境

本文的实验平台为i7-8700处理器,NVIDIA GeForce TX1070Ti显卡,基于深度学习框架Keras。使用PASCAL VOC数据集,包含20个类别,分别为人、鸟、猫、牛、狗、马、羊、飞机、自行车、船、巴士、汽车、摩托车、火车、瓶子、椅子、餐桌、盆栽植物、沙发、电视。本文使用VOC2007和VOC2012作为训练集,使用VOC2007作为测试集。训练时采用随机梯度下降法(SGD),批量设置为32,初始学习率设置为0.001,动量参数设置为0.9,学习率在迭代次数为100 000和150 000时调小90%,共训练200 000次。

3.2 检测效果客观评价

本文使用平均检测精度(mAP)作为检测算法的评价指标。检测到的每一个类别都会得到由查准率和查全率构成的曲线,曲线下的面积就是单个类别的检测精度(AP),对所有类别的检测精度求平均,即可得到平均检测精度。

以VOC2007和VOC2012数据集为训练集,VOC2007为测试集,将本文算法与原始SSD算法、基于反卷积的单步多框目标检测DSSD算法[20]进行对比,对比结果如表2所示,将数据可视化后的对比情况如图11所示。

图11 VOC2007测试集上各类别平均检测精度对比

此外,为检验算法的实时性,本文对比了其他主流模型及本文提出的改进算法的检测速度,对比结果如表3和图12所示。

图12 VOC2007测试集上检测速度对比图

从表2和表3可以看出,本文提出的改进SSD算法与其他主流模型相比,检测精度均有一定提升;相比原始SSD算法检测精度提升了0.9%,检测速度略低于SSD算法,相比DSSD算法检测精度略有下降,但检测速度有较大提升。因此,本文提出的算法在提高检测精度的同时,满足了实时性的需求。

表2 本文算法与其他算法检测结果对比

表3 检测速度对比

3.3 检测效果主观评价

为了更直观地感受本文提出的改进算法检测能力,在VOC2007测试集中选取若干图片,分别用原始SSD算法和改进后的算法进行检测并对比,限于篇幅限制,本节共选取6张图片进行对比,对比结果如图13~图18。

从图13~16中可以看出,改进后的算法相比原始SSD算法可以检测到更多目标,有效改善了漏检的问题。如图17所示,改进后的算法检测出更多目标的同时对目标的分类也更加准确,改善了误检的问题。如图18所示,在待检测目标发生遮挡现象时,改进后的算法检测更加准确,仍可以检测出重叠目标的类别。

(a)SSD检测结果

(a)SSD检测结果

(a)SSD检测结果

(a)SSD检测结果

(a)SSD检测结果

(a)SSD检测结果

4 结 论

本文提出一种改进的SSD目标检测算法,通过连续3次空洞卷积替换原本conv4_3卷积层及之前的两次标准卷积卷积核为3×3,以扩大特征图的感受野;结合反卷积,对不同尺度的特征图进行特征融合,使用于检测的特征图同时具有丰富的细节信息和上下文信息;最后结合注意力机制,对多尺度特征图添加注意力模块,提升算法对感兴趣区域的检测能力。通过理论分析和实验对比,改进后的算法相比原始SSD算法检测精度有明显的提升,有效改善了误检和漏检等问题。由于引入了额外计算量,导致检测速度有所下降,但仍能满足实时性需求。从对比图中也可以看出,改进后的算法仍存在一定漏检现象,在接下来的研究中,将对网络结构和损失函数部分进行优化,进一步提高算法各方面的性能。

猜你喜欢
空洞卷积注意力
基于全卷积神经网络的猪背膘厚快速准确测定
让注意力“飞”回来
番茄出现空洞果的原因及防治措施
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
如何避免想象作文空洞无“精神”
空洞的眼神
A Beautiful Way Of Looking At Things
班有活宝