1、人工智能本栏目责任编辑:唐一东Computer Knowledge and Technology电脑知识与技术第19卷第3期(2023年1月)第19卷第3期(2023年1月)基于YOLOv5s的城市道路车辆检测方法的设计与实现江子昂,李小玉,李洋,罗力,张泽世(新疆农业大学,新疆 乌鲁木齐 830052)摘要:随着科学技术的不断进步,人们所追求的生活质量也越来越高,城市的科技化水平在不断升高。电商,直播带货等行业的兴起,使物流行业得到了飞速发展,因此各种汽车数量每年都在大幅增加,这使得传统的车辆目标检测算法已经慢慢落后。近些年,基于Yolo算法的目标检测已经非常成熟,该文选取YOLOv5算法中
2、的YOLOv5s模型,以大量的车辆图像为基础,验证算法模型精准度的同时分析算法的优势,结果显示,基于YOLOv5s的目标检测模型在检测车辆时平均准确率均值达到了92%,查准率和查全率分别为90%和82%,这使得YOLOv5s算法模型具有精确度高的特点,可以提高车辆检测的性能。关键词:YOLOv5s;目标检测;车辆检测中图分类号:TP311文献标识码:A文章编号:1009-3044(2023)03-0019-03开放科学(资源服务)标识码(OSID):1 引言截至2022年6月底,公安部已经官方宣布我国的车辆总量已经达到了4.06亿辆,与2021年底比较,新增加了 1082 万辆汽车(扣除报废注
3、销量),增长率为2.74%。其中,2022年6月之前新注册登记的车辆就有1657万辆。这说明了我国人民的生活质量处于不断上升的趋势中,对汽车的需求量也在持续的增加,这就导致道路交通拥堵现象越来越多。日益增加的汽车数量以及相对落后的道路交通管理系统是造成道路交通拥堵的最主要根源1。车辆目标检测在道路交通管理系统中扮演着十分关键的角色。车辆目标检测属于电脑视觉的典型任务,其目的就是从图片中找出物品的具体的位置,并检测出物品的具体类别是什么2。如果可以快速且准确地检测出车辆,就可以对车辆流动做出最及时的管理从而避免道路交通拥堵。最近几年中卷积神经网络的研究获得了迅猛的成长,使得基于卷积神经网络的目标
4、检测方法也受到了更多的重视与应用,其中比较典型的方法包括R-CNN3,Fast R-CNN4,Faster R-CNN5等一些基于候选框的二层次方法,不过由于这一类方法在训练的时候需要相当大的空间且训练和检测的速度非常慢,因此这类二层次方法并不合适用在交通管理系统中来检测大批次的车辆。YOLO系列算法是当前比较流行的另外一种类型的算法,此算法的训练和检测速度非常快,因此广泛地被应用于工业上面。本文使用YOLOv5算法中的YOLOv5s模型来进行复杂情况下的车辆检测,用数据标记软件 labelimg 对公共数据集 StanfordCar Dataset6进行标记处理,得到用训练、测试和验证各15
5、0张汽车图片组成的数据集,基于得到的数据集进行YOLOv5s模型的训练测试和验证,最后利用互联网和实地拍摄的数据材料来实际验证模型的性能。2 YOLOv5模型概述YOLO 的意思就是 you only look once(你只看一次),这类算法的创造性在于它把目标检测问题看待成回归问题,直接从图像元素开始,计算边框和分类的可能性。YOLO系列算法经过不断的升级更新出现了有 YOLOv17,YOLOv28,YOLOv39,YOLOv410,YOLOv5等算法,YOLOv5算法是由Ultralytics LLC有限公司于2020年6月发布的,在其官方的源码库中出现了4各不同的版本,分别是YOLOv
6、5s、YOLOv5m、YOLOv5l、YOLOv5x四个模型,其中YOLOv5s模型是所有4个模型中深度最少的,特征图的宽度也最小的一个模型,而其他的3种模型都是在YOLOv5s模型的基础上不断深化,并进一步加宽得到的。YOLOv5s 一般由输入端、Backbone、Neck和Prediction四个具有特殊功能的部分组成。图1为YOLOv5s网络结构图。输入端口YOLOv5s,主要应用了Mosaic图像增强的技术、自适应锚框方法,以及自适应图像缩放方法。Mosaic数据增强是YOLOv5团队成员提出来的,这种方法可以丰富数据集,可以增加很多的小目标,增强收稿日期:2022-07-12基金项目
7、:项目名称:新疆农业大学2022年度校级大学生创新“城市道路车辆检测方法的研究与实现”作者简介:江子昂(2000),男,本科生,研究方向为计算机科学与技术;通讯作者:李小玉(1996),女,研究生,研究方向为计算机科学与技术。E-mail:http:/Tel:+86-551-65690963 65690964ISSN 1009-3044Computer Knowledge and Technology电脑知识与技术Vol.19,No.3,January202319DOI:10.14004/ki.ckt.2023.0165本栏目责任编辑:唐一东人工智能Computer Knowledge and
8、 Technology电脑知识与技术第19卷第3期(2023年1月)第19卷第3期(2023年1月)网络的稳健性,在小目标的检测过程中效果还是很可观的。另外在YOLOv3、YOLOv4算法中,不同的数据集在进行训练的时候,初始锚框值都是采用单独的程序计算得到的,但官方给出的YOLOv5算法的源码中增加了自适应锚框方法和自适应图像缩放方法,使得在每一次训练过程中,此算法都会自适应的计算不同数据集中的最佳锚框值,并在原始图片中自适应的使用最小的黑边,提升了模型推理能力。Backbone主要包括Focus结构和CSP结构。如图2所示,Focus结构的主要核心就是切片功能11,在此模型中原始的6086
9、08的3通道图像输入到Focus结构中,使用切片功能,先变成304304具有12通道的特征信息图,再经过一次由32个卷积核组成的卷积操作,最终变成304304具有32通道的特征信息图。此算法中还设计了两种CSP结构,CSP1_X结构在Backbone主干网络被采用,而另一种CSP2_X结构则使用于Neck部分中。CSP结构首先会将基础层的特征信息映射划分为两个部分,最后通过跨阶段层次结构将它们合并,这种结构不但可以增强网络的学习能力还可以降低计算瓶颈,使模型变得轻量的同时识别准确性不会改变。图2 切片功能和Focus结构Neck部分主要使用了FPN+PAN结构,FPN是将上层的特性信息特点利用
10、向上采样的方法传递融合,传达强语义特征并得以提供进行预测的特征图,PAN则从底向上传达强定位特性信息,这样FPN+PAN结构就可以从不同的主干层对不同的检测层进行特征聚合。YOLOv5在Neck这一部分并没有按部就班地使用YOLOv4中的普通卷积操作,而是把CSP2_X结构加入到了Neck部分,从而提高了对网络特殊信息的整合能力。Prediction部分YOLOv5也使用了与YOLOv4相似的损失函数,采用了 CIOU_Loss 作为目标 Boundingbox的损失函数。CIOU_Loss可使预测框回归的速率和准确性都更高一些。CIOU_Loss为公式(1),其中v是度量长宽比一致性的参数,
11、应该确定为公式(2):CIOU_Loss=1-(IOU-Distance_22Distance_C2-2(1-IOU)+)(1)=42(arctanwgthgt-arctanwphp)2(2)3 实验与结果分析本节首先会介绍实验所用到的数据集及其处理的方法,然后是实验的运行环境及依赖库的版本,再然后是实验的过程,最后是重点分析YOLOv5s模型的性能和实际的检测效果。3.1 数据集介绍和处理该实验使用的是公共数据集Stanford Car Dataset。这个数据集是由stanford所建立,是一个汽车资料集合,数据集中包括了16185张汽车图像,汽车的种类也非常的丰富,足足有196种汽车。基
12、本上现实生活中所有的车辆的图像在数据集中都可以找到。数据集被分为有8144个训练图片的训练集和8041个试验图片的测试集,而其中的各个车辆分类都已大致分成了50-50个分割。类通常指品牌,型号,生产日期等级别,2012的特斯拉Model S或者是2012 的BMW M3 coupe。在处理数据集阶段使用labelimg对数据集进行标记,labelimg是一款给图形标注类别的工具,它是基于python开发的,图形界面则采用QT开发,用此工具可以使标记的图片保存成各种网络模型训练时所需要的文件格式。使用labelimg对数据集中的图像进行处理,指明识别对象为car类别,保存文件格式调整为yolo_
13、txt格式,如图3所示,经过labelimg标记处理后得到数据集的带标签的yolo_txt文件,只有得到了带标签的yolo_txt文件才可以训练模型。分别对训练集、测试集和验证集各150图片进行标记操作,得到最终的数据集。用这些数据集来进行模型的训练。3.2 实验环境YOLOv5是利用Python所编写所以运行环境中需要安装Python,训练YOLOv5s模型所需要的依赖库之间的版本对应是非常严格的,版本之间的不对应会导图3 labelimg标记页面图1 YOLOv5s网络结构图20人工智能本栏目责任编辑:唐一东Computer Knowledge and Technology电脑知识与技术第
14、19卷第3期(2023年1月)第19卷第3期(2023年1月)致模型无法训练的结果,此实验是严格按照表1所示的版本进行模型训练的。其中IDE是集成的开发环境,是提供程序开发环境的工具,包含了代码编辑器、编译器、调试器和图形用户界面等工具;依赖库numpy是一种数字计算扩展,对于大型矩阵的运算是非常方便的;依赖库pandas是在数据分析阶段所使用的库;依赖库pillow是图像处理库,具有对图像进行裁剪、调整大小和颜色处理等功能;依赖库scipy是用来进行计算大多数函数运算的库;依赖库Pytorch是运行环境中最重要的库,它是由Facebook(脸书)的人工智能研究院开发的,是一个用Python开
15、发的可续计算包,主要有两个功能:1)具有强大的张量计算。2)包含自动求导系统的深度神经网络。表1 实验运行环境环境类型处理器操作系统IDEpython依赖库numpy依赖库pandas依赖库pillow依赖库scipy依赖库pytorch版本型号1.4 GHz 四核Intel Core i5MacOs Catalina 10.15.7Pycharm 2022.13.8.131.18.51.4.39.2.01.4.11.12.03.3 实验结果根据搭建的环境和标注处理好的数据集来训练模型,训练weights(权重)设置为YOLOv5s.pt,batch-size(每批次样本的数量)调整为4,增加
16、模型的泛化力,经过100次迭代最终得到训练好的模型文件YOLOv5s.pt,模型性能如表2所示,其中Precision是查准率的意思,表达式为公式(3),其中TP为正样本正确分类的个数,FN为正样本未分类的个数,训练曲线图如图4所示,图中Precision的数值趋于平稳缓和并数值上接近1,说明模型的准确度已经很高了;Recall是查全率的意思,表达式为公式(4),其中FP为没有正确分类的个数,训练曲线图如图5所示,图中Recall的数值最后维持在 0.8 左右,说明模型的失误检测率低;mAp0.5和mAp0.5:0.95:mAp是用 Precision和Recall作为两坐标轴作图所围成的范围,越靠近1,模型精度就越高12。根据以上数据可以得出实验训练出来的模型在车辆识别的正确率是非常高的。表2 模型性能结果表具 体PrecisionRecallmAp0.5mAp0.5:0.95版本型号0.9010.8270.9260.813Precisio=TPTP+FN(3)Recall=TPTP+FP(4)图4 Precision曲线图图5 Recall曲线图3.4 实际检测为了实际检测训练好的