基于改进的YOLOv5 算法道路目标检测分类技术研究
2023-02-23黄剑翔
黄剑翔,朱 硕
(1.南京信息工程大学电子信息与通信工程学院,江苏南京 210044;2.无锡学院电子信息工程学院,江苏 无锡 214000)
近年来,深度学习由于具备高准确度、快速检测等优点,已经逐步占据传统算法的主导地位[1],主要分为两种方法:一类是基于检测框和分类器的twostage 算法,如R-CNN[2]、Fast R-CNN[3]等,这系列算法精度相比于其他检测算法较高,但耗时较长,难以满足智慧交通系统所需的实时性;另一类是基于回归的one-stage 算法,如YOLO 系列和SSD[4]等,相比于two-stage 算法,这类算法的推理速度快,可满足智慧交通系统的实时性要求。
该文采用one-stage 算法YOLOv5 网络。对其IOU 损失函数、数据处理算法进行改进,将改进后的网络与原有网络进行检测对比,对比结果显示改进后的网络相比原有网络的检测效果有明显的提升,具有更广泛的应用价值。
1 YOLO网络模型
2020 年5 月30 号,Ultralytics LLC 公司提出 一种新的算法YOLOv5,YOLOv5 的FPS 达到140,速度快的时候仅需0.007 s 便可完成图像的推理,这一点便满足了实际情况下实时性的要求。相比之前的YOLO 系 列,YOLOv5 网络结 构更小。YOLOv5 在 数据处理方面不但采取了与YOLOv4 相同的mosaic 数据增强算法,同时在主干网络部分进行优化,使得网络能够满足对小目标的检测要求。
YOLOv5[5]检测网络包括四种不同的结构:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。这四种网络结构与YOLOv3 和YOLOv4 不同,YOLOv5 系列均以yaml 格式来呈现,而YOLOv3、YOLOv4 则是以cfg 格式承载网络;YOLOv5 的四种网络的宽度系数和深度系数各不相同,因此在算法性能上四种结构也有所区别,部分主要指标如表1 所示。
表1 四种网络结构的参数
其中,YOLOv5s 的权重文件和YOLOv4 相比,仅仅占YOLOv4 权重文件的1/9,是四种结构中最小的一个。相比其他三种网络结构,YOLOv5x 结构纵深最大,网络权重文件也最大,但其AP精度也是四种网络结构中最高的;考虑到消耗时间及网络大小二者的利弊,权衡之下该文选用YOLOv5x作为基础网络。
YOLOv5 神经网络结构[6]主要由三大模块组成,分别为Backbone、Neck、Head 模块,如图1 所示。
图1 YOLOv5网络结构
1)Backbone[7(]主干网络):是YOLOv5 网络的主要组成部分,是一个小型卷积神经网络[8],能用来形成图像特征。Backbone 主要包括Focus、CSP、SPP[9]以及relu 激活函数。其中,Focus 模块用于对input 进行切片操作,如图2 所示。
图2 Focus切片操作
图2 中,左边是一个4×4×1 的图片,经过Focus切片操作之后,变成了右边所示的2×2×4 结构。以YOLOv5x 模型为例,将[b,3,640,640]的图像输入网络中,经过Focus 切片处理之后,得到[b,12,320,320]的特征图,经过32 个1×1×12 的卷积核的卷积操作,得到[b,32,320,320]的特征图。其中,b表示batch,即每次输入的图片数,3 和12 表示图片的通道数,640 和320 表示图片的长、宽。经过Focus 模块处理,减少了计算量,为模型大大节省了计算机资源和时间资源;同时还不会导致重要信息的丢失,从而保留图片下采样信息,为后面的特征提取部分提供了便利。
2)Neck 模块:处于Backbone 和Head 之间的模块,Neck 模块存在的目的就是更好地利用Backbone提取出的特征,该模块分为FPN[10]结构和PAN 结构。FPN 结构流程自上向下,经过upsample 和concat将上层特征图和底层特征图融合得到待预测的新特征图。图中picture5 位置处获得的特征图通过upsample 得到与picture4 特征图大小相同的上采样层,再通过concat 融合,得到新的待预测特征图。FPN 层后有一个PAN 层,该层操作方向与FPN 恰恰相反,它是一个自底向上的特征金字塔。FPN 层自顶向下,PAN 自底向上,二者结合进行参数聚合。
3)Head(输出层):Head 模块用来提取输出,利用提取的特征做出预测。进行train 时考虑到代价函数中的锚框机制以及预测框筛选的修改,YOLOv5 的输出层采用GIOU 作为损失函数,通过非极大值抑制(NMS)[10]来筛选目标框。
训练时预测值与真实值之间往往存在着误差,主要用损失函数来评价二者之间的差异程度,通过损失函数可衡量一个模型的好与坏,从而评价一个模型的性能,因此损失函数的选择至关重要。最为常见的损失函数为IOU_LOSS。
如图3 所示,其中A与B分别为两个互有重合的矩形框,M为A和B的交集,N表示A与B两个集合的并集,IOU[11]即是交集与并集之比,IOU_LOSS 即是N-M与N之比,二者的定义如下:
图3 IOU示意图
训练的目的就是降低IOU_LOSS 的值,随着该值的减小,说明模型效果在增加。但当两个框A、B不相交时,则无法预测两个框之间的距离。
为了解决这个问题,在YOLOv5 的预测中,利用GIOU_LOSS[11]作为物体的边界框的损失函数。
如图4 所示,N为图3 中A、B的并集,N+2C表示包住两个框的最小的矩形面积,GIOU 及GIOU_LOSS的定义如下:
图4 GIOU示意图
先计算出两个并集及IOU,再计算出两个框的最小包合矩形面积,然后计算最小包合矩形面积中N的补集所占面积的比重,最后用IOU 减去该比重得到GIOU,计算GIOU_LOSS 只需用1 减去GIOU。
2 基于YOLOv5x网络结构的优化
2.1 损失函数的优化
该文所使用的YOLOv5 网络默认选择上文所说的GIOU 损失函数;相比IOU,GIOU 不仅关注重叠区域,同时也关注非重合区域,能很好地反映两者的重合度,因此能解决IOU 中两个框没有相交这种情况下没有梯度回传、无法进行学习的问题。
当遇到两个框A、B彼此存在包含关系,如图5(a)所示,GIOU_LOSS 几乎会退化成IOU_LOSS,这导致IOU_LOSS 问题会再次出现;此外,在这种情况之下GIOU_LOSS 使得回归速度很慢,也造成时间资源的浪费。
GIOU 的工作原理在于先通过增加检测框的大小使其与目标框有重叠,后利用IOU_LOSS 项使两框重合面积最大。与GIOU 相比,该文选择的CIOU[11]不仅具备GIOU 的优点,同时还将中心点之间的欧式距离、高宽比考虑在内,如图5(b)所示。
图5 CIOU及GIOU对比图
图中c代表包含A、B的最小的矩形框的对角线长度(此处B包含A),d表示矩形框A和矩形框B的两个中心点之间的距离,CIOU_LOSS 可定义为:
其中,υ用来衡量宽高比的一致性,α是正权衡参数,不必参与求导;ωgt和hgt表示目标的真实宽、高;ω和h表示预测目标框的宽、高。
2.2 训练数据预处理
在大多数情况下,设备采集得到的数据集不能直接用于网络的训练。倘若所获得的数据集数量不足,将其直接用于训练,得到的结果并不具有代表性;再者,获得的数据集尺寸大小[12]不满足网络输入的要求。
因此,在进行训练前须对数据集进行预处理,处理方法主要包括数据增强与标签平滑处理。
数据增强的目的:一方面增加数据集的数量借此来提升模型的泛化性能,另一方面可人为给数据集增加影响模型分辨的噪声,借此来提高模型的鲁棒性。典型的数据增强方法包括翻转、旋转、平移、缩放、裁剪、添加噪声、修改颜色、修改对比度等。对原来的数据集采用上面所述的数据增强方法,可获得大量新的训练数据。
该文在选用传统数据增强的方法之外,同时加入马赛克拼接法(mosaic)[12],如图6 所示。
图6 mosaic数据增强
从左边的四张图中分别提取了一部分打乱进行拼接,得到右边的组合图,然后将拼接的图作为新的数据进行训练。
人为标注时,很多时候会产生错误标注的问题,这种问题会对实验结果产生很大的影响。标签平滑处理(Label Smoothing)是常用于解决这个问题的办法。训练时若是选择使用one-hot 标签来计算交叉熵损失,则只计算了标签为1 位置的损失,并没有把标签为0 位置的损失算在内,最终导致在训练集上能得到不错的效果,预测过程中因为此时数据来源不是训练集,所以相比之下预测效果较差。因此,对数据集采用标签平滑处理是必要的。
该文实验过程中,选择使用二元交叉熵标签平滑(smooth_BCE),其公式为:
式中,y为数据标签的独热编码,一般表示一个向量;ε为平滑因子。经过平滑处理,将训练集中数据的标签无论正确与否都考虑到样本损失函数的计算范畴,导致损失增大、模型的学习能力提高。
3 实验流程设计
针对上述内容,该文拟通过实验对上述问题进行验证,实验流程如图7 所示。
图7 实验流程
将图片输入数据预处理模块对图片进行处理,处理之后的图片输入YOLO 网络进行训练,在反复的前向、后向传播之后,训练完毕得到满足要求的权重模型。进行检测时,将图片输入到训练获得的模型中,得到检测结果图。
4 实 验
4.1 数据集的制作
该文数据集[13]的制作过程主要分为以下两步:数据集的采集、数据集的标注。因为数据的预处理步骤已经嵌入到算法中,所以不予考虑这一步。
数据采集工作是在江苏集萃深度感知研究所的雷视一体机上完成的,利用该设备对路口监控视频截图,获得需要的图片数据,目的是检测识别出四种道路目标,分别为大型车、小型机动车、非机动车及行人。
在进行数据标注工作时,选用vott软件对雷视一体机获得的图片数据进行标注,分为四类识别目标。
经过反复筛选跟检查,从标记出的4 000 张图片中选出了3 600 张符合要求的图片组成训练集,其中包括不同路口,在白天、夜晚,有无灯光,晴、雨天气等不同情况下的图片样本,以此扩大数据来源,确保训练获得模型[14]的可信度。此外,再提取300 张未标记的图片作为测试集。
4.2 实验设定与训练
该实验的环境如表2 所示。
表2 实验环境配置
实验训练参数设置如下:初始学习率设置为0.01,SGD 动量因子为0.937,权重衰减系数为0.000 5,最大迭代次数设为200 次,batch-size 设为2,过大会导致显卡超负荷工作,图片大小为640 pixel×640 pixel。
为了进一步体现该文改进模型的优势,在相同数据集的前提下,原始YOLOv5网络和改进的YOLOv5网络的损失函数曲线如图8 所示。
图8 改进前后损失函数
由图8 可以看出,改进前的网络最终损失值并未达到0.02,而改进后网络在第200 个epoch 时损失值已经达到了0.02,函数收敛较为理想,且改进的YOLOv5 网络收敛速度明显比原始的YOLOv5 网络更快,而且也更加稳定。
改进前和改进后两个网络的mAP(mean Average Precision)变化曲线如图9 所示。
图9 改进前后mAP对比
从图中可以看出,改进后网络的mAP 值稳定在74.32%左右,比改进前提高了近2.76%。
训练完毕,将最终获得的权重参数使用到目标样本的检测推理中进行对比,如图10 所示。
图10 改进前后两个网络的目标识别效果
改进后网络的识别率及准确率明显比改进前高了很多,图中单个车辆的检测分数相比改进前的检测结果都有了一定的提高;改进前的模型检测时无法检测出远处的公交车和轿车,但是经过改进之后,模型能够轻松检测出远处的车辆并做出标记。
4.3 结果分析
在交并比(IOU)阈值为0.5的条件下,原始YOLOv5x网络的mAP 值为74.81%,改进YOLOv5x 的mAP值为77.57%。四个类别的AP值如表3所示。
表3 改进前后网络AP值对比
YOLOv5x 改进后,各类别目标的AP 值都得到了一定程度的提升。这主要得益于改进算法对排队遮挡的车辆以及远处目标的检测效果有所提高。原本对行人检测效果较低,经常将路边树干、指示灯误认为行人,针对这一现象,改进后的网络对行人的AP值提升了2.110%。相比其他目标,大型车的AP 值在两次检测中都很低,不过在优化后,提升了约2.990%。导致大型车AP 如此低的原因可能是在数据集中,大型车的数量比较少,这一点在后期进一步优化中可以重点处理。
如表4 所示,此处的YOLOv4 是原始YOLOv4 网络经过多次实验后优化来的模型,相比原始YOLOv5网络模型,mAP 略高,但是与该文优化后的YOLOv5网络模型相比,mAP 略低。
表4 实验结果对比
5 结束语
根据目前道路目标检测过程中存在的一系列问题,提出以深度学习[15]为基础的道路目标检测识别方法[16-18]。主要采用mosaic 数据增强和标签平滑处理的方式来扩充数据集,建立了道路目标识别数据集。以原始YOLOv5 为基础,构建改进的YOLOv5 网络。使用训练集对改进的检测网络结构进行训练,经过40 个训练epoch 之后代价函数趋于平稳。改进后的模型最终mAP 达到77.57%,因为训练数据集中数据的多样性,确保该模型具有很好的适用性。但是该文考虑的识别目标只包括四种类型,对具体的目标没有进行细分,如非机动车也可分为自行车、电动车等,后续将对数据集做进一步完善。