APP下载

Res2Net融合注意力机制的YOLOv4目标检测算法

2022-09-29刘振凯赵妍祯

计算机测量与控制 2022年9期
关键词:卷积损失图像

张 翔, 刘振凯, 叶 娜, 赵妍祯

(西安建筑科技大学 信息与控制工程学院,西安 710311)

0 引言

目标检测作为计算机视觉的重要研究领域,是解决图像描述、场景理解、语义分割、目标追踪和事件检测等更高层次视觉任务的基础。随着深度学习被应用于计算机视觉研究中,基于卷积神经网络的目标检测算法成为目标检测算法的主流。

基于深度学习的目标检测算法分为两阶段的目标检测算法和单阶段的目标检测算法。由学者Girshick提出的R-CNN算法[1]就是两阶段目标检测算法的代表,该算法将人工干预用Selective Search[2]方法进行替换,利用卷积神经网络(CNN,convolutional neural networks)提取特征。使用支持向量机(SVM,support vector machine)对获取的特征进行分类。通过PASCAL VOC数据集[3]对R-CNN检测算法进行验证,准确率为58.5%。因R-CNN在全连接层需要对图像进行裁剪、压缩为固定大小,最终影响检测结果的准确性。于是Kaiming He等人提出了多尺度空间金字塔网络[4](spatial pyramid pooling,SPP-net),SPP-net的引入有效解决R-CNN对图像处理时导致的不完整性问题。由于SPP-net的特征提取是基于多尺度空间金字塔池化,需要花费大量时间在训练以及检测上,因此Fast R-CNN[5]将SPP-net池化替换为感兴趣区域池化(region of interest pooling,ROI pooling),节省检测时间和训练时间,并将SVM替换为softmax,节省存储空间。Faster R-CNN[6]对候选区的选择方式进行了改进,使用区域建议网络[6](RPN,region proposal network)。将RPN嵌入到Faster R-CNN中去,实现真正意义上端到端的检测与训练。

2016年Redmon[7]等人改变以往的两阶段检测思路,采用单阶段检测,这种全新的检测方法取名为 YOLO(You Only Look Once),其网络架构受到GoogleNet[8]图像分类的启发,将目标检测视为回归问题,看成一个单一神经网络,利用整张图像预测所有类的边界框。模型将图像分为网格,每个网格负责预测对象边界框和边框置信度,置信度反映了模型预测的准确性。

因YOLO需要对置信度位置进行推测,产生大量的Prediction box,增加计算量影响检测速度。YOLOv2[9]借鉴Faster R-CNN中anchor box思想,利用锚框对目标位置进行估计,减少Prediction box的数量,提高了检测速度。但YOLOv2对小目标检测精度不高,Joseph Redmon提出YOLOv3[10]并引入了新的思想,主干网络采用DarkNet-53,借鉴残差网络算法,增加检测模型的深度。YOLOv3受特征金字塔网络[11](FPN,feature pyrimad networks)启发,融合多个尺度特征网络,提升模型检测精度。Alexey Bochkovskiy等人[12]提出了YOLOv4,模型检测精度以及检测速度相比于其他的YOLO系列得到提升,Liu等人提出了SSD[13]模型,使用单个独立的过滤器进行检测,每个过滤器都进行图像特征提取,并将获取的特征传送到检测器中,以便执行对尺度检测,经过改进SSD的检测速度要比YOLO更加快速,而且检测的精准度相比于Faster R-CNN还要精确。

随着单阶段目标检测效率的提升,将该检测方式应用到其它检测领域已经成为热点问题。张兴旺团队将Tiny-YOLOv3应用在无人机地面目标跟踪上[14],通过应用卡尔曼滤波器实现目标的有效跟踪。随着2020年疫情变得严峻,将目标检测与疫情防控融合,实现疫情的有效控制,于硕团队将YOLOv5应用到口罩佩戴检测中[15],面对复杂的检测环境,可以有效进行防控工作。

虽然YOLOv4提升目标检测的精度,但对于细微层次上的特征表达不那么敏感,当检测的目标过小或者有遮挡时,模型会出现漏检以及误检等问题。

针对YOLOv4模型中存在的问题,提出RFAL YOLOv4模型,具体改进为引入Res2Net,替换原有ResNet,实现细小特征获取;利用注意力机制获取关键信息,减轻模型计算负担;改进CIOU损失函数,解决对有遮挡目标检测出现的漏检问题,提升模型的检测准确率。

