目前,基于深度学习的目标检测算法广泛用于各种物体的检测[1],例如,智能交通建设中的车辆检测。在主流的车辆目标检测方法中,以两阶段算法R-CNN[2]和一阶段算法YOLO[3]使用频率较高。
院老虎等[4]使用暗通道先验算法计算真实雾天图像的透射率,将其移植到原始图像中,并训练Faster R-CNN网络模型,进行遥感数据集飞机目标识别,但该方法网络模型较大,检测过程过于复杂;王启明等[5]改进了K-means聚类算法,生成了适用于检测车辆与行人的先验框,结合YOLOv3算法降低目标的漏检率和误检率,在一定程度上提升了准确率,但仍低于原始YOLOv5算法准确率;陈琼红等[6]将AOD-Net去雾算法与SSD目标检测算法相结合,实现了城市交通雾天环境下的车辆和行人检测,但是对于遮挡目标的检测效果有待提高;李北明等[7]针对红外目标检测模型YOLOv5s实时性差、计算复杂度高等问题,提出了一种基于特征蒸馏的改进Ghost-YOLOv5红外目标检测算法,在牺牲少量精确度的前提下提高了检测速度。
以上研究虽然提升了模型性能,但是依然存在一些弊端:两阶段算法虽然在检测精度上有了一定的提升,但仍然存在检测复杂度高和检测速度慢等缺点;一阶段算法只适用于一般场景,泛化能力较弱,对于远距离小目标依然存在精确率较低和漏检率较高的缺点,需要继续提升模型性能才能满足复杂场景下的检测要求。
无论是检测方法对数据集数量的要求,还是雾天目标检测的数据增强,都需要收集足够多的雾天场景的样本数量[8]。然而,收集大量真实雾天图像不仅耗时,而且不同场景下雾气图像浓度无法明确区分,导致采集的图像样本雾气浓度不均匀。
因此,本文提出了一种改进YOLOv5s的雾天车辆检测方法,该方法的创新点包括:①以VisDrone数据集为基础,通过大气散射模型生成2种不同浓度的数据集;②改进数据增强方式,预测端之前添加CBAM注意力机制模块来提高网络的特征提取能力;③优化非极大值抑制(non-maximum suppression, NMS)先验框。
针对收集真实雾天图片数据会产生雾气浓度无法明确区分且每张图片存在雾气浓度不一的问题,本文使用大气散射模型生成2种不同浓度雾气模拟数据集以扩充训练样本数量。
VisDrone数据集[9]包含各种交通场景:高速公路、十字路口、丁字路口等多种路口交通场景,白天车辆通行场景和夜间车辆通行场景。VisDrone数据集将交通场景分为12类,共6 600张车辆图像,本文将数据car(轿车)、truck(卡车)和bus(公共汽车)3类车型统一设置为标签car。
本文仅研究白天环境中雾天模拟图像的车辆目标检测,因此,在VisDrone数据集中随机选择1 000张白天场景图像来进行数据增强实验。
颗粒物在大气中的散射是造成雾霾的主要原因[10]。大气散射模型是McCartney在1975年依据Mie米氏散射理论提出来的[11],该模型将光学传感器接收到的光分为2部分:一部分是目标物体反射的光;另一部分是目标物体周围的环境光。最终的大气散射模型的数学表达式为
I(x)=J(x)t(x)+A(1-t(x))。
(1)
式中:I(x)为有雾图像;J(x)为无雾图像;t(x)为透射率;A为大气光值。A的计算方法:通过获取真实雾天图像的暗通道图像,统计图像像素,选择像素中最亮的部分,将其与原始雾天图像一一对应,选取最大灰度图的像素点值作为大气光值A。
大气透射率预估值计算式为
(2)
式中:w表示去雾水平的参数,本文w为0.95[11]。
收集一些不同程度的真实雾天图像进行雾气模拟操作,采用式(2)计算其透射率预估值假设空气中的介质是均匀的,则透射率t(x)为
t(x)=e-βd(x)。
(3)
式中:β为散射系数;d(x)为成像物体到成像设备之间的距离,km。β可以控制雾气的浓度,β值越大表示雾气浓度越大。通过和真实雾天场景样本对比,本文将轻雾图像的β值设置为0.15,浓雾图像的β值设置为0.25,然后调整无雾图像的全局大气光值。
通过式(1)生成轻雾图像和浓雾图像,如图1所示。
图1 雾气模拟图像
Figure 1 Fog simulation picture
本文采用大气散射模型(式(1))对1 000张VisDrone数据集原始图片进行雾气模拟,生成1 000张轻雾数据集(LightFogVisDrone)和1 000张浓雾数据集(ThickFogVisDrone),并收集真实雾天场景图片组成混合浓度数据集(MixFogData)。LabelImg是一个用Python编写的开源图像注释工具,GUI由QT框架设计。首先,使用LabelImg对数据集图像中的车辆进行人工标注,生成相应的xml格式文件;然后,将xml格式文件转化为txt格式文件进行实验。标注示例如图2所示。
图2 车辆数据集标注
Figure 2 Vehicle dataset annotation
YOLOv5s属于一阶段目标检测算法,其网络结构主要由4部分组成,分别是Input、Backbone、Neck和Prediction。Input采用Mosaic数据增强;Backbone主要采用CSP[12](cross stage partial)结构和Focus结构,CSP结构的作用是减少计算量的同时增强卷积神经网络学习能力,Focus结构的作用是对图片进行切片操作;Neck采用FPN[13](feature pyramid network)与PAN[14](path aggregation network)结合的结构,提取检测对象的位置特征,并且融合检测对象的语义特征;Prediction输出最终结果,包括检测对象的目标分数和边界框位置信息。整个YOLOv5s模型结构如图3所示。
图3 YOLOv5s网络结构图
Figure 3 YOLOv5s network structure
Mosaic数据增强原理:首先,任意选择4张图片进行随机裁剪;然后,将其按照一定的顺序拼接在一张图片上;最后,缩放到预先设置的输入尺寸传入模型。由于原始YOLOv5s的Mosaic数据增强是随机裁剪图片,图像中的车辆目标被裁剪的概率很高,从而使输入模型的样本只有背景;此外,原始图像尺寸大小也不同,随机裁剪后,会造成拼接后的图像大部分是灰色背景,大大影响模型的检测速度和精度,如图4(a)所示。因此,本文对Mosaic数据增强方式进行改进,将4张图片拼接改为9张图片拼接,然后根据拼接图片的矩形面积对灰色背景进行裁剪,改进后的Mosaic数据增强方式提高了检测目标不被裁剪的概率,从而提升模型检测性能,如图4(b)所示。
图4 Mosaic数据增强
Figure 4 Mosaic data enhancement
近年来,注意力机制模块被广泛应用于目标检测任务中,大大增强了模型注意力,让其更好地关注待检测目标的位置信息,以便提升模型的性能。CBAM[15](convolutional block attention mo-dule)注意力机制主要包括通道注意力模块CAM和空间注意力模块SAM,它们在进行特征提取时互不影响,可以直接插入到集成现存的网络架构中。在卷积神经网络中,CBAM主要用于特征图中检测目标特征信息的有效提取,从而提高目标检测准确性。CBAM结构如图5所示。本文在Prediction之前添加CBAM注意力机制,其目的是帮助模型更加准确地定位和识别目标。
图5 CBAM总体结构图
Figure 5 CBAM overall structure diagram
原始YOLOv5s在预测阶段使用NMS移除多余的检测框。通常情况下,这种方法的检测效果是不错的,但是由于雾天车辆目标较为集中,而且彼此之间存在相互遮挡,不同或者相似车辆的检测框重叠面积非常大、位置非常近,正确的检测框常常会被NMS错误移除,从而导致目标检测结果不准确。VisDrone数据集是由无人机取景拍摄的图像,图像中车辆往往较为集中,并且容易产生遮挡,本文使用DIoU作为NMS的评判标准。
IoU就是交集与并集之比,其定义如式(4)所示。DIoU的优势在于其考虑了2个边界框中心点之间的距离,如式(5)所示:
(4)
(5)
式中:A为目标的定位框;B为预测框;M为2个框的交集;N为并集;b为预测边界框;bgt为真实边界框;ρ2(·)为欧式距离;c为最小包围框的对角线长度。
DIoU-NMS的定义如式(6)所示:
(6)
式中:M为分数最高的预测框;Bi为是否被移除的预测框;si为分类分数;ε为NMS的阈值。DIoU-NMS不仅考虑了IoU,而且还判断M和Bi中心点的距离,如果预测框相互离得较远,则会被自动认为检测到其他目标,有效解决了目标相互遮挡造成的漏检问题,改进YOLOv5s模型结构如图6所示。
图6 改进的YOLOv5s结构图
Figure 6 Improved YOLOv5s structure diagram
本文实验使用Windows10操作系统,使用CUDA10.0和cuDNN7.64加速训练,编程语言为Python3.6,网络开发框架为Pytorch1.6。
将M-VisDrone数据集中的数据按照8∶1∶1的比例随机划分成训练集、验证集和测试集并进行原始YOLOv5s和改进YOLOv5s对比实验。权重衰减系数为0.000 5,初始学习率为0.01,batch size为16,训练轮数为200,训练图像和测试图像像素值均设置为640×640。
本文实验用来评估模型检测性能的指标分别是精确率Precision、召回率Recall和平均精确率mAP:
(7)
(8)
(9)
式中:TP为正检目标数量;FP为错检目标数量;FN为漏检目标数量;C表示类别个数;APi表示第i个类别的精确率,其中i为序号。在本实验中,设置IoU=0.5。
为了验证改进方法的可行性,将原始YOLOv5s算法和改进YOLOv5s算法分别在3种雾气数据集上进行实验分析,以平均精确率mAP@0.5(检测框与真实框的重叠区域超过50%时,就认为该检测框是正确的)作为评判标准,平均精确率结果如表1所示。由表1可知,与原始YOLOv5s相比,改进YOLOv5s在轻雾、浓雾和混合雾气状态下的平均精确率分别提高了16.14、16.16和15.05百分点,因此,改进YOLOv5s比原始YOLOv5s的平均精确率更高,检测性能更好。
表1 平均精确率结果
Table 1 Average accuracy results %
数据集mAP@0.5原始YOLOv5s改进YOLOv5sLightFogVisDrone62.1978.33ThickFogVisDrone60.3176.47MixFogData62.8777.92
将改进YOLOv5s和原始YOLOv5s在MixFogData数据集上训练相同的轮数后,收敛性结果如图7所示。随着训练轮数的增加,改进YOLOv5s的损失函数值Loss比原始YOLOv5s的Loss下降速度更快,说明改进YOLOv5s收敛性更好。
图7 损失函数变化曲线
Figure 7 Loss function curve
为了验证分析本文提出的改进方法对YOLOv5s模型检测性能的影响,本文在MixFogData数据集上设计了4组实验,除改进部分外,每组实验使用的训练参数不变,不同改进方法对模型检测性能的影响如表2所示,取所得指标的平均值作为衡量标准。由表2可知,原始YOLOv5s的精确率、召回率以及平均精确率分别为70.21%、59.47%和62.87%。以此为基准,基本每一处改进后各指标都会有一定程度的提升。
表2 消融实验结果
Table 2 Ablation experimental results
实验组别改进MosaicCBAMDIoU-NMSPrecision/%Recall/%mAP@0.5/%1×××70.2159.4762.872√××74.8366.5269.613√√×81.0172.4674.334√√√84.0575.5177.92
注:√表示在网络模型中使用了对应的改进方法;×表示在网络模型中未使用对应的改进方法。
图8为部分实验过程中的检测结果对比。
图8 原始YOLOv5s和改进YOLOv5s检测对比
Figure 8 Comparison between original YOLOv5s and improved YOLOv5s
由图8(a)和图8(d)可知,在遮挡情况下,原始YOLOv5s存在误检问题,将旁边树木遮挡的三轮车误检为car,而改进YOLOv5s却不存在这种情况。从图8(b)和图8(e)可以看出,原始YOLOv5s存在严重漏检问题,对于轻雾中远处的小目标车辆检测效果差,而改进YOLOv5s却很好地改善了这种情况,不仅检测出了原始YOLOv5s漏检的车辆目标,而且每个辆车目标的置信度得分也有所提高。通过观察图8(c)和图8(f)可以看出,改进YOLOv5s在浓雾复杂场景下,相比于原始YOLOv5s具有更强的抗干扰性,不仅能够准确识别出浓雾中的车辆,而且置信度得分也有所提升。结果表明,改进后的模型在复杂场景下具有更强的鲁棒性。
为了更进一步地证明改进算法的有效性,将改进YOLOv5s与Faster R-CNN、YOLOv4目标检测模型在MixFogData数据集上进行测试,对比结果如表3所示。由表3可知,改进YOLOv5s的检测效果明显优于两阶段模型Faster R-CNN和一阶段模型YOLOv4,进一步说明了本文算法对雾气场景下车辆检测的可行性。
表3 主流目标检测模型性能对比
Table 3 Performance comparison of mainstream target
detection models %
方法PrecisionRecallmAP@0.5Faster R-CNN72.6360.2563.97YOLOv468.3255.7460.06改进YOLOv5s84.0575.5177.92
本文针对现有算法无法满足雾天复杂场景下的车辆检测问题,提出了一种改进YOLOv5s和数据集增强的雾天车辆检测方法。与原始YOLOv5s相比,改进YOLOv5s在轻雾、浓雾和混合雾气状态下的平均精确率分别提高了16.14、16.16、和15.05百分点,证明了改进YOLOv5s对于雾天环境下车辆目标检测的有效性和实用性。在后续工作中,可以围绕轻量化来优化网络结构,以实现移动端实时检测雾天场景车辆的目标。
[1] 贺宇哲, 何宁, 张人, 等. 面向深度学习目标检测模型训练不平衡研究[J]. 计算机工程与应用, 2022, 58(5): 172-178.
HE Y Z, HE N, ZHANG R, et al. Research on imba-lanced training of deep learning target detection model[J]. Computer Engineering and Applications, 2022, 58(5): 172-178.
[2] REN S Q, HE K M, GIRSHICK R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149.
[3] REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: unified, real-time object detection[C]∥2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Piscataway: IEEE, 2016: 779-788.
[4] 院老虎, 翟柯嘉, 张泽鹏, 等. 基于模拟雾天遥感数据集的飞机目标检测研究[J]. 南京邮电大学学报(自然科学版), 2021, 41(3): 77-84.
YUAN L H, ZHAI K J, ZHANG Z P, et al. Aircraft target detection based on fog simulation remote sensing image dataset[J]. Journal of Nanjing University of Posts and Telecommunications (Natural Science Edition), 2021, 41(3): 77-84.
[5] 王启明,何梓林,张栋林,等.基于YOLOv3的雾天场景行人车辆检测方法研究 [J/OL]. 控制工程, 2022,4(2):1-8(2022-02-17)[2022-11-14].https:∥doi.org/10.14107/j.cnki.kzgc.20211118.
WANG Q M, HE Z L, ZHANG D L, et al. Research on pedestrian and vehicle detection method in foggy scene based on YOLOv3 [J/OL]. Control Engineering, 2022,4(2):1-8(2022-02-17)[2022-11-14]. https:∥doi.org/10.14107/j.cnki.kzgc.20211118.
[6] 陈琼红, 冀杰, 种一帆, 等. 基于AOD-Net和SSD的雾天车辆和行人检测[J]. 重庆理工大学学报(自然科学), 2021, 35(5): 108-117.
CHEN Q H, JI J, CHONG Y F, et al. Vehicle and pedestrian detection based on AOD-Net and SSD algorithm in hazy environment[J]. Journal of Chongqing University of Technology (Natural Science), 2021, 35(5): 108-117.
[7] 李北明, 金荣璐, 徐召飞, 等. 基于特征蒸馏的改进Ghost-YOLOv5红外目标检测算法[J]. 郑州大学学报(工学版), 2022, 43(1): 20-26.
LI B M, JIN R L, XU Z F, et al. An improved Ghost-YOLOv5 infrared target detection algorithm based on feature distillation[J]. Journal of Zhengzhou University (Engineering Science), 2022, 43(1): 20-26.
[8] ZHU P F, WEN L Y, DU D W, et al. Detection and tracking meet drones challenge[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2022, 44(11): 7380-7399.
[9] 梁增龑, 刘本永. 基于主分量分析和大气散射模型的彩色图像雾霾快速去除算法[J]. 计算机应用, 2015, 35(2): 531-534.
LIANG Z Y, LIU B Y. Fast algorithm for color image haze removal using principle component analysis and atmospheric scattering mode[J]. Journal of Computer Applications, 2015, 35(2): 531-534.
[10] 高隽, 褚擎天, 张旭东, 等. 结合光场深度估计和大气散射模型的图像去雾方法[J]. 光子学报, 2020, 49(7): 0710001.
GAO J, CHU Q T, ZHANG X D, et al. Image dehazing method based on light field depth estimation and atmospheric scattering model[J]. Acta Photonica Sinica, 2020, 49(7): 0710001.
[11] HE K M, SUN J, TANG X O. Single image haze removal using dark channel prior[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011, 33(12): 2341-2353.
[12] WANG C Y, MARK LIAO H Y, WU Y H, et al. CSPNet: a new backbone that can enhance learning capability of CNN[C]∥2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops (CVPRW). Piscataway: IEEE, 2020: 1571-1580.
[13] LIN T Y, DOLLR P, GIRSHICK R, et al. Feature py-ramid networks for object detection[C]∥2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Piscataway: IEEE, 2017: 936-944.
[14] LIU S, QI L, QIN H F, et al. Path aggregation network for instance segmentation[C]∥2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE, 2018: 8759-8768.
[15] WOO S, PARK J, LEE J Y, et al. CBAM: convolutional block attention module[M]∥Computer Vision-ECCV 2018. Cham: Springer International Publishing, 2018: 3-19.