YOLOv4-Tiny的改进轻量级目标检测算法

2024-01-11 13:15何湘杰宋晓宁
计算机与生活 2024年1期
关键词:注意力卷积精度

何湘杰,宋晓宁

江南大学 人工智能与计算机学院 江苏省模式识别与计算智能工程实验室,江苏 无锡 214122

目标检测(object detection)是计算机视觉领域的经典研究,旨在定位图像中存在物体的位置并识别物体的具体种类[1],是深度学习领域的研究热点,在自动驾驶、行人检测、军事、医疗等领域存在广泛的应用前景。其主要任务就是找到用户感兴趣的目标,通常来说是人或者一些特定物,然后用锚框包住目标的边缘,从而完成对目标的定位以及分类回归的操作。由于各类目标物体在外观、光影、姿态方面的差异,以及图像在成像过程光照情况、振动状况、目标遮挡的情况不同,目标检测领域仍然存在着诸多挑战。

传统的目标检测方法借助机器学习算法[2],主要是通过传统算法提取滑动窗口选取的候选区域来提取图片中特征,如梯度直方图特征(histogram of oriented gradient,HOG)[3]、哈尔特征(Haar-like features)[4]、尺度不变特征(scale-invariant feature transform,SIFT)[5],然后将得到的语义特征通过支持向量机(support vector machine,SVM)进行回归分类。传统方法因为其明显依赖于人力手工设计特征的模板而在精度、速度以及复杂度方面都有明显的劣势。因此在2012 年AlexNet[6]出现之后,包括之后出现的VGG[7],神经网络算法因其优越的性能,导致目标检测领域转向了以卷积神经网络(convolutional neural network,CNN)为代表的深度学习时代。目前的目标检测算法已经在各个领域都拥有着广泛的应用,在一些计算资源充足的场景能充分发挥目标检测的潜能,达到很高的精确率,然而在另一些计算资源匮乏的场景下,在一些设备上对模型的检测速度以及大小仍然有一些要求[8],如何在提升检测精度的基础上还能提高速度是目标检测领域需要发展的方向[9]。现阶段目标检测领域的算法主要分为两个方向:两阶段算法和单阶段算法。两阶段算法的代表性算法有R-CNN(regions convolutional neural network)[10]、Fast R-CNN[11]、Faster R-CNN[12],其算法的主要思想就是在第一个阶段中基于区域生成网络(region proposal network,RPN)获取感兴趣的区域,使用预选框标记感兴趣的区域,在第二个阶段中对预选框中可能存在的目标进行分类和回归。单阶段算法的代表算法有:SSD[13]、YOLO系列[14-17]、RetinaNet[18]等。单阶段算法不需要经历双阶段算法获取预选框的RPN 阶段,而是直接使用神经网络对原图进行处理获取特征与类别和位置信息,然后进行分类与回归,大量减少了时间与空间上的占用,在速度上有很大的提升,但是相对于两阶段算法精度更低。

本文提出算法基于基线模型YOLOv4-Tiny[17],提出了一种在目标检测任务上平衡了检测速度与精度的轻量级目标检测网络结构,通过优化原始网络模型,减少冗余信息,替换非线性激活函数,提高模型提取复杂信息的能力,以及高级语义信息与低级语义信息融合的能力,在提高精度的同时依然保持较高的FPS(frames per second)。主要贡献有:(1)提出了DC-SPP(dilated convolution spatial pyramid pooling)模块,参考空间金字塔池化(spatial pyramid pooling,SPP)模块的设计思路,把其中的最大池化层替换为了具有不同膨胀率的空洞卷积层,增加了模型多尺度融合的感受野。将主干网络中的Mish激活函数更换为了LeakyReLU 激活函数,加快了网络收敛的过程,简化了计算量,在原本的卷积结构中引入了高效通道注意力(efficient channel attention,ECA)机制,有效地增强了信息的提取效率,并将第二层到第五层结构更换为了ECA-ResBlock 模块,调整了主干网络结构,相比原有主干网络在特征提取方面更有优势。(2)提出了CSATT(channel spatial attention)注意力模块,这是一种轻量级的兼具空间注意力和通道注意力的注意力机制,应用于主干网络和颈部网络之间,主干网络两个特征层的输出通过CSATT 注意力机制,对于原有特征的空间和通道信息分别分配权重,然后进行高层特征与低层特征的融合与低层特征与高层特征的融合,充分互补了各层的语义信息,使得模型同时对于大、中、小目标有不错的检测结果。(3)改造了基线模型原有的颈部网络,从原来的两层特征融合金字塔FPN(feature pyramid network)结构,参考PANet 结构的思想,改进成为和CSATT 注意力机制结合的CSATT-PAN(channel spatial attention path aggregation network)结构,以上三点改进在速度降低有限的情况下,大幅提高了精度,很好地完成了模型平衡精度与速度的要求。

