APP下载

基于改进YOLOv5的交通目标检测算法

2024-09-04周琛张兰春

电脑知识与技术 2024年20期

关键词:YOLOv5;注意力机制;目标检测

0 引言

随着时代和经济的飞速发展,汽车保有量和出行人数不断上涨。许多问题也由此产生,如汽车不按规定停放和交通拥堵。研究道路交通目标检测方法对提高相关部门管理效率具有重要作用。作为智能交通系统[1]中的关键技术,道路交通目标检测技术对智能交通系统的发展起到举足轻重的作用。道路交通目标检测[2]是通过计算机的快速计算能力,对真实场景图像进行分析,对车辆、行人等目标进行识别和定位。现如今深度学习在固定场景的目标检测任务中已经得到普遍运用并且取得了不错的效果,但在一些特定任务中结果不是很理想。尤其是在道路交通检测中,实际场景复杂多变,背景中存在不同程度的噪声,因为目标距离远所以被检测图像的尺寸过小。雨天或大雾等天气造成的拍摄视野模糊都会影响检测精度。

近年来卷积神经网络[3]发展迅速,深度学习也逐渐被学者运用到目标检测算法中。现如今人们把这些算法分为两类,一类是两阶段目标检测算法:该算法先产生候选区域再得到目标的分类及位置信息。代表算法有R-CNN[4]系列,该类算法精度较高但在速度方面有所欠缺。另一类是一阶段[5]目标检测算法:该算法在图像中提取特征得到物体的分类结果和位置,代表算法有SSD[6]和YOLO[7]系列。

其中, YOLO系列算法已经发展得很成熟,并且被不断完善。但是由于小目标的特性像素占比少,有效信息难以被准确提取。因此其在交通小目标检测[8]中的表现仍有缺陷,易出现错检、漏检的情况。本文在YOLOV5模型基础上进行改进并运用于交通目标检测研究,在模型中加入CBAM[9]注意力机制模块以增强特征提取能力,并将原始的三层检测增加为四层,提升对小目标的检测效果,提升了对交通目标检测的精度。

1 原始YOLOv5算法

YOLOv5是由YOLOv4改进而来,在模型结构上YOLOv4 采用的是Darknet 结构,拥有更多的层和参数,而YOLOv5则采用了新的CSPNet结构,减少了计算量和参数量。YOLOv5还采用了数据增强策略,在训练中随机改变图像大小、旋转角度和亮度等参数增加数据的多样性,提高了模型的泛化能力。因此YO⁃LOv5不论是检测速度还是精度都有一定的提升且更为简洁。其网络结构由Input(输入)、Backbone(骨干网络)、Neck(颈部)、Prediction(检测头)四个部分组成,其模型结构如图1所示。

其中Input 由Mosaic 数据增强[10]、自适应锚框计算和自适应图片缩放三部分组成。其中,Mosaic 可以丰富数据集。通过把四幅图像随机拼接成一张新的图片的方式来做数据增强,并将新的图片让网络去学习。自适应锚框通过Kmeans计算不同数据集对应的锚框大小;由于输入的图像尺寸可能不同,自适应图片缩放就是将图像缩放到相同大小,本文输入图像尺寸设置为640×640 像素。模型中的Backbone部分包含Focus结构和特征提取结构,Focus 结构对图像进行切片操作,切片后图像的宽和高缩减至原来的一半,通道数则变为原来的4倍。Backbone 主要提取输入特征并获得不同大小的特征图,其包含C3模块、Conv模块和spp模块。而C3模块由Conv块构成,通过增加的网络深度,提高了感受野,提高了特征提取的能力,减少了计算量。Conv模块由卷积层、BN层和激活函数组成。SPP模块先通过Conv模块提取特征,再经过三个并行的最大池化,与原特征图用concat拼接。其中三个最大池化的卷积核分别为5×5、9×9、13×13,最后由一个Conv 模块来调整输出尺寸。Neck通过FPN和PAN来融合特征,其中FPN是由上而下,通过上采样融合高层特征和低层特征;PAN则是由下而上,通过下采样融合低层特征和高层特征。FPN与PAN结构结合可以对图像进行多尺度融合。Prediction包括边界框损失和加权NMS。NMS 算法可以消除多余(交叉重复)的窗口,输出预测阶段最准确的目标框。

2 算法模型改进

为改善道路交通小目标检测中存在的难检,漏检的现状,本文对YOLOv5算法提出两点改进。增加一个小目标检测层,并且将CBAM注意力机制模块插入C3模块前,从而使算法能够序列化地在通道和空间两个维度产生注意力特征图信息。聚焦图像重要信息,抑制不必要的区域响应。算法经过以上两点改进后的模型结构见图2。

