APP下载

基于特征融合和注意力机制的SSD改进算法

2022-02-18秦大勇林玉娥梁兴柱

兰州工业学院学报 2022年6期
关键词:特征提取注意力卷积

秦大勇,林玉娥,梁兴柱,2

(1.安徽理工大学 计算机科学与工程学院,安徽 淮南 232001;2.安徽理工大学 环境友好材料与职业健康研究院(芜湖),安徽 芜湖 241003)

目标检测是计算机视觉领域的重要研究内容之一,广泛应用于人们的生产生活中[1-2]。近年来,随着深度学习的发展和大规模数据集的出现,极大地提高了目标检测的性能,许多学者提出了很多基于深度神经网络的检测器,用以提高检测的速度和精度。

基于深度学习的目标检测算法主要分为两类:两阶段(two-stage)算法和单阶段(one-stage)算法。Two-stage算法准确率高但速度较慢,代表算法包含R-CNN[3]、Faster R-CNN[4]等。One-stage的目标检测算法具有更快的检测速度,代表算法包含Yolo[5-6]系列、SSD[7]等。为了能够检测到尺度不同的目标,SSD使用多个特征层去进行目标检测,由此产生了另外一个缺点:每个具有独立检测器的有效特征层限制了感受野的大小,SSD网络在检测小目标物体时仅使用了Cov4_3这一浅层特征层,导致小目标检测的准确率较低,对最终检测的准确率有着极大影响。

针对SSD算法,许多学者在提升模型的检测能力方面进行了相应的研究。如Fu等提出了DSSD模型[8],增加了反卷积模块来融合上下文信息,但是由于网络结构比较复杂,使计算量过大,导致检测速度降低幅度明显。Jeong等人提出了RSSD模型[9],对特征融合的方式进行了改进,增加了更多用于检测的有效特征图,将模型特征更加充分的进行利用,检测性能与DSSD 持平。Li等将FocalLoss损失函数用于SSD[10],减少了易分类样本的权重,让模型更关注于含有信息更加丰富的难分类样本,提高训练效率,但计算速度相对较慢。Li等人提出了 FSSD模型[11],将SSD和FPN的思想结合在一起,构建了一组新的有效特征层,速度得到了提高,但是精度提高有限。

基于此,本文以SSD为理论基础,提出了一种基于特征融合和注意力机制的SSD模型,该模型具有以下特点:

1) 修改并使用了强大的特征提取网络ResNet50,提高了主干网络的特征提取能力;

2) 在采用更为强大的特征提取网络的基础上,加入了特征融合模块,将含有不同信息的特征层融合在一起,增强单一特征图的语义信息和判别能力;

3) 利用注意力机制,增强特征图中关键信息的权重,缓解了融合特征图产生的冗余信息带来的负面影响,如混叠效应、位置偏移等。

1 基于特征融合和注意力机制的SSD改进算法

本文提出一种特征融合与注意力机制的SSD目标检测算法,改进的算法将ResNet50作为特征提取网络用于特征提取,在此基础上融入了特征融合与注意力机制。改进的模型设计结构如图1所示。

图1 基于特征融合和注意力机制的改进SSD网络

改进的模型主要包括三大模块。

1) 通过修改Resnet50网络,构建新的特征提取网络(图中红色框线所示)得到有效特征层;

2) 特征融合模块(包含深度特征融合模块),将有效特征层通过特征融合模块,得到拥有更强判别能力的新的有效特征层,增加针对小目标的检测能力;

3) ECA注意力模块,将融合后的有效特征层经过ECA注意力模块,使有效特征层中关键信息的权重进行增大。

1.1 特征提取网络

为了取得更好的效果,已有很多学者对SSD的特征提取网络进行研究,如常见的将VGG替换为Mobile-net等,但是已有的研究中很少对细节部分进行详细介绍,本文提出的基于ResNet50特征提取网络模块如图2所示,有两种构造方式。