1 相关工作

1.1 轻量化工作

目前神经网络深度学习方向贡献了目标检测领域大多数的最高水平的成果,但是随之而来的是越来越深的网络层数和越来越高的计算资源的消耗,难以将最新的科技成果普及到更加广泛和实际的应用场景。因此相应的目标检测算法的轻量化是算法实际落地的过程中重要的步骤,以此来适应在现实场景中有限的客户端的硬件水平。MobileNetv1[19]主要思想是通过将主干网络中的普通卷积层(convolution,Conv)替换成了深度可分离卷积(depthwise separable convolution),利用卷积过程中的降维操作大大降低了模型的参数量。MobileNetv2[20]在v1 的基础上,通过使用倒置残差结构(inverted residual structure),将低维度压缩表示的输入扩展到高维度,使用深度卷积过滤,使用线性瓶颈模块(linear bottleneck)将特征投影回低维度。使用线性模块,是因为感兴趣的流形(manifold of interest)采用非线性激活将会损失很多信息。李仁鹰等人[21]将YOLOv4 网络的主干网络替换为了MobileNetv2 和结合注意力机制的方式实现了算法的轻量化,但是精度方面结果下滑严重。EfficientNet[22]通过综合优化平衡网络的深度、网络的宽度以及输入图片的分辨率之间的关系以达到最优解,大大减少了参数量和计算量,但是EfficientNet 依然存在精度不足的缺点,难以达到一般嵌入式或是其他计算资源紧张平台的精度要求,在嵌入式设备上进行目标检测时易受能耗和功耗等限制,使得传统目标检测算法效果不佳[23]。

在深度学习中,更好的结果往往依赖于更大的计算量,然而在这庞杂的计算结果中存在大量的冗余信息,如何处理这些冗余信息也是实现轻量化的一种方式。Wang等人[24]尝试从网络结构的角度来减少计算结果冗余的问题,提出了跨阶段的局部网络(cross stage partial network,CSPNet),通过多层次融合的残差信息,丰富了梯度信息,在同等精度下减少了20%的计算量。Han 等人[25]提出了一种解决特征图信息冗余的神经网络GhostNet,它基于特征映射应用一系列成本低廉的线性变换获得幽灵特征映射来训练网络,大大减少了参数量和计算量。

在轻量化的研究中心,去掉或者代替锚框(anchorfree)的思想也有相当多的相关工作,DenseBox[26]从训练图片中裁剪出包含人脸的块,利用这些块包含的人脸信息以及背景信息进行训练,然后输出包含置信度和4个方向上与真实框的距离的五维热图,配合分类与定位两方面的损失函数进行学习,通过密集采样开创了anchor-free 的做法。CornerNet[27]使用目标的左上角坐标和右下角坐标两个角点代替了目标的锚框,且提出了Corner-pooling 这一适配于左上角点与右下角点这种位置关系的池化方法,大大增加了网络的推理速度,而ExtremeNet[28]则对传统的矩形框做出了改变,绝大多数的目标并不是矩形,使用矩形框框选目标时会引进大量的背景信息,因此ExtremeNet通过预测每个对象类别的多峰热图,找到最底部、最顶部、最左侧和最右侧的4个极值点,再使用一个多峰热图对中心点进行预测,分类分数高于阈值的可形成一个预测框,在通用数据集上取得了很高的精度。

1.2 注意力机制