2.1增加小目标检测层

YOLOv5在多尺度特征融合方面采用了特殊的网络结构,以特征金字塔为基础,对主干网络分别采用8 倍下采样得到P3(80×80) 特征层,16倍下采样得到P4(40×40) 特征层,32倍下采样得到P5(20×20) 特征层。随着下采样次数增加,其感受野范围也随之扩大,导致不同感受野之间重叠区域越来越多,使得提取的特征也因此缺乏细粒度。某些浅层特征图才具有的空间位置信息被忽略,小目标检测中的定位和精度也因此效果不佳。所以只有不断创新将不同层次特征图的信息进行融合得到的特征图才可以同时具有丰富的空间信息和较强的语义信息,使其能够改善小目标检测中存在的问题。因此,为改善YOLOv5算法中由于下采样导致的P3、P4、P5特征层对应特征图中包含的像素信息过少的问题,本文设计在原结构中增加一个4倍下采样的特征层P2,该特征层对应的特征图尺度为160×160,P2特征层对应的检测头感受野更小、提取到的图像信息更丰富、位置信息更精确。

2.2 插入注意力机制

注意力机制对输入数据进行加权处理,可以更快地提取权重较高的数据。在交通小目标的检测中引入注意力机制,可以使模型关注图像局部的重要信息。因此,为更好地提取特征,本文在每个C3模块前分别插入一个CBAM注意力机制模块,使网络能够高效地分析复杂场景信息,动态选择图像的输入信息,更好地关注图像中的某些局部信息,减少提取特征的损失,提高网络的表达能力和检测精度。CBAM可以和任何CNN框架集成,其结构如图3所示,CBAM是一种用于前馈卷积神经网络的简单而有效的注意模块,输入的特征层先后经过通道注意力模块和空间注意力模块。

CBAM通道注意力机制模块原理如图4所示。通道注意力模块可以选出权重较高的特征通道,忽略权重较低的无关通道。CBAM的通道注意力模块的作用原理是对输入的特征图进行两次最大池化操作,分别是最大池化和平均池化。而且同时用两种池化比只使用一种池化的效果更好,得到了重要的空间特征信息后。再经过MLP模块,MLP包括输入层,输出层和隐藏层,其对输出的两条分支进行加和处理,再对加和处理后的输出用sigmod函数对其激活,经过以上处理后最后能够得到特征层不同通道的一个权重系数Mc。其公式总结如下:

将权重系数Mc 与特征F 相乘加权,得到新特征F',并将其作为空间注意力模块(图5) 的输入。经过空间注意力模块后得到空间的权重系数Ms,将其与输入的新特征F'相乘后能够实现特征在通道维度上的压缩。对于输入特征F',先沿着每一个特征点的通道方向应用全局最大池化和全局平均池化,并且按通道拼接,用尺寸为7×7的卷积核卷积,最后用sigmod函数对其进行激活得到权重系数Ms。整个过程的表达式如下:

3 试验及分析

3.1 实验环境

本文的实验环境基于64GB内存,Intel Corev In⁃tel Core i9-10900F 处理器,12GB 的FEGORCE GTX3060Ti独立显卡,操作系统为Windows10,运行环境为Python3.9,深度学习框架为Pytorch。

3.2 数据集

在不同场景下定义小目标的标准不尽相同,但现有的定义方式按学术上可主要分为两类。

一种是根据相对尺度来定义其是否为小目标,即目标面积与图像面积的比例。如果目标边界框面积与图像面积[11]的比值的中位数在0.08%~0.58%,则将其定义为小目标。

另一种是根据绝对尺度对其定义,即根据目标的绝对像素大小来定义其是否为小目标。目标检测领域通用的MS COCO[12]数据集将分辨率小于32×32像素的目标定义为小目标。而在DOTA 数据集与WIDER FACE数据集中则将小目标定义为像素值范围在[10,50]之间的目标。根据不同场景也可以对小目标进行不同的定义[13],在行人识别数据集CityPer⁃sons中,将小目标定义为了高度小于75像素的目标。

