朱柏松,王燕妮
(西安建筑科技大学信息与控制工程学院,陕西 西安 710055)
目标检测是计算机视觉中一项基本任务,它是图像分割、目标跟踪、动作分析等高级任务的重要基石。近些年来提出的许多优秀目标检测算法逐渐成为社会生活中一些关键技术的核心,这些技术在智慧乡村建设、智能交通管理、人脸识别等现实问题中发挥了巨大的作用。
随着深度学习技术的进步,基于深度学习的目标检测算法也取得了显著的成果。目标检测算法主要衍化为两种不同类型的方法,就结构流程而言,它们主要分为单阶段目标检测方法和双阶段目标检测方法[1]。其中,双阶段目标检测算法是在Girshick等人率先提出的R-CNN算法的基础上展开的[2]。R-CNN利用选择性搜索算法获取候选区域,通过卷积神经网络提取区域特征[3],最后通过支持向量机(support vector machine,SVM)进行分类[4]。Faster-R-CNN是在前人研究的基础上利用候选区域生成网络替换了传统的选择性搜索算法[5]。另一类则不需要产生候选区域,采用端到端的方式,直接进行分类和回归。代表算法有SSD(single shot mutlibox detector)[7-9],YOLO(you only look once)等[10-11]。YOLO系列算法不再采用窗口滑动,而是将原始图像分割成互补重合的小方块,再通过卷积产生不同大小的特征图[12]。SSD算法则是利用卷积神经网络提取了不同尺度的特征图,从而实现对不同尺度物体的检测[13]。
在计算机视觉领域,一个极具挑战性的研究方向是小目标检测。小目标物体存在缺乏物体代表性特征等问题,而现有的检测算法通常专注于检测全尺寸目标,没有对小目标的检测进行专有的优化。主流的目标检测算法重复使用池化层、卷积层等提取高级语义信息导致浅层信息不可避免的流失[14]。SSD算法使用多尺度特征并根据特征层的感受野大小设置相应的先验框,从而检测不同尺度和纵横比的目标。但是由于每个特征层独立使用,导致对小目标的检测效果并不理想[15-16]。文献[17]提出了一种结合特征金字塔(feature pyramid net-works,FPN)的改进算法,采用自上而下的融合方式结合了不同尺度的特征信息,提高了小目标的检测能力。而后NAS-FPN[18]、PANet(path-aggregation network)[19]、BiFPN[20]等性能也取得了一定进步,但是其结构相对FPN优化仍然较少,对于浅层特征信息的利用并不充足。
针对现阶段小目标检测算法精度不佳且计算资源耗费多的问题,本文设计了一种轻量化的跨层特征融合算法。
SSD算法是一种基于深度学习的单阶段多尺度目标检测算法,它继承了YOLO算法中回归的思想和Faster R-CNN的锚框机制,直接在特征图中生成先验框的坐标和分类概率。SSD网络结构如图1所示。其中主干网络选用VGG16,并添加了多个卷积层用于提取图像的更深层特征,整个网络由VGG16和附加的卷积层级联而成。
图1 SSD网络示意图Fig.1 Network diagram of SSD
SSD算法在网络后端构造了一个检测器,用于对多尺度特征图进行回归和分类[18]。网络总共提取6个特征图输送到检测器实现回归和目标种类预测,其中感受野大的深层特征图用于预测大目标,感受野小的浅层特征图用于预测小目标。由于特征图中每个像素点都会生成不同尺度的先验框用于和真实框计算误差,很大程度上增加了计算量,于是,使用非极大抑制算法(non maximum suppression,NMS),消除冗余预测框以获得最优预测框。
MobileNetV2网络是谷歌研发的应用于移动端和终端的边缘计算网络[21],区别于其他复杂的卷积神经网络,该网络模型更小且相对精确。它的主要创新点是倒残差结构(inverted residuals,IR)和线性瓶颈层[22]。
残差结构是文献[23]提出的Resenet网络结构中的一个重要创新结构,其目的是为了解决随着网络深度的加深带来的梯度爆炸和消失。它的优势是使网络加深的同时保证良好的信息获取[24]。为了解决移动端算力资源受限的问题,MobileNetV2中构建了倒残差结构以实现网络的轻量化。倒残差结构是建立在深度可分离卷积之上的,通过将传统卷积分解为深度可分离卷积和逐点卷积,从而使计算量减小。第一部分称为深度卷积(depth-wise,DW),它对每一个输入通道使用一个卷积滤波器以完成轻量化滤波;第二部分是1×1逐点卷积(point-wise,PW),它通过分析输入通道的线性关系来构建新特征。与普通深度可分离卷积不同的是,MobileNetV2创造性地在DW之前又新增了一个PW,从而构成了倒残差结构。MobileNetV2的另一创新点是线性瓶颈层,即在每个微结构的末层将容易造成信息损失的激活函数ReLU替换成线性激活函数ReLU6,函数曲线如图2所示。基本单元模块结构如图3所示,图中分别为stride=1和stride=2时的结构。MobileNetV2的整体网络结构如表1所示。
表1 MobileNetV2结构Tab.1 Structure of MobileNetV2
图2 Relu6激活函数曲线Fig.2 Relu6 activation function curve
图3 MobileNetV2的基本单元模块Fig.3 Basic unit module of MobileNetV2
MobileNetV2-SSD相对SSD算法虽然在参数量上得到大幅度降低,但是与SSD算法类似,不考虑不同层之间的关系,每个特征层都是独立使用的。浅层特征层中缺乏高级语义信息,因此对小目标的检测效果不佳。FPN等特征融合方法虽然在一定程度上利用了浅层细节信息,但是浅层信息在传递过程中仍然损失较多,实际效果并不理想。
为解决现有算法对小目标检测效果不佳的相关问题,提出一种两阶段的特征融合方法。首先使用嵌入了坐标注意力机制(coordinate attention,CA)模块的MobileNetV2作为骨干网络,同时采用倒残差模块替换额外的卷积层进一步降低模型参数量;设计了特征交叉融合模块,初步聚合底层特征信息;在PANet的基础上,添加跨层连接路径进一步丰富网络中非相邻的深层和浅层特征。加入轻量化的注意力机制模块ECA(efficient channel attention module),从而突出关键部位特征而抑制无用信息。具体结构图如图4所示。
图4 本文模型结构图Fig.4 Structure diagram of this model
使用MobileNetV2做为骨干网络有两个原因:第一个是深度可分离卷积方法中,在输入的每个通道上都独立执行空间卷积;另一个是虽然深度卷积无法升维,但逐点卷积起到了一个升维的作用,使深度卷积可以在高维度工作,从而减少计算量。标准卷积的参数大小为K×K×C1×C2,其中K为卷积核的宽和高,C1和C2分别为输入通道数和输出通道数。
深度可分离卷积参数量为K×K×C1+1×1×C1×C2。所以可以推出,使用深度卷积之后,参数缩小倍数为
(K×K×C1+1×1×C1×C2)/(K×K×C1×C2)=
(1/C2)+(1/K2)。
MobileNetV2中靠前端的bottleneck模块,与原SSD的浅层网络性能类似,其特征图虽然分辨率比较高,位置细节信息丰富,对小目标比较敏感,但是未经过一定数量的卷积操作提取特征,所以其中用来分类的高级语义信息比较少,噪声较多。针对这一情况,本文在MobileNetV2中前部的3个倒残差模块中嵌入了坐标注意力机制模块,从而捕获具有精准位置信息的空间长距离依赖性,用于增强浅层网络的特征提取能力。图5所示为添加CA模块前后的类激活热力图对比,图5(a)为原图,图5(b)为不添加CA模块模型输出的热力图,图5(c)为添加CA模块模型输出的热力图。图中高亮区域为本文模型所关注的目标,可以发现添加CA模块后输出的热力图中,高亮区域的目标轮廓更为清晰。
图5 CA热力图对比Fig.5 Comparison of CA heat maps
坐标注意力机制是一种轻量化和高效的注意力机制,它巧妙地将位置信息融入进通道注意力中,允许网络在更大的范围内提取特征。首先,将通道注意力分解为两个特征编码过程,即垂直和水平方向,从而获得一对具有方向感知的特征图。通过这种处理,可以在空间方向上捕获远程相关性,而在另一个空间方向上保持精确的位置信息。然后,将获得的特征进行扩展,并分别用作水平坐标和垂直坐标的注意力权重。CA模块具体结构如图6所示。
图6 CA模块结构Fig.6 CA module structure
同时,借鉴SSDlite[25]的思想,去掉MobileNetV2中的池化层和全连接层,将原SSD中额外的卷积层替换为四个额外的标准倒残差模块(extra inverted residual,EIR),从而使网络更加轻量化。
FPN采用的自上而下的融合方式,通过上采样将高层特征和底层特征相融合,虽然增强了模型对图像特征的学习能力,但浅层特征在传递过程中大幅度丢失,最终导致用于分类和回归的特征图中细节信息较少,不利于小目标的检测。PANet在FPN基础上通过添加自下而上的融合路径传递更多的底层特征信息,从而弥补FPN的不足。但是面对密集小目标场景和一些特殊场景,PANet则表现出对小目标特征学习能力的不足。
在此基础上本文提出一种两阶段的特征融合网络。在第一阶段,提出特征交叉融合模块(feature cross fusion moudle,FCFM)。该模块延续了SSD算法中抽取多尺度特征图进行检测的优点,但是打破了一般特征融合中逐级融合的理念,这种新的融合方法呈现了一种“阶跃式”的特征选择,即交叉抽取不同层级且通道数跨度较大的特征层。在融合方式中通过添加额外的路径,可以有效避免浅层特征不可挽回的流失。通过重复利用浅层特征,可以在不同深度的低层级特征中逐次融入更为多样化的深层特征。首先从主干网络MobileNetV2中尾部抽取3个倒残差模块输出的特征层IR1,IR2,IR3,再从extra部分抽取EIR4,EIR5,EIR6,EIR7,最后将这7个特征层重复交叉融合送入第二阶段的网络中从而充分利用语义信息和文本特征。具体步骤:将IR1,IR2,EIR4融合,生成新特征层IR1_1;将IR2,EIR4,EIR5融合,生成新特征层IR1_2;将IR3,EIR5,EIR6融合,生成新特征层IR1_3;最后将EIR6,EIR7融合,生成IR1_4。具体结构如图7所示。
图7 特征交叉融合模块Fig.7 Feature intersection and fusion module
所抽取的特征图IR1,IR2,IR3由骨干网络中最后3个倒残差层输出,其网络层级较浅,包含了较多的浅层信息。而添加的4个额外层输出的EIR4,EIR5,EIR6,EIR7经过一系列卷积操作,相对浅层网络已经获得了更为抽象的高级语义特征。在第一阶段中多次重复使用了IR2,IR3,EIR4等相对低层级的特征图,并使之与深层特征图融合,初步整合了一定的浅层细粒度信息和深层粗粒度信息,保留了更多的底层特征。
针对小目标分辨率低,易融于背景的特点,为了能准确定位各种小目标,则需要获取小目标周围更多的上下文信息。在神经网络中,一般通过下采样来获取更多的上下文信息。然而过多的下采样会导致信息的损失和增加网络模型的计算量,所以受到文献[26-27]启发在新的特征融合结构中添加了基于残差结构的扩张感受野模块 (residual dilated module,RDM),利用扩张卷积获得更多的上下文信息以适应本文任务。RDM如图8所示。
图8 扩张感受野模块Fig.8 Extended receptive field module
在本文的一阶段特征融合模块中,根据输入特征图尺度的不同,在输入浅层特征图的RDM模块里设置了不同大小扩张率的扩张卷积来扩大感受野。利用残差结构的思想,RDM模块具体运作方式是将输入特征图分配给3个扩张率不同的支路进行特征提取,并与具有全局感受野的原始特征图进行融合。其中,感受野的计算公式为
R=(D-1)(k-1)+k,
(1)
式(1)中,D是扩张率,k是卷积核的大小。根据式(1),RDM1中扩张率分别为1,12,18;RDM2中扩张率分别为1,6,8;RDM3中扩张率分别为1,2,4。在特征融合结构中应用具有不同扩张率的RDM模块,可以有效丰富特征图的上下文信息。另外,在融合结构末端添加ReLU函数,可以使网络具有稀疏性,避免过拟合的发生以及拥有更好的预测性能。同时,特征融合模块使用了上采样来提升深层特征图的尺度与浅层特征图保证一致从而完成特征融合,这一过程是利用转置卷积完成的。图9所示为普通卷积和转置卷积。
图9 普通卷积和转置卷积Fig.9 Ordinary convolution and transposed convolution
为了进一步提升PANet结构对浅层信息的利用率,添加了3条水平连接路径,即第二阶段的跨层特征融合。对于第一阶段生成的IR1_1,IR1_2,IR1_3,IR1_4采用改进的自下而上的融合方式。骨干网络中最后3个倒残差层所处网络层级较浅,于是重复利用其生成的浅层特征图IR1,IR2,IR3,将前一模块生成的特征图进行相应倍数的下采样,然后与之分别相加融合,得到新的特征图。同时改变了一般意义上PANet的结构,IR1_4由网络层级较深的EIR6,EIR7融合而成,其包含的更多粗粒度的信息,于是不将其加入PANet结构以减少特征融合时产生的噪声和额外的参数量,具体结构如图10所示。
图10 跨层融合模块Fig.10 Cross-layer fusion module
这样进一步将底层和高层信息流同步整合到网络结构中,特征提取更具有鲁棒性和区分度。图11所示为第一、第二阶段特征融合可视化的分步仿真结果,可以看出在一阶段中初步聚合浅层特征后,特征图聚合的主要是轮廓、纹理、位置等细粒度信息,在经过第二阶段模块后,可以发现特征图更加抽象化。最后在网络末端添加ECA模块,抑制冗余特征的影响,该模块通过捕捉相邻通道间的交互关系从而关注模型感兴趣的区域,如图12所示为ECA模块的类激活热力图,图12(a)为原图,图12(b)为不添加ECA模块模型输出的热力图,图12(c)为添加ECA模块模型输出的热力图。可以看出添加ECA模块输出后的热力图中,背景信息被更加有效地抑制,突出关键部位特征。
图11 特征图可视化Fig.11 Visualization of feature map
图12 ECA热力图对比Fig.12 Comparison of ECA heat maps
数据增强也叫数据增广,实际内容是在不增加新数据的情况下,让原有的数据集通过裁剪、旋转等方式,产生与增加数据相同的效果。为了达到更好的训练效果,本文通过旋转、裁剪、位移、噪声等数据增强方式,阻止了神经网络学习不相关的特征,使输入到神经网络的数据集多样化,从而增强了模型的训练效果。
训练模型的过程本质是使用梯度优化函数降低损失值的过程,同时对位置和目标种类进行回归,所以本文损失函数沿袭了SSD算法,包括类别损失和定位损失两部分[28],表达式为
(2)
其中置信度损失就是多种类别的softmax函数损失:
(3)
(4)
(5)
3.1.1实验平台和参数设置
模型搭建使用的硬件设备:CPU Intel Xeon E5-2686 v4,GPU为NVIDIA 3090,内存64 GB,显存24 GB。操作系统为Windows10 64位,使用python3.8作为编程语言,基于深度学习框架pytorch 1.8完成训练和测试。优化器使用收敛速度较快的Adam。
在VOC2007+2012数据集上训练,损失函数曲线如图13所示。训练参数设置如表2所示。
表2 训练参数设置Tab.2 Training parameter setting
图13 迭代曲线Fig.13 Iteration curve
3.1.2数据集
为了评估改进后的算法性能,选取了PASCAL VOC数据集进行训练和验证。VOC2007包含训练集5 011张,测试集4 952张;VOC2012中包含训练集5 717张,验证集5 823张。其中包含了21个类别(包括背景),如人、猫、马、飞机、自行车、船、餐桌、盆栽植物等。训练阶段使用VOC2007+2012,共16 551张图片。测试阶段使用VOC2007评估算法性能,共4 952张图片。
3.1.3评价指标
采用平均精度值(mean average precision,mAP)和检测速度(frames per second,FPS)作为评价模型的主要指标。FPS是指每秒可以检测图像的帧数。mAP是所有类别精确度(average precision,AP)的平均值,AP实际上是指利用精度值为纵轴,召回率的值为横轴组成的曲线包络出的面积。计算公式为
(6)
式(6)中,k表示目标任务的类别,APi为第i类的平均精度值。
3.2.1模型性能客观评价
为了综合比较算法的性能,将改进的算法和一些主流目标检测算法Faster R-CNN,DSSD,YOLOv5s等进行对比,详细结果如表3所示。与SSD算法相比,改进后的算法在检测精度上与其基本保持持平,但模型体积下降了4倍多,有利于植入内存受限的设备;与Faster-RCNN相比,检测精度提升了3.6%,但是模型体积却大幅度下降,符合轻量化模型的要求;与YOLOv5s相比,虽然精度轻微下降,但是模型体积得到了大幅减少。总体而言,改进后的模型在保证轻量化的同时,检测精度也有了一定的提升,检测速度的牺牲也控制在了较小的范围。
表3 不同算法在PASCL VOC 2007测试集上检测结果对比Tab.3 Comparison of detection results of different algorithms on PASCL VOC 2007 test set
为了更清晰地比较改进后的算法与其他轻量化目标检测算法对小目标的检测性能,从VOC数据集中的20个类别里挑选了6种具有代表意义的小目标类别,如表4所示为不同轻量化模型在这6种类别上的检测精度。可以发现,改进后的算法相对于基线算法MobileNetV2+SSD和MobileNetV3+SSD分别提升了4.5%和3.9%。MobileNetV2+SSD的模型体积为18.6 MB,改进后的算法仅多耗费6.8 MB即在小目标类别上有了较多的提升,证明了本文模型针对小目标检测问题所做改进的有效性。
表4 小目标类别检测结果对比Tab.4 Comparison of detection results of small target categories
3.2.3消融实验
为了能够直观地反映出本文中各模块对模型整体性能的贡献,在VOC2007测试集上进行消融实验的验证,具体结果如表5所示。可以看出,在骨干网络MobileNetV2中加入CA注意力模块之后,准确度提升了0.7%,证明CA注意力模块增强了骨干网络的特征提取,有利于小目标检测。加入FCFM模块后,发现准确度提升了1.8%,证明一阶段的特征交叉融合在一定程度上聚合了深层和浅层特征。加入跨层融合模块(cross-layer connection module,CLF)后,准确度提升了1.5%,证明所提出的跨层级特征融合模块可以进一步聚合深层和浅层特征,更充分地利用细节信息。为了验证添加不同注意力机制模块对模型的增益,选取SE(squeeze excitation)和ECA模块进行对照实验,结果表明添加ECA模块对模型检测精度提升效果更好。
表5 消融实验结果Tab.5 Reuslts of ablation experiments
为了能直观地展示改进后的算法针对小目标检测问题的有效性,在不同室内外环境、小目标尺度多变、目标与环境存在遮挡关系等场景下改进后的算法与MobileNetV2+SSD算法的检测结果对比如图14所示。
图14 检测结果对比Fig.14 Detection results of algorithm
可以看出,MobileNetV2+SSD算法对于密集、微小目标以及相互遮挡的目标等出现漏检的情况,而改进后的算法对于图片中小型目标的检测效果有着明显提升。不管是单个、密集还是存在遮挡的小目标,改进后的算法相对基线算法都可以准确检测出更多目标,表现了更好的检测效果,证明了本文改进算法的有效性。
小目标往往因重叠或者背景的影响而出现漏检,只在稀疏的小目标或者简单场景下的小目标检测效果有提升,并不能体现模型的泛化能力。为了验证本文模型的鲁棒性和泛化能力,将本文在VOC2007+2012的数据集中训练好的模型迁移到密集,复杂室内外场景的目标检测中。从COCO数据集和VOC2007测试集中挑选了100张室内外复杂密集场景的图片组成迁移数据集进行迁移实验。MobileNetV2+SSD算法和改进后的算法在迁移数据集上的mAP分别为70.3%和73.9%,改进后的算法提升了3.6%。迁移实验对比结果如图15所示。从结果可以发现,本文模型相较于基线算法,在密集小目标的检测效果上表现了更为优秀的检测能力,这是由于所提出的两阶段的特征融合网络更充分地聚合了深层和浅层特征信息。
图15 迁移实验对比Fig.15 Migration experiment comparison
本文针对目标检测模型因内存受限而对小目标检测精度不佳的问题,在MobileNetV2-SSDLite算法的基础上,设计了两阶段的特征融合方式:第一阶段利用所设计的交叉融合模块初步聚合浅层特征,同时在路径中部署了基于残差结构的多支路扩张感受野模块以获得更多小目标相关的上下文信息;第二阶段设计了基于PANet的跨层级融合模块,进一步整合深层和浅层特征。本文模型在公开的PASCAL VOC2007test上进行验证,与基线算法相比准确度提升了4.5%;在迁移实验中的小目标数据集上进行验证时,准确度提升了2.6%。证明了本文算法有效改善了基线算法在小目标检测上存在的误检,漏检情况,同时本文方法解决了内存受限的移动端上小目标检测效果不佳的问题。但是因为轻量化骨干网络的通道深度以及结构问题,对图像的特征提取能力仍然欠佳,后续的研究将会关注于设计更为优秀且轻量化的骨干网络。