注意力机制自从问世以来,就广泛应用于神经网络的各个领域,它能捕捉到不同信息之间的权重差异从而度量不同信息的重要性,并且可以动态调整权重,以便于模型强化对重要信息注意的同时也忽略掉不重要的信息,从而提高深度学习算法的效率。CBAM(convolutional block attention module)[29]注意力模块将原始输入分别通过通道注意力和空间注意力模块的处理,并且和原输入进行按位相乘做到自适应的特征优化,提高了模型的精度。SeNet[30]则是专注于让模型学习到不同通道间的信息的重要程度,通过挤压(squeeze)操作得到通道级的全局特征,然后对全局特征进行激发(excitation)操作,得到各个通道的权重,按位乘以原来的特征图得到有注意力权重的特征图。ECA[31]注意力机制提出了一种不降维的局部跨通道信息交互策略和自适应一维卷积核大小的方法,高效实现SENet 类似效果。Hou 等在CVPR2021 中提出了坐标注意力,陈一潇等[32]将其运用到行人检测领域,将位置信息加入到通道注意力当中,使网络可以在更大区域上进行注意[33]。

2 YOLOv4-CSATT目标检测算法

2.1 YOLOv4-CSATT整体结构

YOLOv4-CSATT 算法在YOLOv4-Tiny 算法模型的基础上改进而来,网络结构由三个主要的框架构成:主干特征提取网络(backbone)、颈部特征融合网络(neck)以及检测头网络(head)构成。其主干网络ECA-CSPNet由YOLOv4-Tiny主干网络改进而来,结构图如图1所示,将原网络的第二层基础卷积层也改成ECA-ResBlock 结构,输入分辨率为416×416 的图像,在经过不同层数的下采样处理后,会在第四层和第六层两个特征输出层分别输出26×26 和13×13尺度的特征图,通过新增的CSATT 注意力模块分辨出重要的与次要的信息,然后进行加权处理,在CSATT-PAN 结构中将两层不同尺度的特征先后进行自下而上和自上而下的特征融合,然后分别进行Concat拼接操作,实现高层语义和低层语义的特征融合,然后通过检测头网络进行非极大值抑制(non maximum suppression,NMS)来预测分类结果,其原理是在符合一定阈值的重合度的预测框中,选取最优预测框。

图1 YOLOv4-CSATT算法示意图Fig.1 YOLOv4-CSATT algorithm diagram

2.2 ECA-CSPNet结构

ECA[31]注意力模块是一种通道注意力模块,因其即插即用、简单高效的特点广泛应用于计算机视觉领域。相比SENet注意力,ECA使用了一维卷积代替了全连接层(full connection,FC),降低了参数量,以极小的计算开销,实现了高效的模型的跨通道信息交换能力,提取了通道间的权重和依赖关系,其结构如图2 所示。图2 中,f表示输入的特征图,其高、宽、通道数分别用H、W、C来表示。首先每一层经过一次按特征图的全局平均池化(global average pooling,GAP),得到1×1×C的特征图,经过一次尺寸为k(本文取k=3)的卷积核的一维卷积层以及一层Sigmoid激活函数后,然后和原输入逐元素相乘得到输出特征图f′。本文选用了ECA 模块来改进原有的主干网络,因为ECA 模块相比其他主流的注意力机制如SENet、CBAM 模块有综合性能上的优势。在VOC数据集上,使用ECA 模块的结果为mAP 精度达到78.56%,FPS 达到94,替换为SENet 后mAP 精度达到78.61%,FPS 达到81,替换为CBAM 模块后FPS 下降约40%,为55,综合考虑精度与速度指标,选用ECA为最佳选择。

图2 ECA注意力示意图Fig.2 ECA attention diagram

YOLOv4-Tiny 的主干网络的设计思路很大程度上借鉴了CSPNet 的网络结构的思想:通过分割梯度流,残差结构融合了更加丰富的梯度组合,使得传播的梯度信息有更大的相关性差异,提高速度和准确性的同时减少了计算量。CSPNet 主要解决了3 个问题:(1)增强CNN 的学习能力;(2)消除了计算瓶颈;(3)减少了内存成本[24]。本文在CSPNet的基础上,将ECA 注意力机制引入其中,并且将BasicConv 模块中激活函数由Mish 函数改为计算效率更高的LeakyReLU激活函数,两者公式如下:

从两者的公式可以看出,Mish 函数的计算涉及到更为复杂的正切函数与对指数函数的计算,而LeakyReLU 函数是依赖于单个超参数的线性函数,只用一个超参数就保持了自变量为负值的梯度流,防止出现神经元死亡,降低了计算代价,提高了计算效率。本文提出了ECA-ResBlock 结构,其主要结构如图3 所示。残差结构的思想自从在ResNet[34]中提出以来,已经成为神经网络防止过拟合的设计范式。CSPNet 是ResNet 中残差结构思想更进一步的发展,在本文的ECA-ResBlock 模块中,在BasicConv 卷积模块的堆积之上,引入了两条残差边,其中一条残差边在经过三次普通卷积层的处理后,分两支其中一支经过一层普通卷积层和ECA 注意力后和不做处理的另一支进行Concat 操作,然后在经过一层普通卷积层后,和另外一条未经处理的残差边进行Concat操作。这两条残差边的引入无疑为模型提供了更多的跨阶段的梯度信息,优化了重复的梯度信息,增强了不同层中学习特征的可变性,增强了空间信息的提取,减少了计算成本。