本文用KITTI[14]数据集进行试验,该数据集中部分图片如图6 所示。该数据集中图像像素大小为1 224×370,由市区、乡村以及高速公路等约50个现实场景拍摄而来。其中的每幅图片中的车辆及行人数量最多分别为15和30,且大部分目标的像素不超过60×25或45×30,可将其视为小目标。数据集包含八个类别,分别为Van(秒包车)、Car(汽车)、Truck(卡车)、CycList(骑自行车的人)、Pedestrain(行人)、Pe⁃destrain(sitting)(坐车的人)、Tram(有轨电车)以及Misc (其他目标),实验时将目标标注不清晰且数量较少的CycList和Misc删除,并将Pedestrain、Pedestrain(sitting) 两个类别合并为Pedestrain。实验时从中选取7 500 张图片,其中6 000张作为训练集数据,1 500张作为测试集数据,训练集和测试集比例为4比1。

3.3评价标准

本文主要以AP(平均精度)、mAP(平均精度均值)来作为实验结果的评价指标。对本文选取的评价指标作如下说明。

1) 平均精度AP 定义为每个类别精确率-召回率曲线的积分值,取值范围为0~1。

2) 平均精度均值mAP 为各类别AP 的均值。AP衡量的是训练好的模型在每个类别上的好坏,而mAP为衡量的则是模型在所有类别上的好坏。精确率定义为实际正样本且预测结果为正的样本数与预测结果为正的样本数的比值,召回率定义为实际正样本且预测结果为正的样本数与实际的正样本数的比值。公式总结如下:

式中:N 代表表示样本类别的总数,TP 代表实际是正的样本并且预测结果为正的样本数,FP 代表实际为的负样本但是预测结果为正的样本数,FN 则代表实际为正的样本但是预测结果为负的样本数。

3.4 实验结果

3.4.1 本文算法检测结果

YOLOv5算法和改进的YOLOv5算法使用上述训练集训练得到权重后,用测试集在改进前后的模型上进行实验,其结果如表1所示。

由表1可知改进后 YOLOv5 算法在mAP方面提高了1.4%,在AP 值方面对Pedestrain 类别的提升最大,且与其他类别目标相比Pedestrain尺寸较小,说明该算法在小目标检测任务中表现更好。

在验证集中选取四组图片分别在YOLOv5算法以及改进的YOLOv5 算法上进行实验,实验结果如图7所示。

从图7可看出改进的YOLOv5算法模型漏检的情况得到减少,某些尺寸较小的目标在改进后的算法中被检出。

3.4.2 加入不同模块对检测性能的提升

将上文提出的几点改进模块依次融合到原YO⁃LOv5算法中并进行实验,其结果如表2所示。由表2 可知在原始YOLOv5网络模型中增加一个4倍下采样的小目标检测层后,检测的结果在mAP方面提升了0.6%,在此基础上同时插入CBAM 意力机制模块,mAP值再次提升0.8%。由此可知加入上述模块后,增强了模型对小目标的检测性能。

3.5 与其他算法的对比

将本文改进的算法与其他检测算法在平均精度均值和检测速度方面进行对比。本文选择的是SSD、YOLOv3、YOLOv4、Fast R-CNN、Faster R-CNN、Re⁃fineDet、Vehicle-YOLO和Refined YOLOv4算法,对比结果见下表3。

从表3可以看出,将原YOLOv5算法改进后,检测结果的mAP值达到了96.3%,和表中其他目标检测算法相比在一定程度上有所提升。综上可知,本文算法在使检测的平均精度值更高的同时保证了较高检测速度,性能更好,达到了预期的效果。

4 结束语

本文针对复杂场景下交通小目标其像素占比少,目标尺寸小易重叠等原因导致的漏检、误检,检测精度低等现象,在 YOLOv5网络模型上进行改进。首先增加一个四层检测头以增加浅层特征图,使其更有利于远距离交通小目标的检测与识别,在此基础上插入CBAM注意力机制模块,以增强模型在通道和空间两个维度的特征提取能力。将改进前后的模型在本文处理后的数据集上做对比实验,增加了两个模块后的YOLOv5算法在交通小目标检测中的效果更好,平均精度更高。但是由于增加了小目标检测模块的缘故,改进后的模型在速度方面比原YOLOv5算法稍慢了3.4FPS,但考虑到原YOLOv5算法在速度上的优势,改进后的算法在速度方面的少许下降可以忽略不计,并不会对模型的整体性能造成太大影响。将本文所提改进的YOLOv5 算法与SSD、Faster R-CNN、Refine⁃Det、Vehicle-YOLO等目标检测算法对比验证,从实验结果中可以看出改进的YOLOv5算法不仅提高了检测精度并且保证了检测速度。计划在后续的研究工作中保证检测速度不受太大影响的前提下继续提高模型的检测精度并尽可能减少计算量,使模型轻量化。