图2(a)依据ResNet50的结构基础,进行了简单的网络结构调整,将ResNet50中的3个block块Con3_x、Con4_x、Con5_x的输出结果作为浅层有效特征图,并且仿照VGG在其后增加了额外添加层作为深层有效特征层;图2(b)相比于图2(a),使用了ResNet50更深的block块Con4_x的输出结果作为第一层有效特征层,使得第一层有效特征层可以提取到更多的有效信息,但删除了最后一个block块Con5_x,用以减少参数量,然后在Con4_x后增加了额外添加层作为有效特征层,使得总体参数变得更少且最终的检测精度得到了提升,后续实验中将采用图2(b)的策略作为SSD的特征提取网络。

1.2 特征融合

由于反卷积增大特征层的方法存在不可避免的问题,在本文改进的SSD模型中,使用通过上采样增大特征层分辨率的方法,使用深层特征层增强浅层特征层的语义信息,从而提高模型的检测效果。

对于SSD中的6层有效特征层(C1,C2,C3,C4,C5,C6),从高到低使用特征融合模块,将深层特征层中的有效信息融合到低层特征层,但是对尺度过小的深层特征层进行融合,几乎不会提高检测精度,反而会降低检测速度,故对于尺度过小的深层特征层C4、C5、C6不能简单的使用特征融合模块,为此我们设计了深度特征模块进行特征融合;并且额外引入包含大量边缘和形状等细节信息的Conv3_x,将其作为C0融合到C1中(C0与C1分辨率相同,因此将C0融合到C1的过程中跳过特征融合模块中的上采样环节)使得C1中的细节信息更为丰富。

特征融合模块如图3所示。Layer A代表待增强的特征层,Layer B代表被融合的特征层。首先,将Layer B的特征层进行上采样,若特征层尺寸已经一致,如图1中将Conv3_x融合到Conv4_6,则跳过上一个采样环节,然后经过卷积、BN操作和激活函数,与经过卷积、BN和激活函数的Layer A进行concat操作;接下来利用卷积核大小为1的卷积操作对融合后得到的特征层进行通道数转换,将通道数转换为与Layer A的通道数相同,最后经过激活函数得到融合后的特征层Layer A*,将Layer A*替换为Layer A作为新的有效特征层,对其进行后续的检测操作。

图3 特征融合模块

深度特征模块如图4所示,其借鉴SE注意力机制的思想,对C4和C5进行全局平均池化得到1x1大小的特征图与C6进行Add操作后再与C4进行全乘,最终得到C4_2。如式(1)所示,其中GAP表示全局池化。