图3 主干网络及其主要模块示意图Fig.3 Diagram of backbone network and its main modules

2.3 CSATT-PAN结构

本文在基于CSATT 注意力机制的基础上,借鉴了PANet[35]与FPN[36]颈部特征融合网络的思想,提出了CSATT-PAN 颈部网络结构。感受野(receptive field,RF)是神经网络和深度学习领域很重要的概念,用来表示网络内部不同位置的神经元对于原始图像的感受范围的大小。感受野越小,表示其所包含的特征趋于局部和细节,感受野越大则表示其能接触的原始图像的范围就越大,因此神经元能感受到更多目标周围有效的、更为全局的、语义层次更高的上下文信息,FPN 与PANet都是有效增加神经元感受野的多尺度的特征融合算法。在FPN 特征金字塔网络中,不同层的特征输出层自顶向下地进行特征融合,而PANet在此基础上多进行一次自下而上的特征融合,融合了高层语义特征和低层语义特征,但是在多层语义特征融合的过程中,尺度不匹配所带来的误差一直不能忽视,因此,在主干网络和颈部网络之间,通过额外加入一个CSATT注意力模块,让网络对于不同特征输出层的重要程度的权重进行学习,以此可以动态增强颈部网络特征融合的结果,从而提高目标检测的精度。CSATT注意力如图4所示,在CSATT 结构中,尺寸为H×W×C的输入特征图F,先按特征图全局平均池化,然后进行一维卷积计算,实现通道间的信息交换,再通过Sigmoid 激活函数进行计算后和原输入逐元素相乘得到中间特征图。中间特征图继续按通道进行全局平均池化,实现空间间的信息交换,然后经过Sigmoid 激活函数进行计算后和原输入逐元素相乘获得最终的结果F′。

图4 CSATT注意力示意图Fig.4 Diagram of CSATT attention

在如图1所示的颈部网络结构中,高层语义特征先自顶向下进行上采样和低层语义特征进行Concat操作,然后分别经过卷积层后直接输出到检测头和下采样后的高层语义进行Concat操作后输出到检测头。

本文提出的CSATT-PAN 结构,充分利用了PANet 结构对于不同尺度的多个特征的融合作用和CSATT 注意力对于空间和通道的权重学习的能力,在下采样16 倍和32 倍的特征图上进行了特征的反复提取,提高了网络同时对于大目标和小目标的检测效果。

2.4 DC-SPP多尺度特征融合模块

为了实现更好的特征融合效果,不仅在颈部网络实现特征融合,本文在主干网络也引入多尺度的特征融合模块。通常的SPP 模块的算法实现如图5所示。参考SPPNet[37]的设计思想,本文使用空洞卷积替换其中原有的最大池化层提出了DC-SPP 模块,如图6所示。

图5 SPP模块Fig.5 Spatial pyramid pooling module

图6 DC-SPP模块Fig.6 DC-spatial pyramid pooling module

为了扩大特征的感受野,本文实现了多尺度感受野的融合。如图6 所示,输入分为四路,一路为残差边保持原有信息,另外三路经过不同膨胀率的空洞卷积层,四路信息相加,经过一个ResNet残差网络中的瓶颈块结构,先进行1×1 的卷积进行降维,然后进行3×3 卷积,再通过1×1 卷积升维到原来的维度来降低一部分的计算量,并和一条残差边相加,实现了多尺度的特征融合,进一步提高了网络的多尺度的上下文信息提取能力和特征表达能力。

空洞卷积可以通过设置不同的膨胀率,使得卷积核的各个元素不再相邻,而是根据公式相隔一个距离,其计算公式如下:

其中,k′为新的卷积核尺寸大小,k为原始卷积核尺寸大小,d为膨胀率,卷积核的个数并未增加,但是覆盖面积却变大,给特征图带来更广大的感受野。经过实验,3 个分支的空洞卷积的膨胀率根据实验结果选择为2、3、4组合,实验结果将在后面进行介绍。

