杨晨
(太原师范学院,山西 晋中030619)
十字路口是交通事故高发区,一旦发生事故,出警处理不及时会造成路口拥堵,从而降低通行效率。交通事故识别主要依赖于车辆异常行为的检测与判定。车辆异常行为可以通过物体检测和目标跟踪算法,对画面中存在的每个物体的运动轨迹进行检测,从而实现细化到目标和具体行为的检测。以往的目标检测主要依赖人工手段,如车辆巡逻、目击者报警或人为观测。这些方法虽然简单直接,但需要占用大量的时间、人力和物力。此外,雾天环境下,空气中悬浮粒子对光线的散射,会导致监控视频画面模糊,色彩失真以及影像后期处理难的问题。因此,在雾天环境下,对车辆实现准确且快速检测具有重要的实践意义。
2012年,AlexNet[1]在ImageNet视觉挑战赛中一举夺冠,卷积神经网络重回大众视野。在大量的车辆检测算法中,基于深度学习的方法被广泛使用。深度卷积神经网络能自主完成对目标特征的学习,提取关键信息,从而具有更强的判别能力和泛化能力。深度卷积神经网络目前主要存在两类主流算法:一类是将region proposal与CNN网络结合起来所构建的基于分类的R-CNN[2]系列目标检测框架(two stage);另一类是将目标检测转换为回归问题的算法(one stage),如YOLO(You Only Look Once)[3]系列和SSD(Single Shot Multibox Detector)[4]算法。文献[13]提出一种基于YOLOv3的深度学习目标检测算法YOLOv3-fass,该方法相较于YOLOv3更高效,更准确。文献[14]引入soft-NMS,提出一种解决车辆重叠导致识别精度低的改进YOLOv3算法,能够比较好的解决雾天车辆识别精度低的问题,但检测网络速度较慢;文献[15]对有30层卷积神经网络的Darknet53骨架网络构架进行改进,在减少网络成本的同时提高了检测精度,但该网络现阶段的速度还不能满足需求;文献[16]构建了一种轻量级的YOLOv3-Mobilenetv2检测网络,不仅减少了模型参数量,而且速度也得到明显提升,但检测精度相较于YOLOv4依旧偏低。
因此,为提高对雾天环境下车辆识别的检测性能,本文对YOLOv4算法进行改进,并基于改进算法对雾天环境下的车辆检测进行研究。首先,运用图像去雾算法对采集到的视频画面进行去雾预处理;其次,在原始YOLOv4基础上,减少模型卷积层数使模型轻量化,加快模型预测速度。最后,通过实验验证改进后的YOLOv4算法的检测效果,并将不同图像去雾算法与YOLOv4和本文改进的YOLOv4进行组合,并对其性能进行对比。
图2 SSR去雾算法效果图
图3 MSR去雾算法效果图
图4 MSRCR去雾算法效果图
图像去雾一直是计算机视觉的热点问题,现有的去雾算法主要分为两类,一类是以Kaiming He[5]在2009年CVPR提出的基于暗通道处理的方法为代表的物理模型复原方法;另一类是基于图像处理的增强方法。物理模型复原方法比图像增强方法处理的时间要长,所以本文选择使用图像增强方法进行去雾处理。
在图像增强算法中,常用的去雾算法包括:SSR(单尺度Retinex)算法、MSR(多尺度Retinex)算法以及MSRCR(彩色恢复多尺度)算法。利用SSR算法、MSR算法以及MSRCR算法分别对RESIDE数据集中包含交通场景的300张图片进行去雾处理的实验效果如图1~4所示,结果显示,去雾效果MSRCR算法最佳。
图1 数据集原图
YOLOv4算法原理:
YOLOv4属于目标检测one stage算法。它由俄罗斯独立研究员Alexey Bochkovskiy[6]在YOLO[3]、YOLOv2[7]、YOLOv3[8]的 基础上,通过对数据处理、主干网络、激活函数以及损失函数改进优化而来。其基本思想是把图片划分成S*S的网格,每个网格针对不同的区域独立进行检测。如果待检测目标中心落入某个网格,则由该网格负责检测该目标。
YOLOv4网络结构主要由四部分组成,分别是Input(输入端)、BackBone(主干网络)、Neck以及Prediction(预测部分)。YOLOv4网络结构如图5所示。
图5显示,YOLOv4算法的主干网络由CSPDarknet53、Mish激活函数以及Dropblock组成三部分组成。下采样从R1-R5,一共经历5次。在目标检测阶段,为了更好的提取融合特征,在BackBone和预测部分之间通常需要插入一些结构,这些结构被称为Neck。Neck包括SPP(空间金字塔池化)和FPN(特征金字塔)+PANet(路径聚合网络)两种结构。SPP结构使用1*1、5*5、9*9以及13*13四种不同尺度大小的池化核对特征层R5进行三次卷积后的结果进行最大池化,可以有效增加主干特征的接收范围,分离出显著的上下文特征。FPN是特征金字塔,增加极小的计算量,处理好物体检测中的多尺度变化问题。
图5 YOLOv4网络结构图
PANet结构是源于2018年CVPR图像分割领域PANet[9]的创新点,因为它能准确地保存空间信息,有助于正确定位像素点,形成mask。它通过保留空间信息来增强实例分割过程。经过PANet结构后,YOLOv4网络将进行大小为3*3和1*1的两次卷积操作,判别三个特征层的先验框,判断框内是否有目标和目标分类结果,之后进行非极大值抑制,对先验框调整得出最终结果。
YOLOv4中提出了Bag of freebies的概念[10],用于构建只改变训练策略或只增加训练成本使检测器并获得更高精度但不增加推理成本的方法。YOLOv4的输入端通常采用608*608尺寸,但在实际使用时,由于很多数据集中的图片宽高不一,所以通常需要把原始图片统一缩放到一个标准尺寸,然后再送入检测网络中。之前对图片进行缩放时会填充部分黑边,使之达到检测网络输入尺寸。如果黑边填充过多,会造成信息冗余,影响网络推理速度。
为增强YOLOv4算法的鲁棒性以及面对复杂数据集处理的能力,本文在YOLOv4算法基础上,引入了自适应图片缩放方法。
首先,用预计缩放尺寸分别除以原始图片长宽得到两个缩放比例系数,如式(1)所示:
其中,n表示预计缩放尺寸的长和宽,L,W表示原始图片的长度;ρL,ρW表示预计缩放长度除以原始长度、宽度得到的缩放比例系数。
其次,选择较小的比例系数分别和原始图片的长、宽相乘得到缩放后的尺寸,如式(2)所示:
其中ρ表示较小的比例系数,L1,W1分别为缩放后的尺寸。
用图片原始长宽同上一步得到的缩放尺寸作差,得出需要填充黑边数值,如式(3)所示:
其中,X表示预计尺寸减去式(3)中得到缩放后尺寸,Y表示两端需要填充的黑边数量,32表示2的5次方,因为YOLOv4共有5次下采样。
Alexey Bochkovskiy等人在YOLOv4中提出了CSPDarknet53结构,该结构是在YOLOv3主干网络Darknet53的基础上,借鉴2019年CSPNet[11]的经验产生的一种主干网络结构。它能够输出三个不同大小的特征层,即,特征层R3和R4分别经过一次1*1的卷积操作后进入PANet结构,然后进行特征融合;特征层R5则经过1*1、3*3以及1*1三次卷积后进入SPP结构进行最大池化。这些操作可以提取到更丰富的特征,但是对于道路车辆检测,CSPDarknet53网络便显得有些过于复杂,因为过多的参数会导致训练时间变长,进而减慢检测速度,甚至导致模型过拟合。
为了提高道路车辆目标检测速度,从保持现有精度、简化网络结构角度出发,本文借鉴CSPDarknet53,提出一种参数数量较少、运算复杂度较低的特征提取网络。
首先,第一个卷积层用32个大小为3*3的滤波器对608*608的输入图像进行操作,其次将先前卷积层的输出作为输入使用64个1*1的滤波器对其进行操作,并实施下采样;之后简化网络结构,将主干网络中原有CSP结构中位于2,4,6,8,16下采样后的残差结构从原来的1,2,8,8,4个简化为1,2,5,5,2个,并把所有卷积层通道数变为原来的一半。网络复杂度的降低,减少了模型的参数量,在提高检测速度的同时,还可以避免算法过拟合问题。
CSPDarknet53网络结构采用下采样结构进行下采样,这种采样在特征图向后传播的途径中会损失大量的特征信息。为此,本文在原有主干网络基础上添加了一条下采样支路,该支路上的下采样模块和网络中相同尺度模块具有相同的通道数量。改进后的网络如图6所示。
图6 改进后的网络结构图
实验使用UA-DETRAC车辆识别数据集对YOLOv4改进算法的精度和速度进行评估。实验基于CSPDarknet53神经网络框架实现。实验平台配置为:操作系统:Windows 10;CPU:AMD Ryzen 7 3700X@3.59 GHz八核处理器;32G内存;GPU:NVIDIA GeForce RTX 3080 11G显存;深度学习框架:PyTorch;编程语言:Python。
UA-DETRAC车辆识别数据集[12]是一个具有挑战性的现实世界多目标检测和多目标跟踪的基准数据集。UA-DETRAC数据集在北京和天津的24个不同地点拍摄,视频内容涵盖各种交通模式和条件,包括城市公路、交通十字路口和t型路口。每段视频以每秒25帧的速度录制,分辨率为960*540像素。在UA-DETRAC数据集中,有超过14万帧和8250辆车被人工标注,总记121万物体的边界框被标记。
实验从UA-DETRAC数据集中挑出雨雾天场景图片16000张,按照8:2比例划分训练集和验证集。
训练过程中,在选择VOC预训练权重的基础上对YOLOv4算法进行超参数设定,并使用随机梯度下降法对损失函数进行。实验将初始学习率设定为0.001 ,动量参数为0.9 ,权重衰减因子为0.005 ,Batchsize设定为32,每个epoch迭代334次,总迭代次数16700次,并在每一轮epoch训练开始时开启Mosaic数据增强。整个训练过程中的损失函数经过50个epoch训练后网络已经收敛,收敛时的训练损失值为6.7144 。
5.4.1 评价指标
在目标检测中,使用IoU的值衡量目标真实边界框和预测边界框的重合程度,计算方式为两个区域的交并比。一般情况下,当IoU的值大于0.5 时认为成功预测到目标。平均精度(AP,Average Precision)通过精确度(P,Precision)和召回率(R,Recall)计算,并以平均精度AP(mAP)值作为算法检测精度的综合评价指标。一般来说,mAP值越高说明模型检测精度越高,检测效果越好。
P、R、AP、mAP计算公式如下:
式中,TP表示正确划分为正样本的个数;FP表示错误划分为正样本的个数;FN为错误划分为负样本的个数。
式中,∑APclasses表示所有类别AP值总和,Nclasses表示所有类别总数。
此外,算法检测速度也是衡量算法性能好坏的重要指标。本文检测速度计算公式如下:
5.4.2 实验结果与分析
为验证YOLOv4改进算法的性能,首先,将YOLOv4改进算法同原始YOLOv4算法在从UA-DETRAC数据集中挑出的由16000张雨雾天场景图片组成的数据集上进行了实验对比。其次,将不同的去雾算法,即SSR算法、MSR算法以及MSRCR算法同原始YOLOv4算法以及YOLOv4改进算法随机组合之后,对各种算法的性能再次进行了对比。实验结果如表1所示。
表1 不同算法检测性能对比
实验结果表明,相比于YOLOv4算法,YOLOv4改进算法在雾天车辆识别精度和速度上均有提升;但效果最好的是结合MSRCR的YOLOv4改进算法。其在所选数据集上,相较于直接使用YOLOv4,mAP提升了1.23 %,检测速度提升到33.6 fps。
如图7所示,7(a)为YOLOv4算法效果图,7(b)为改进的YOLOv4+SSR算法效果图,7(c)为改进的YOLOv4+MSR算法效果图,7(d)为改进的YOLOv4+MSRCR算法效果图。
图7 各种算法实验结果对比图
本文结合去雾算法MSRCR对YOLOv4算法进行改进,在一定程度上能改善雾天车辆识别精度低、速度慢的问题。通过对输入端图片进行自适应缩放,加快网络速度;其次,减少下采样后的残差结构减少网络的参数量,在主干网络上添加下采样支路提升网络表达能力。改进后的YOLOv4和去雾算法结合,使雾天车辆检测精度依旧有不同程度提升,效果最好的去雾算法是MSRCR。但是,本文算法仍存在一定缺陷,在复杂场景下会出现少量漏检,错检情况。在之后工作中,会继续针对发现的问题研究改进本算法,进一步提高车辆的检测性能。