1 YOLOv4算法介绍

传统YOLOv4是以CSPDarkNet53[16]为主干网络,先将输入为3通道的图像处理为32通道,然后再输入到主干网络中进行卷积操作。基础主干网包含了72个卷积层,对输入的图像进行浅层特征提取,经过多域金字塔池化层(SPP)以及路径聚合网络[17](PANet),将提取的浅层特征进行深层处理,最终将获取到的特征输入到检测头,输出3个大小不同的heatmap。具体的YOLOv4算法结构如图1所示。

图1 YOLOv4算法结构图

YOLOv4输出为3个大小不同的heatmap,对不同的目标进行检测。由于本文输入模型的图像像素值大小为416*416,因此经过卷积操作以及池化操作后,输出的检测头像素值分别是52*52、26*26、13*13。虽然YOLOv4在以前的YOLO上做了极大的优化,但还会出现漏检以及误检的目标,影响模型的检测准确率。

2 RFAL YOLOv4

为改善YOLOv4算法在复杂背景下检测小目标困难,RFAL YOLOv4首先在原始网络中改进ResNet残差网络,并融合注意力机制,实现卷积网络对图像特征细微获取,其次改进原有的CIOU损失函数,可以实现遮挡目标的有效识别。原始YOLOv4网络在SCPResNet结构的part2部分进行残差网络循环操作,RFAL YOLOv4网络不仅在CSPRes2Net结构的part2部分进行组内残差循环操作,并且在完整的循环操作后融合注意力模块,网络结构对比如图2所示。

图2 YOLOv4与RFAL YOLOv4骨干网络对比

2.1 引入Res2Net网络结构

Res2Net[18]在传统的ResNet[19]上进行改进,模型获取更细微图像特征。它通过在一个残差块内构造层次化的残差连接,增加了每个网络层的接受域。

ResNet只是单一的残差操作,它的思想是将原有网络特征利用卷积操作一分为二,这两个结构块输入特征相同,一块不进行卷积操作,另一块进行卷积操作,然后将没有进行卷积操作的那一块特征与参加卷积操作的输出特征进行合并。

Res2Net网络结构先进行分组,在进行残差操作,它的思想是首先将输入特征分组,其中一组过滤器先进行卷积操作,提取输入信息的特征,然后将获取到的特征和另外一组发送过来准备输入的特征一起输入到下一个过滤器,对上述过程不断的重复执行,它的目的是对输入特征进行完全处理,处理完之后该操作结束,最后连接这些特征图,并将连接好的特征图传递到一个1*1的过滤器,融合所有特征。在特征传递过程中,输入特征可以以任何路径进行转化,当通过和上一次卷积相同的3*3过滤器时,由于卷积操作的原因使得感受野增加。网络结构对比如图3所示。

图3 网络结构对比图

(1)

虽然引入组内残差结构,增加了网络的卷积操作,可以有效的获取图像上下文特征,但增加了模型的复杂度。相比于原始的CSPDarknet网络,改进后的网络每经过一次CSP网络,都要进行特征分割并进行卷积操作,增加了模型的计算量,影响了模型的检测实时性,但模型的检测精度得到提升。

2.2 引入注意力机制

由于组内残差对特征过度细小化提取,导致模型计算量增加。因此引入注意力机制获取关键信息降低Res2Net计算量。

2018年提出(CBAM,convolutional block attention module)[20],一种既考虑不同通道像素相关性,又考量空间像素影响的注意力算法。并且进行组内残差连接之后,虽然可以获取到更深、更有判别力的特征图信息,但这也会造成特征图空间信息出现丢失。

CBAM首先进行通道域处理,将输入的特征进行全局最大池化和全局平均池化,然后送入一个两层的神经网络并进行激活操作,最后将这两层网络进行加和在经过sigmoid激活,生成channel attention feature,将得到的通道注意力特征和输入特征进行乘法操作,最终生成spatial attention模块需要的输入特征;其次进行空间域处理,将channel attention模块输出的特征做一个基于channel的全局最大池化和全局平均池化,得到两个H*W*1的特征图,然后将这两个特征图做拼接操作,然后进行7*7卷积,进行降维操作,在经过sigmoid生成spatial attention feature,最后将channel attention输出的特征和该模块处理的特征进行乘法操作,得到最终的Refined Feature。因此引入CBAM注意力机制模块可以有效地避免信息丢失等问题。CBAM注意力模块如图4所示。