2.5 YOLOv4-Tiny的损失函数

在YOLOv4-Tiny 中,主要计算三个方面的loss:位置损失、置信度损失和类别损失。其总的损失函数可以写为:

其中,位置损失函数采用了CIoU[38]的评价标准,CIoU在IoU 的基础上发展而来,IoU 是最为传统的预测框检测效果的评价指标,其含义是预测框与真实框的交集和预测框和真实框的并集的比值,公式为:

其中,b代表预测框,bgt代表真实框。使用IoU作为评价标准存在一些问题:(1)IOU 没有考虑两个框之间的位置信息,当两个预测框之间没有重叠面积时IoU值为0,则反向传播无法进行;(2)IoU 对于尺度不敏感,对于大小不同的框,其IoU 值可能相同,但是其重叠程度却可能不同。针对IoU 评价标准存在的问题,GIoU[39]、DIoU[40]、CIoU 被相继提出,这些算法的核心思想都是针对IoU 的缺点,不仅考虑预测框与真实框的交集和预测框和真实框的并集的比值,还引入了预测框和真实框的最小闭包矩形面积和预测框和真实框形心和最小闭包矩形对角线长度的归一化比值等指标,YOLOv4-Tiny 采用的CIoU 中引入了更加注重真实框和预测框长宽比差异的惩罚项,其公式为:

CIoU 如图7 所示,蓝色矩形为预测框,黄色矩形为真实框,d代表两个矩形的几何中心点的距离。式(6)中ρ2(b,bgt)代表了真实框和预测框的中心点的直线距离的平方即为d的平方,绿色矩形为两个矩形的最小闭包矩形,c表示其对角线长度,α、v表示对于真实框和预测框长宽比差别的惩罚项,其数量关系如式(8)所示。在式(7)中,ωgt表示真实框宽度,hgt表示真实框高度,ω为预测框宽度,h为预测框高度。

图7 CIoU示意图Fig.7 Diagram of CIoU

3 实验与分析

3.1 实验标准评价指标

在目标检测任务中,常常使用平均精度(average precision,AP)及其按种类平均的精度值(mean average precision,mAP)作为精度的评价指标。相关的指标还有召回率(recall,R)、准确率(precision,P)以及F1值,使用FPS作为模型速度的指标,相关的公式为:

在式(9)、式(10)中,TP(true positive)表示为模型预测为正样本且预测正确,FP(false positive)表示为模型预测为正样本且模型预测错误,FN(false negative)表示为模型预测为负样本且模型预测错误。在式(11)中,某个种类的Precision曲线与坐标轴围成的面积即为单个种类的AP 值,而mAP 值则是n个种类物体的平均AP值。

3.2 实验配置

本文实验在Ubuntu16.04 系统环境下进行,采用Pytorch1.7.1 版本的深度学习框架,显卡硬件采用NVIDIA GeForce RTX 2080Ti,显存为11 GB,CPU 的型号为Intel®Core™i9-9900X CPU@3.50 GHz。

本文模型输入图像为416×416,初始学习率为0.01,最低学习率设置为0.000 1,优化器采用SGD 优化器,动量参数设置为0.937,学习率衰减方式选用余弦退火,衰减率设置为5E-4,batchsize 设置为16,训练120个epoch。

3.3 实验数据集情况

本文的训练与测试实验主要集中在通用目标检测领域两个主流数据集:PASCAL VOC 和MS COCO数据集,以下简称VOC 数据集和COCO 数据集。VOC数据集总共含有17 125张图片,分为20个类别;COCO 数据集是由微软公司提出的一个更为庞大的数据集,总共包含80 个类别,分为训练集、验证集和测试集,其中测试集数据没有标注信息因此弃用,主要使用训练集和验证集的数据来进行训练和测试,最终约有117 000 张图片。数据集均按照8∶1∶1 的比例划分训练集、验证集和测试集进行训练。

3.4 实验结果分析

为了证明提出的算法模型具有真实的有效性,本文采用了多组对比实验与其他目标检测方法进行比较。在检测阶段,基本设置为:输入图像大小为416×416,在非极大值抑制阶段计算召回率、平均准确率及其他指标时,设置IoU 的阈值为0.5,设置与得分最高预测框IoU 小于阈值0.4的预测框被淘汰。使用本文算法与其他算法在相同的数据集和训练相同的epoch 数的基础上,将得到的性能结果进行了比较与分析,证明了本文算法基本维持速度的情况下大幅提高了精度。

