罗大为,方建军,刘艳霞
(1.北京联合大学北京市信息服务工程重点实验室,北京 100101;2.北京联合大学城市轨道交通与物流学院,北京 100101)
在基于深度学习的目标检测工作中,融合不同尺度的特征是提高特征提取性能的一个重要手段[1].大尺度的特征一般指浅层特征,感受野小,分辨率高,包含更多位置、细节信息,但是由于经过的卷积更少,其语义性更低,噪声更多.小尺度的特征指深层特征,感受野大,全局特征丰富,具有更强的语义信息,但是分辨率很低,对细节的感知能力较差[2].因此,在目标检测中,将不同的特征进行融合,以达到增强特征提取、优化检测模型的目的.
当前流行的融合方式主要有Concat和Add.Concat是神经网络结构设计中很重要的一种操作,经常用于连接特征,它可以将多个卷积层的特征或者是将输出层的信息进行融合[3].Concat并不会改变每一个特征的信息,只会增加特征的数量,比如DenseNet[4]、ParseNet[5]、YOLOv3[6].Add操作则是信息之间的叠加.Add是增加提取的各个特征信息,但是并没有增加特征的数量,比如Resnet[7]、FPN[8]、FCN[9].在一些研究中,通常把两种方式混合使用.或者通过卷积和采样操作将不同尺度特征进行Add或Concat操作,比如CFENet[10].采用类似特征金字塔网络(Feature Pyramid Networks,FPN)的思想,对特征融合后进行预测,但它们本质都是对特征进行Concat或者Add操作.
这些特征融合都是直接将输入的特征进行叠加或拼接,没有充分考虑其对于模型性能存在的不同影响.不同的特征对于检测结果应该存在着不同的影响,有些特征对于检测结果甚至是无用的或产生负面影响的.为了使模型增强有用特征的融合,本文设计了几种基于注意力机制[11]的融合方式,并在Pascal VOC2007数据集[12]上进行测试.
直接将两个特征进行融合不能很好地将有效特征利用起来,会引入一些无效甚至负面的特征,对实验结果造成影响.本文在特征融合部分加入了注意力机制,让模型在训练过程中学习哪些要融合的特征更加重要,并增加它们的权重,如图1所示,图1中Cat表示Concat操作.
Add(a)Add示意图(b) A-Add示意图(c)B-Add示意图Con-cat(d)Cat示意图(e) A-Cat示意图(f)B-Cat示意图
Add操作本质是对2个输入特征相对应的像素进行数学相加,如图1(a)所示.经过Add操作后,特征图的大小不变,通道数不变.对于输入的两路特征X和Y,Add操作可表示为
(1)
其中:两路输入的通道分别为X1,X2,…,Xcx和Y1,Y2,…,Ycy.用Cx表示输入特征X的通道数,Cy表示输入特征Y的通道数,*表示卷积.1c表示一个1×1×c的张量.经过Add操作后,特征图的通道数不变,为C=Cx=Cy.Add操作要求两路输入特征维度一样,即wX=wY,hX=hY,且Cx=Cy.
Concat操作公式为
(2)
与Add不一样,Concat其实相当于将2个特征进行拼接,特征图的大小不变,通道数增加.经过Concat操作后,特征图的通道数为Cx+Cy.Concat的2个输入要求w和h一致,即wX=wY,且hX=hY.在Concat操作中,Cx与Cy可以不相等.如图1(d)所示.
本文设计的特征融合方式,主要是基于通道域的注意力机制,即对不同通道的特征进行注意力加权.基于通道域的注意力是通过一个Squeeze操作得到各通道特征的平均值,再经过一个卷积层学习它们的权值,最后再加权到各通道中,如图2所示.
图2 通道域注意力结构示意图
Squeeze操作本质就是全局均值池化,使得h×w×c的特征图变为1×1×c的实数序列;Uc即特征,等价于Xc和Yc.公式为
(3)
学习各特征权重,W是一个1×1×c的卷积核,用于学习权重.对输入特征进行加权,增强有用特征,公式为
Sc=Fscale(Uc,Zc,W)=Uc×(Zc*W).
(4)
在Add操作中引入Attention模块来增强特征融合效果,具体实现的结构与Concat类似,分别为A-Add和B-Add.
A-Add为:
(5)
其本质是在Add操作之后加入一个Attention模块,对Add操作之后的特征进行注意力学习,如图1(b)所示.Add操作不改变特征维度,改变特征值,因此与Concat不同.
B-Add公式为:
(6)
与A-Add不同,B-Add在Add操作之前对2个不同的特征进行Attention模块,分别学习2个特征的权重,如图1(c)所示.
在Concat操作中引入Attention模块来增强特征融合效果,公式为:
(7)
把Attention引入Concat操作的结构有2种,分别为A-Cat和B-Cat.A-Cat的具体实现如图1(e)所示,在Concat操作之后加入一个Attention模块,对融合之后的特征进行注意力学习,削弱不重要特征的影响.B-Cat则是在Concat操作之前对2个不同的特征进行Attention模块,分别学习2个特征的权重,并降低无效或坏特征的权重,如图1(f)所示.
本文设计了相关实验对基于注意力机制的特征融合方法进行验证和分析.
2.1.1 数据集
本文将在Pascal VOC2007数据集上进行测试.该数据集是当前最流行的目标检测数据集之一,包含9 963张标注过的图片,共标注出24 640个物体,涉及行人、汽车、狗等20类目标.
2.1.2 测试网络
基于注意力机制的特征融合方式将在YOLOv3-Tiny网络上进行测试.YOLOv3-Tiny是当前最轻量的网络模型之一,它的主干网络仅有15层,结构简单,性能高效,是许多工程应用中的选择.在原始的YOLOv3-Tiny中,包含一个大尺度和中尺度的特征融合,本文将基于注意力机制的特征融合方法用于融合大尺度和中尺度特征,进行对比实验.YOLOv3-Tiny的结构如图3所示,图3中Cat表示YOLOv3-Tiny采用Concat特征融合方式.
图3 YOLOv3-Tiny结构示意图
2.1.3 实验环境
本文所有实验都在NVIDIA GTX1080Ti、16 GB内存、Ubuntu16.04系统下进行,采用darknet框架.
2.2.1 基于注意力的特征融合方式训练情况
各模型训练loss曲线如图4所示.所有模型的在训练4 h后,迭代约8万次时loss趋于平稳,表明模型收敛.采用Concat进行融合的模型,loss收敛于0.617 1.采用A-Cat进行融合的模型,loss收敛于0.658 1.B-Cat的loss最低,收敛于0.539 1.loss在一定程度上反应模型的性能,从loss上看B-Cat收敛效果最好.
2.2.2 基于注意力的特征融合方式实验结果分析
Thresh设置为0.5时的四值分析如表1所示.从表1可知,4种基于注意力机制的特征融合模块的Precision(P)相较于原来提高了1%~2%,Recall(R)并未收到明显影响,F1-score(F1)获得了提高,A-Cat的AIOU比原来提高了1.14%,且浮点运算量并没有显著增加.由于模型的运行速度会受到设备的性能影响,因此采用模型的浮点运算量作为模型效率衡量标准,如表2 所示.
图4 训练loss曲线图
表1 基于注意力的特征融合算法性能分析
表2 基于注意力的特征融合算法复杂度与准确度分析
A-Cat的mAP比原Concat提高了0.76%.B-Cat的AIOU比原来仅提高0.34%,浮点运算量增加了0.001,但mAP提高了1.49%.Add操作中,A-Add和B-Add在P,R和F1中没有带来提升,甚至在AIOU中略微出现下降,但从mAP中可看出,注意力机制仍发挥作用.
对于4种特征融合结构在VOC2007数据集上20个种类目标的AP分析如表3所示.A-Cat比原Concat的mAP提高了0.76%,B-Cat比原Concat的mAP提高了1.49%.A-Cat在Diningtable和Pottledplant等复杂目标的AP值相较于原来的Concat操作略有下降,但是在其他目标,如Aeroplane、Bicycle、Bird和Boat等有很大的提升.而B-Cat在各类中均有显著提高,且提升幅度大于A-Cat.
表3 Pascal VOC2007上各类目标的AP分析%
Add操作的检测性能在Pascal VOC2007数据集上的表现远不如Concat.经过实验分析,本文认为Add操作直接将2个不同的特征进行数学相加,这有可能会破坏或损失部分提取的特征,因此它的mAP普遍低于Concat操作.但引入注意力的Add操作性能得到了提升,如A-Add比原Add的mAP提高了0.34%,B-Add比原Add的mAP提高了1.14%.A-Add对于Aeroplane和Diningtable等大尺度目标的检测性能出现了下降,但对于Bird和Boat则提升明显.A-Add的mAP在各类目标上AP分析均出现大幅提升.
从上述实验结果可知,4种基于注意力机制的特征融合方式都得到了不同程度的提升,但就特征融合而言,B-Cat所展现的效果最佳,基于Concat操作的融合方式普遍比基于Add操作的方法效果好.
本文基于注意力机制,并设计了4种可学习的特征融合模块,它们可以在模型训练中学习如何将有效特征进行加权融合,提升特征融合的效率,进而提升目标检测模型的性能.通过YOLOv3-Tiny在Pascal VOC2007数据集上的实验,基于注意力机制的特征融合模块比直接进行特征融合的方式最高可提升1.49%,证明该方法的有效性.基于注意力机制的特征融合可用于提升多尺度特征融合、高底层特征融合等,为深度神经网络中多特征融合的设计和构建提供了思路和理论基础.