图4 CBAM网络结构图

将CBAM注意力模块融合到组内残差网络中,模型在进行训练时,图像经过主干网络进行特征提取,首先进行归一化、前向传播以及激活操作,然后利用卷积操作将处理后的图像特征分为两个部分,这两部分特征相同,其中一部分特征保留,而另一部分特征输入到组内残差卷积块中,模型对图像特征进行卷积操作,并获取细小特征,利用卷积操作将这两个部分的特征合并,最后将提取的特征输入到CBAM注意力模块,利用注意力模块对获取特征进行关键信息提取,使用该注意力模块增加模型感受野,从而使模型具有更好的检测效果。以及引入CBAM注意力机制,可以有效抑制背景信息干扰。融合后的网络结构图如图5所示。

图5 CBAM-Res2Net网络结构图

替换ResNet为Res2Net并在组内残差网络之后融入CBAM注意力模块,在不同的像素下输出的特征图像如图6所示,上半部分为原始YOLOv4处理后的图像特征输出,下半部分为RFAL YOLOv4特征输出,RFAL YOLOv4训练的图像像素输入值设置为416*416,经过卷积之后网络的三层输出像素分别是52*52、26*26、13*13。

图6 特征输出对比图像

通过Res2Net和CBAM融合后输出特征图对比发现,引入注意力机制,52*52、26*26像素输出提高目标与背景的区别,替换ResNet网络之后,RFAL YOLOv4可以获取更多的特征,尤其是在52*52像素特征输出时最为明显。

2.3 改进CIOU损失

目标检测任务中,利用损失函数反应Real Box和Prediction Box的误差,其中IOU[21]损失函数的范围在(0,1)之间,具有尺度不变性,IOU损失可以评价各种形状的匹配程度。所以将IOU损失引入到YOLO检测中。IOU损失如公式(2)所示。

(2)

式中,A表示Prediction Box与Real Box的交集即获取的交集区域的面积,B表示Real Box与Prediction Box的并集即获取的并集部分的面积。利用获取的交集的面积和并集的面积作比,最终得到IOU。

但当Real Box与Prediction Box不相交时IOU为零,不能预测Real Box与Prediction Box之间的误差值;当Prediction Box与Real Box交集、并集相同,此时得到的IOU相同,但位置不一致时,模型获取到的图像特征是不相同的,因此IOU损失函数不满足此时的需求。

因此GIOU[22]损失在IOU损失的基础上进行优化, GIOU损失如公式(3)所示。

(3)

式中,C表示Real Box与Prediction Box的最小外接矩形,但当Prediction Box位于Real Box内部时,GIOU会退化为IOU损失,无法优化相对位置,收敛缓慢。由于出现损失退化的问题,所以对损失函数进行优化,产生DIOU损失[23]。

(4)

DIOU保留了GIOU的优点,对两个框的中心点进行度量,使其进行快速收敛,并且当两个框的中心点重合时,DIOU才退化为IOU,虽然DIOU在前人的基础上做了改进,但该损失有个缺陷是当Prediction Box与Real Box距离一致但是框的形状不一致,其计算的DIOU结果相同,无法进行模型的优化。所以对其进行优化,产生CIOU损失。

CIOU损失考虑到同一中心点位置的Prediction box的形状不同,在DIOU损失函数的基础上对其添加惩罚项。用于Prediction box形状的区分。

CIOU损失如公式(5)所示。

(5)

(6)

(7)

式中,α用以平衡参数,v表示宽高比的倾斜角度。

YOLOv4模型训练时,当出现划定的多个位置不同的Prediction Box形状相同,且它们到Real Box中心点距离相同,计算得到多个Prediction Box的CIOU损失值一致,导致模型在回归操作时会舍弃相同的Prediction Box,因此出现漏掉图像部分特征的问题。当模型进行检测任务时,如果检测目标恰好被某个物体遮挡,遮挡部分的Prediction box与没有被遮挡部分的Prediction box进行损失计算时,它们的损失函数值一致,这就导致目标在被遮挡时出现检测误差。

对上述问题,RFAL YOLOv4在CIOU的基础上添加了惩罚项,计算Prediction box左上角到Real box中心距,以此区别于Prediction box与Real box中心距相同、Prediction box形状相同、位置不同时的特殊情况。损失函数计算公式如(8)所示:

Loss=1-LossYOLOv4-β*t

(8)

β计算公式如(9)所示:

(9)

t的计算公式如(10)所示:

t=I(a,b)

(10)

式中,a表示Prediction box到Real box左上角的距离,b表示Prediction box到Real box中心点的距离,I表示坐标距离的比值,β表示平衡t所添加的参数项。

2.4 模型训练

采用的数据集为官方的VOC数据集,首先运行voc2yolo4.py文件,将数据集划分为训练集、测试集、验证集,然后设置classes为aeroplane、bicycle、bird等20个类别,然后设置模型输入图像的像素,输入shape大小为416*416,设置anchor_num为9,进行聚类操作生成九个聚类框的坐标,参数设置完成之后进行模型训练。

2.4.1 超参数设置

1)修改VOC_label.py文件中的类别标签,将其修改为要识别的目标类别。由于本文采用VOC2007+2012数据集,进行模型训练时,在该文件下将classes分别修改为对应的分类类别。

2)修改obj.data文件中的classes、修改为训练数据集的类别数,因此设定classes分别为20。设定训练数据集路径、模型训练时生成的权重值存储文件路径,cfg/obj.names文件为模型训练时各类别名称。

3)修改obj.names文件中进行分类的类别,进行VOC数据训练时,在该文件中设置类别为aeroplane、bicycle、bird等类别。

4)YOLOv4.cfg文件:此文件主要为模型的网络结构,文件开头部分描述了用于训练网络的一些超参数,剩余部分为图像特征提取的主干网络。修改一部分超参数使其适应本文数据集和训练环境。文件中将batch设置为64、subdivisions设置为16(主要取决于模型训练的GPU内存大小)。max_batches=40 000(迭代次数为训练类型classes*2 000)、steps=32 000,36 000(设置为max_batches的80%、90%)、classes=20,anchors为kmeans聚类之后获取的先验框坐标、[yolo]-layers下的三处filters=75。filters的计算公式如式(11)所示:

filters=(5+classes)×3

(11)

式中,filters表示卷积输出,classes表示类别数。

2.4.2 预编译

首先运行test.py文件,将数据集划分为训练集、测试集以及验证集,然后运行VOC_label.py文件,获取Annotations标签文件中的标注文件属性。最后运行kmeans_for_anchors.py文件,使用kmeans算法,对模型训练时的数据集进行聚类操作,并生成聚类框的坐标值。

3 实验结果与分析

3.1 数据集

本次实验采用的数据集来自PASCAL VOC 2007[4]和PASCAL VOC 2012,其中包含有人、猫、狗、马、自行车、电视、沙发、鸟等等20个种类22 077张图片。本次实验将数据集随机划分为验证集、训练集、测试集,训练集有19 870张图片,测试集有1 985张,验证集有222张,使用19 870张不同种类的图片实验模型的预训练,使用1 985张图片进行模型的测试。实验数据如表1所示。

表1 实验数据划分

3.2 实验环境

3.2.1 实验硬件环境

由于该实验需要对大量的图数据进行处理,所以需要利用GPU进行计算。表2为实验所需要的硬件环境。

表2 硬件环境

3.2.2 实验软件环境

本实验所使用的模型为RFAL YOLOv4,部分实验采用的权重参数如表3所示。

表3 软件环境参数值表

3.3 模型性能比较

采用AP和mAP进行模型性能评价,将本文改进的检测模型RFAL YOLOv4和Fast、Faster、SSD、YOLO、YOLOv2-v4目标检测模型进行对比,各个类别的检测结果如表4所示,RFAL YOLOv4在检测精度上得到相应的提升。通过图表对比各模型检测结果,对某个类别检测精度最高项,采用斜体加粗的方式进行标记。余丽仙团队改进SSD[24]六个检测类别精度占优,YOLOv2两个检测类别精度占优,YOLOv3一个检测类别精度占优,YOLOv4三个检测精度占优,RFAL YOLOv4有九项检测精度占优,其中YOLOv4与RFAL YOLOv4有一项并列占优。RFAL YOLOv4模型相比于传统YOLOv4模型,mAP提升了5.5%,相比于改进SSD目标检测算法,mAP仅差0.1%,但RFAL YOLOv4在具体类别检测中占相对高的优势,相比于YOLOv2提升了6.1%,相比于YOLOv3提升了5.6%。通过图8可以直观的看出,RFAL YOLOv4模型基本处于最高点。

图8 VOC 测试数据集20类别检测精度对比

表4 VOC 测试数据集下20类检测精度对比