C4_2=((C6⊕GAP(C5)⊕GAP(C4))⊗C4.

(1)

图4 深度特征融合模块

1.3 注意力机制

特征融合一方面可以生成更具有判别能力的特征层,另一方面也可能会产生冗余信息,带来负面影响。为解决这一问题,本文引用了一种高效的通道注意力模块(Efficient Channel Attention for Deep Convolutional Neural Networks, ECA)[12],在增加性能的同时并没有使模型的复杂度增大,仅仅通过少量的参数,便可以实现更理想的效果。

ECA模块的结构如图5所示, 将上一层卷积的输出记为X∈RH×W×C(H、W、C表示的是特征图的长度、宽度和通道数,)作为注意力机制的输入(令X=[x1,x2,…,xc],其中xc表示的是第c个卷积核的参数),随后进行全局平均池化操作(令全局平均池化过程为Pavg,其输出为Aavg∈R1×1×C),计算如式(2)所示。

(2)

图5 注意力机制(ECA)模块

然后通过进行1维卷积和Sigmoid激活函数得到1×1×C的通道注意力权重,最终得到通道加权之后的特征图,其中一维卷积的卷积核大小K由通道自适应参数决定,即

(3)

式中:C表示通道数;|·|odd表示取离结果最近的奇数;γ和b表示常量,用于改变通道数C与卷积核大小和之间的比例,这里分别取值为2和1。

经过特征融合后的特征层再经过ECA模块后得到最终用于目标检测的有效特征图,此时有效特征图的特征信息更加丰富且有效,并且缓解了特征图融合过程中产生的冗余信息带来的负面影响,可以使模型更加关注于重要的特征。

2 结果与分析

2.1 数据集和评价指标

数据集:本文采用公开数据集PASCAL VOC[13]2007+2012进行实验,PASCAL VOC数据集包含了20种类别(不含背景类),使用VOC 2007训练集和VOC 2012的训练集合并作为此次实验的训练集,VOC 2007测试集作为此次实验的测试集。

评价指标:mAP(mean average precision)是目标检测领域非常重要的性能评价指标,综合考虑了所有的类别以及定位精度等问题,mAP越大代表模型的检测性能越好。计算方法如式(4)~(5)所示。

(4)

mAP=sum(AP)/N,

(5)

式中:r表示选取回归的阈值;P表示各个阈值下的数值;N表示类别的总数目。

2.2 实验参数设置

实验使用2个Tesla P100 16G进行训练,模型输入图片为300×300 dpi。训练时,为了防止过拟合现象的发生,在训练前先对输入图片进行数据增强,包括对图片随机水平翻转、灰度变换等操作,增强了模型的鲁棒性,尽量避免过拟合现象的发生。训练参数方面,batch size设置为32,epoch设置为250,动量为0.937,权值衰减为0.000 5,学习率下降方式采用余弦退火衰减, 最大学习率设置为0.002,最小学习率设置为0.000 02,网络的优化采用随机梯度下降法(stochastic gradient descent, SGD),模型训练过程中损失以及mAP如图6所示。

图6 训练损失函数和mAP

2.3 实验结果对比

为了更直观的展示改进算法的有效性,分别采用改进前后算法部分检测结果,如图7所示。

(a) 漏检

图7(a)和(b)分别对比展示了原始SSD和改进后的SSD在检测结果上对于漏检和多检情况的提升,可以看出本文提出的改进后的SSD算法,相对于传统的SSD300目标检测算法,模型可以更好的区分出不同的目标,检测结果显示改进后的方法可以检测出更多的小目标物体以及减少了误检的发生。总体来说,改进后的算法使得目标检测中的分类和定位任务均得到了提升。

为了验证本文提出算法的有效性,将本文算法和已有的算法在相同的数据集上进行对比,结果如表1所示。

表1 PASCAL VOC 数据集下各算法性能对比

表1中,SSD300*代表本文改进的模型,改进后的SSD300*模型对比于原始的SSD300模型在检测精度上提高了3.9%,并且可以看出本文算法在检测准确率和检测速度上均优于两阶段算法Faster R-CNN和R-FCN,与YOLOv3相比,mAP提升了1.6%,但由于增加了模型参数量导致检测速度有所下降。与SSD以及其改进的RSSD和DSSD相比,提升效果显著,证明了本文通过更换特征提取网络,以及特征融合模块和注意力机制模块的有效性。

2.4 消融实验

本文选择在VOC数据集上进行消融实验,在SSD模型上逐步添加各个模块,分析每个模块的性能,从而证明各个模块的有效性,消融实验结果如表2所示。

表2 消融实验结果

从表2中可以看出,Resnet-50-A和Resnet-50-B两种修改后的特征提取网络的mAP相差不大,但是由于Resnet-50-B具有更少的网络参数,使得FPS有小幅度提升;并且本文提出的每个模块都对mAP有着不同程度的提高,当所有模块同时使用时,检测精度达到了最高值81.2%。

3 结语

本文提出了SSD网络的改进算法,提出了两种将ResNet50网络作为特征提取网络的方案,以及在SSD网络中加入了特征融合模块和注意力机制模块。对比实验结果表明,改进后算法的检测精度有明显提升;不足之处:由于采用了更大的特征提取网络ResNet50以及引入了特征融合模块和注意力机制模块,使得整体网络结构较大,检测速度较原SSD网络有所下降。未来的工作主要针对于模型简化来展开,在保证精度的基础上提高速度。

猜你喜欢

特征提取注意力卷积
让注意力“飞”回来
基于3D-Winograd的快速卷积算法设计及FPGA实现
卷积神经网络的分析与设计
基于Gazebo仿真环境的ORB特征提取与比对的研究
从滤波器理解卷积
基于Daubechies(dbN)的飞行器音频特征提取
基于傅里叶域卷积表示的目标跟踪算法
“扬眼”APP:让注意力“变现”
Bagging RCSP脑电特征提取算法
A Beautiful Way Of Looking At Things