基于YOLOV4的车辆检测系统

2022-03-23 01:35万泗鑫李丹
网络安全技术与应用 2022年2期
关键词:道路函数车辆

◆万泗鑫 李丹

基于YOLOV4的车辆检测系统

◆万泗鑫 李丹

(四川大学锦城学院 四川 611731)

本文针对多场景下的道路检测算法系统识别类型偏少和识别数量不精准等问题,提出了一种基于YOLOv4算法的轻量级的目标检测方法,模型包含了大部分常见车辆类型。本文方法MAP为90.0%。采用7:3的分配方法,数据集共2512张图片。拥有较高的车辆识别精度和视频流畅度,同时有效解决了大型道路交通场景下的车辆遮挡位置问题和小距离目标车辆检测时的问题,具有非常好的实际技术应用研究价值。

深度学习;目标检测;交通检测;YOLOv4

1 引言

随着计算机硬件性能的不断提高,对GUP性能要求较高的人工智能(Artificial Intelligence)也在快速发展,其中一些人工智能的算法也被广泛应用于众多场景。城市化不断向前推进,许多地图应用也纷纷到来,大部分应用为了计算车流量或判断当前道路是否拥堵时,采用的基本上都是通过GPS对当前道路的用户使用量作为判别标准,但如果一辆车上有多人同时使用,就会造成判别不准确等情况。所以提出基于YOLOV4的检测系统,可以很精确地检测到车辆用于统计其数量,也可以对整个道路的交通进行优良性的评估,同时可以辅助进行交通违法事件的判别。

目标检测很多计算机视觉基础任务,它能为识别精细类别提供可靠的信息。现在的目标检测算法分为一步(one-stage)和两步(two-stage)两种,two-stage的两步目标检测算法一般都需要两个步骤相互结合才能进行计算和完成,需要先分别找出目标候选区域,然后再通过对齐目标进行划分,如R-CNN[1]、Fast R-CNN[2]等R-CNN系列的算法;与之相对的是one-stage检测,其不需要单独寻找候选区域,典型的有算法有SSD和YOLO。YOLOV4目标检测算法是在YOLO目标检测架构的基础上,采用了近些年CNN领域中最优秀的优化策略,从数据处理、主干网络、网络训练、激活函数、损失函数等各个方面都有着不同程度的优化。YOLO非常快,能够流畅地处理各种实时视频,且处理精度几乎是以前实时系统的两倍多。

YOLOv4算法是 Alexey Bochkovskiy等人在2020年4月所提出,整个框架可以分为四个部分,第一个部分Input主要用于输入图片以用于训练,第二部分Backbones中使用了CSPDarknet53网络来进行特征的提取,激活函数选择了Mish激活函数,大大提高了整个网络的性能。在Neck部分则由最大池化方法的空间池化(SPP)和实例分割框架下的路径聚合网络(PANet)结构组成,对特征进行增强和加工。第四部分Head用于对生成的三个特征图进行预测。

2 YOLOv4模型

YOLO(You Only Look Once)算法是一种基于深度学习的目标检测算法,不再需要预先提取。它将一张特定大小的图片分成m×m个正方形网格,图片中如果有一个物体的中心处于一个划分出的网格中,那么这个方形网格就负责对中心点的物体进行预测,通过一个网格就可以输出它的信息,它对非自然图像物体的检测效果远远高于DPM和RCNN系列检测方法。YOLOV2是在YOLO的基础上又一次进行了修改,主要是为了减少和解决YOLO的定位精度和召回率上的误差。YOLOv2是基于darknet19分类模型,使用全局数据平均池化,同时使用Batch Normilazation可以让训练变得更稳定,使模型更加规范化。YOLOV3采用darknet53网络作为主干,使用残差结构加强主干提取特征的能力。而YOLOV4算法主要通过CSPDarknet53网络作为主干来提取图片的特征信息,利用残差网络分别进行两次上采样和两次下采样,对特征信息进行各种融合,使用SPP结构对不同尺度的最大池化后进行堆叠,最终得到特征目标的类别和位置。YOLOV4网络结构框图如图1所示。由图可知,YOLOV4的颈部采用了路径聚合网络(PAN)[3]以及特征金字塔(FAN)[4]的结构,改善了FPN网络在传递过程中导致的特征丢失问题。而其头部,则继续使用了YOLOV3中的YOLO-head。同时为了降低训练的硬件要求,YOLOV4引入了马赛克增强和对抗的训练方法。

自对抗训练(Self-Adversarial Training)主要是指在一张图片上,神经网络可以反向地对其进行更新,对图片的改变进行扰动,反向更新后再来进行图像的风格化,这也是图像风格化的主要方法和手段。

Mosaic(马赛克)法则是一种将多张随机训练数据图片组合成一张训练图片的图片镶嵌的随机数据图片增强遮挡方法,使用该增强方法不仅可以直接进行随机图片遮挡,同时可以丰富训练图片的内部信息。其主要好处之一是可以允许目标检测器找到除了上下文以外的其他目标,增强了该模型的鲁棒性。此外,在每一层从多个不同层的图像节点进行批计算处理时对标准化后的计算均无损失,这也减少了对大的mini-batch进行size处理的计算需求。

图1 YOLOv4网络结构