在VOC数据集上将本文算法和基线算法YOLOv4-Tiny、一些主流的通用目标检测算法以及轻量级目标检测算法的结果进行比较,结果如表1 所示。从表1中的结果可以看出,本文算法作为单阶段的目标检测方法,不仅分别超过Faster R-CNN、SSD、Efficientdetd1、YOLOv3-Tiny、YOLOv4-MobileNetv1、YOLOv4-MobileNetv2、PP-YOLO 约3.3、5.5、6.3、17.4、10.3、0.9、0.6 个百分点的精度,且在速度方面是Faster RCNN 的 约9 倍,是SSD、Efficientdet 的 约4 倍,和YOLOv3-Tiny 基本持平,约是主干网络替换为MobileNet 网络的YOLOv4 系列网络的7~10 倍。而和本文模型的基线算法YOLOv4-Tiny 相比,本文的精度不仅提高了12.3 个百分点,召回率提高了7.2 个百分点,且FPS 基本和原模型接近,这表明本文的基于注意力的颈部特征融合网络和对主干网络的改进,提高了网络对于冗余信息的利用能力。

表1 不同算法在VOC数据集上的性能对比Table 1 Performance comparison of different methods on VOC dataset

如图8 所示,对预测框中心点做热力图分析,直观地展示了注意力机制在预测框的选择与回归分类的过程中发挥的作用。本文模型在注意力机制的指导下,更加聚焦于目标的几何中心区域。从表2的分类结果中可以看出:本文改进的算法基本在大部分种类上优于YOLOv4-Tiny 算法,本文算法在小目标的精度上基本和YOLOv4-Tiny 持平,但本文模型在大中型目标方面,相对于YOLOv4-Tiny 错检、漏检的概率更低,预测框的偏移更小;在人物(Person)、瓶子(Bottle)、羊(Sheep)、飞机(Aeroplane)、马(Horse)、牛(Cow)以及猫(Cat)类型上的检测效果相对于YOLOv4-Tiny 有明显的提升,这是由于本文的CSATT-PAN 结构在特征融合的过程中实际上给与了检测目标以更大的感受野,然后通过CSATT 注意力中的空间注意力部分感受到了经过感受野放大后的检测目标,实现了精度的极大提升,然而在一些小目标的指标上有略微的降低,可能与训练集中样本分布的不平衡有关,样本少的类别的检测结果不具有鲁棒性,训练过程会导致正样本和负样本的失衡[41]。

表2 VOC数据集上与YOLOv4-Tiny算法各类别精度的对比Table 2 Precision comparison of each category on VOC dataset with YOLOv4-Tiny algorithms 单位:%

图8 预测框中心点热力图Fig.8 Heatmap of center point of bounding box

表3 是关于轻量级算法在COCO 数据集上的性能结果,其中Ours-2 算法是在本文算法的基础上保留了YOLOv4-Tiny 原有的主干网络CSPDarknet53s的算法。本文算法相对于YOLOv4-Tiny 算法在AP、AP50、AP75 指标上提高了6.4、8.5、12.6 个百分点,而在COCO 数据集特有的评价指标APS、APM、APL上,本文算法相对于YOLOv4-Tiny 高出了3.3、7.4、14.0个百分点,在速度方面,FPS 指标与YOLOv4-Tiny 相近。在与其他的主流轻量级算法如Efficientdet 和PP-YOLO 的对比中,本文算法的指标仍占据比较大的优势,这足以说明本文算法的有效性。

表3 轻量级算法在COCO数据集上的性能比较Table 3 Performance comparison of lightweight algorithms on COCO dataset