网络模型的评价指标表现为两方面,分别为检测模型的精度和速度,RFAL YOLOv4相比于传统YOLOv4模型在检测的速度上有所下降,但是模型的检测精度提高了5.5%。具体的模型对比如表5所示。

表5 VOC数据集下模型检测速度对比

YOLOv4和RFAL YOLOv4在训练时检测精准度对比如图7所示,其中横坐标表示模型在各个类别上的检测精准度,纵坐标表示模型的类别,mAP表示检测模型的最终检测精准度。

图7 模型检测结果对比

3.4 检测结果对比

通过检测结果图更加直观的展示RFAL YOLOv4有效性。图9为YOLOv4与改进RFAL YOLOv4在测试集上的检测结果。采用PASCAL VOC 2007+2012 train训练集。图像大小的输入均为416 * 416像素值。

图9 YOLOv4与RFAL YOLOv4检测结果对比

a1-k1为传统YOLOv4算法的检测结果,图a2-k2为RFAL YOLOv4算法的检测结果。通过a1、a2、b1、b2对

比,原始YOLOv4模型出现误检,将没有出现的目标误检为椅子,将目标中的马和人误检,RFAL YOLOv4有效的识别出目标中的检测对象。c1、c2、d1、d2对比,YOLOv4算法出现漏检,未能识别桌子以及桌子上的瓶子,d1图像中漏检了椅子,而RFAL YOLOv4算法对桌子、椅子、瓶子识别率高。通过e1、e2对比,在检测的对象较多时,YOLOv4出现漏检,未能充分检测图像中的鸟类,RFAL YOLOv4算法精准的识别出图像中的鸟。

为验证RFAL YOLOv4算法对小目标检测效果,从VOC数据集中挑选出小目标图像进行检测,图中f1-h1为传统YOLOv4检测结果,f2-h2为RFAL YOLOv4算法检测结果,通过f1、f2对比,RFAL YOLOv4精准的识别出图像中的船舶,通过g1、g2对比,RFAL YOLOv4算法对汽车识别效果好,通过h1、h2对比,RFAL YOLOv4算法可以精确识别图像中出现的羊。

通过在VOC数据集中选取200张有遮挡图像,组成小型遮挡数据集进行检测,通过实验最终得到改进CIOU损失,如表6所示,模型的检测精度相比于原始YOLOv4检测模型提升了3.1%,相比于文献21中SSD算法mAP高0.5%。

表6 遮挡目标检测结果对比

为了验证在有遮挡的情况下RFAL YOLOv4算法的鲁棒性。通过实验验证RFAL YOLOv4算法对遮挡目标检测效果比较好。通过i1、i2行人被遮挡后,RFAL YOLOv4算法可以精准检测,通过j1、j2行船几乎被完全遮挡时,RFAL YOLOv4算法可以准确检测行船,通过对比k1、k2,RFAL YOLOv4对狗有好的识别能力。

通过检测结果直观的展示RFAL YOLOv4检测模型的有效性。检测图像中存在较多的检测目标,可以更多更精确的检测;检测对象中存在有较小的目标,RFAL YOLOv4有更好的识别能力;检测对象中存在有遮挡,RFAL YOLOv4模型也表现出更好的检测效果。

通过上述实验,充分的说明了RFAL YOLOv4模型有效的改善了漏检误检等问题。

4 结束语

考虑到传统的YOLOv4模型在检测小目标、有遮挡目标、以及在检测相似性目标时,识别能力较弱的情况。对传统模型进行优化,首先将传统YOLOv4网络中的ResNet网络更改为Res2Net,可以获取细小的特征。为了不影响检测模型的实时性,将组内残差网络的特征子集分为3个。其次在主干网络后融入注意力机制,有效的区分目标与背景信息,从而增加了模型的识别能力。最后对模型的损失进行改进,有效的检测遮挡目标。使用公开的VOC数据集对模型进行对比验证,在测试集上模型的检测精度达到了79.5%,在传统的检测模型上提高了5.5%,充分的证明RFAL YOLOv4模型具有更好的鲁棒性。

猜你喜欢

卷积损失图像
洪涝造成孟加拉损失25.4万吨大米
基于全卷积神经网络的猪背膘厚快速准确测定
基于图像处理与卷积神经网络的零件识别
基于深度卷积网络与空洞卷积融合的人群计数
两败俱伤
A、B两点漂流记
卷积神经网络概述
损失
名人语录的极简图像表达
一次函数图像与性质的重难点讲析