在很多关于机器学习等新技术的专题研究中,往往都会把大家的所有注意力都全部集中到如何快速去正确寻找一个优秀的激活函数上。选择一个适合的激活函数既可以更有效、更精准地进行梯度的传播,但也不会因此而造成太多的不必要的计算。2010年,Nair和Hinton两人共同提出的ReLU从根本上解决一些传统激活函数(tanh和sigmoid)中经常遇到的关于梯度消失的问题。随后,提出了LReLU、PReLU、缩放指数线性单元(SELU)和Mish[5]等函数,这些函数经常也被广泛用于解决和梯度消失的相关问题[9]。其中,Mish激活函数可以让进入神经网络的信息更好,在负值时也可以让比较小的负梯度进入,保证信息不会中断,从而得一个比较好的泛华能力和准确性。

在对于模块集成方面,以前主要是通过跳过连接(skip connection)或超列(hyper-column)来将低级别的物理功能直接集成到高级语义功能。而随着FPN等多尺度预测方法已经得到广泛普及,许多集成不同功能金字塔的轻量级模块也已经被提出,类模块包括SFAM[6]、ASFF[7]和BiFPN[8]。SFAM的主要理念是在多尺度连接功能上使用SE模块执行通道级权重。至于ASFF,它使用soft-max作为点位重配,添加不同比例的功能地图。在BIFPN中,建议采用多投入加权剩余连接,执行比例分级重新加权,然后添加不同比例的特征地图[9]。

在对图片进行预测时,会对每一个网格进行条件概率的计算,并会在边界框中输出它的类别信息和置信度,但当一个物体被多个预测框框住时,就要求我们进行计算预测的边框与它真实边框之间的一个交集和其并集的综合比值,也就是计算交并比IoU(Intersection over Union)。由于MSE损失函数将检测框中心点坐标和宽高等信息作为独立的变量对待,但实际上它们之间是有关系的,所以使用IOU损失代替MSE损失。

在YOLOv4中,对Darknet53进行了一些改进。这些改进借鉴了CSPNet,CSPNet解决了Backbone中梯度信息重复的问题,它将梯度的变化集成到特征图中,从而大大降低了计算量,在充分保证运行速度和计算准确率的同时,也大大缩小了传统模型梯度尺寸图的大小。

3 实验分析

本文利用YOLOV4算法来对车辆类型进行检测,主要根据检测类型将车辆大致分为四类:car(汽车)、bus(公交车)、bicycle(自行车)和motorbike(摩托车/电动车)。在训练之前收集提取了需要的图片并且通过labelImg工具对没有标签的图片进行标注,制作成了相应的数据集,并送入网络进行训练。数据集共有2512张图片,且训练集有1884张图片,测试集628张图片,分配比例约为7:3。

本实验使用的操作系统为Windows10,在Google Colab平台上进行,硬件加速器选择GPU,运行规格设置为高RAM,CUDA版本11.0,并且将最大学习效率设为0.001,衰减系数设为0.005,并且可以在中途终端训练后继续进行训练。

实验检测图如图2和图3所示,基本上能很好地检测出道路上的车辆情况,并且被遮挡也能很好地检测出来,效果很好并且准确率高。且本模型对于道路较远处的小目标进行检测也能得到一个较好的结果,说明本模型能够很好地解决道路下车辆相互遮挡的问题和对小目标的检测问题。

图2 汽车

图3 摩托

模型训练Loss函数收敛情况如图4所示,图中展示了Loss函数的收敛情况随着迭代次数的不断增加而不断变化的情况。由图片可以清楚地看出,模型在迭代2400次时趋于收敛,同时MAP也达到了90.0%,速度可达到53FPS,对于实时检测也能够很好地进行。

4 具体应用

车辆检测算法可以很好地对交通道路上的交通工具进行检测,是对某个路口或景点进行流量检测的一个非常好的工具。同时也可以对机动和非机动车的行驶进行一个很好的识别,可以用来判断是否违反了其行驶的交通规则。

优秀的交通目标检测更是智能交通管理和安全检测中的关键技术,同时也是实现多样化智能交通管理和智能驾驶的一个基础。随着电动汽车的不断推广和普及,智能驾驶的研究也一直在进行,优秀的交通道路目标检测无疑是自动驾驶技术的一个良好的基础,所以车辆检测算法具有非常重要的研究价值。

5 总结

本文针对多场景下的道路检测算法系统识别类型偏少和识别数量不精准等问题,提出了一种基于YOLOv4算法的轻量级的目标检测方法,模型包含了大部分常见车辆类型,能够很好地解决道路下车辆被遮挡和对远处车辆的检测问题。使用YOLOV4网络来进行目标检测,采用多样化的数据集,收集了许多质量较高的图片,很好地提高了模型的精准度,但如果能够增加数据集的数量,笔者相信经过一定的训练,模型的各个方面都会有提升,接下来也会继续收集数据集,对模型进行优化。

图4 损失函数图像

[1]胡习之,魏征,周文超.融合Camshift与YOLOv4车辆检测算法[J].机床与液压,2021,49(11):70-74.

[2]王滢暄,宋焕生,梁浩翔,等.基于改进的YOLOv4高速公路车辆目标检测研究[J].计算机工程与应用,2021,57(13):218-226.

[3]杨英彬,郭子彧,蔡利民.YOLOv4的车辆检测方法研究[J].电子世界,2021(05):80-81+87.

[4]徐子睿,刘猛,谈雅婷.基于YOLOv4的车辆检测与流量统计研究[J].现代信息科技,2020,4(15):98-100+103.

[5]张杰,向勇,李宝志,等.车辆检修工业4.0基础初探[J].铁道车辆,2021,59(03):110-113.

猜你喜欢
道路函数车辆
坚持中国道路——方向决定道路,道路决定命运
道听途说
二次函数
第3讲 “函数”复习精讲
二次函数
我们的道路更宽广
函数备考精讲
车辆
冬天路滑 远离车辆
提高车辆响应的转向辅助控制系统