图9 是COCO 数据集中常见种类目标的PR 曲线图。通常情况下,评价一个目标检测算法的性能,要以不同IoU 门限阈值对所有预测框进行检测,每次检测分别计算Recall 值和Precision 值,计算公式已在3.1 节给出,并以Recall 值作为横坐标,Precision 值作为纵坐标来画PR 曲线。某个种类目标的PR 曲线与坐标轴围成的面积即为该种类的AP 值。因此,一般来说PR 曲线越靠近右上角,性能评价更高。在图9中,按照COCO 的目标大小划分标准,其中像素小于32×32 的目标为Small 目标,像素大于32×32 而小于96×96 的为Medium 目标,大于96×96 的为Large 目标,以此标准分为三类目标。在图9中以实线表示本文算法PR 曲线,用虚线表示YOLOv4-Tiny 算法,分别用青色线、黄色线、红色线、蓝色线表示Small 目标、Medium目标、Large目标、所有目标平均值。从各个种类的PR曲线图中看出,本文算法的大、中目标的PR 曲线在YOLOv4-Tiny 算法PR 曲线的右上方,与坐标轴围成的面积也就是AP 值更大,结果稳优于YOLOv4-Tiny 算法,在小目标的PR 曲线上略微优于YOLOv4-Tiny算法。

图9 COCO数据集上各类目标的P-R曲线Fig.9 P-R curves of class targets on COCO dataset

表4 是关于本文模型的各种组件在VOC 数据集上消融实验的结果,基线模型是YOLOv4-Tiny。相对于基线模型67.0%的mAP 结果,本文算法的mAP达到了78.6%,提高了11.6 个百分点的精度。原模型没有很好地捕捉与学习到目标相当多的特征,从而没有表现出很好的检测结果,而本文的模型在基线模型的基础上,对主干网络进行改进,增添了CSATT注意力机制,增加了CSATT-PAN结构,在原有精度的基础上都有提升,说明本文的注意力机制和颈部特征融合网络都发挥了较好的作用,使得模型加强了识别多尺度目标和权重学习的能力。图10为本文算法(左侧)和YOLOv4-Tiny 算法(右侧)在相同图片上的检测结果,本文算法明显减少了错检、漏检的情况,并且预测框的位置更加贴合于目标的实际轮廓,更加精准与紧凑。

表4 消融实验对比Table 4 Comparison of ablation experiment

图10 与YOLOv4-Tiny算法检测效果可视化对比Fig.10 Visual comparison of detection effect with YOLOv4-Tiny algorithm

本文还对于DC-SPP 模块的超参数膨胀率进行了对比实验,结果如表5所示。本文设置膨胀率组合为[2,2,2]、[3,3,3]、[4,4,4]、[3,3,4]、[2,3,4],和原始SPP 模块进行对比实验。实验结果表明本文的DCSPP 模块相比原始SPP 模块更为有效,在各种膨胀率配置中[2,3,4]的配置综合来看结果最好,因此选用[2,3,4]这一膨胀率组合。

表5 空洞卷积空间金字塔池化超参数实验Table 5 Hyperparametric experiment of DC-SPP module

4 结束语

通用目标检测的轻量化算法在各个领域都有其应用,有重要的研究意义,本文以YOLOv4-Tiny 算法为基础,提出了一种基于注意力和特征融合的改进方法。在主干网络中修改了激活函数且引入了ECA注意力机制,修改了主干网络的卷积层为ECAResBlock 模块,注意力机制使得模型对于重点目标进行了聚焦,对于感兴趣的目标给以更高的权重。对传统SPP模块进行改进,使用空洞卷积替换了原有的最大池化层结构,并且使用了ResNet 的瓶颈块结构,为主干网络带来了多尺度的特征信息。使用CSATT-PAN 结构替换了原有的颈部网络,通过高层语义和低层语义的特征融合给模型提供了更多的上下文信息,提高了模型准确率。实验结果表明,本文算法YOLOv4-CSATT在相同的实验环境和数据集的基础上与YOLOv4-Tiny 以及其他主流模型相比,在精确度和速度方面均有不少的提高。本文算法相比YOLOv4-Tiny算法在VOC数据集上提高了12.3个百分点,在COCO 数据集上高出了6.4 个百分点,在速度方面是SSD、Efficientdet-d1 的约4 倍,是Faster RCNN的约9倍。

目前本文算法还存在一些局限性,如何在模型大小和参数量都较小的水平下追求更高的准确率是目标检测算法轻量化的目标。未来工作中可以展望的方向是使用anchor-free的方法缩短推理时间,以及使用正负样本匹配平衡的做法增强小目标居多场景的检测效果的鲁棒性。

猜你喜欢
注意力卷积精度
让注意力“飞”回来
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
基于DSPIC33F微处理器的采集精度的提高
基于傅里叶域卷积表示的目标跟踪算法
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
GPS/GLONASS/BDS组合PPP精度分析
改进的Goldschmidt双精度浮点除法器
一种基于卷积神经网络的性别识别方法