YOLOv5车流量监测系统研究

一. YOLOv5算法详解

YOLOv5网络架构

上图展示了YOLOv5目标检测算法的整体框图。对于一个目标检测算法而言,我们通常可以将其划分为4个通用的模块,具体包括:输入端、基准网络、Neck网络与Head输出端,对应于上图中的4个红色模块。YOLOv5算法具有4个版本,具体包括:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四种,本论文重点讲解YOLOv5s,本论文所研究的系统使用的就是YOLOv5s,其它的版本都在该版本的基础上对网络进行加深与加宽。

输入端:输入端表示输入的图片。该网络的输入图像大小为608*608,该阶段通常包含一个图像预处理阶段,即将输入图像缩放到网络的输入大小,并进行归一化等操作。在网络训练阶段,YOLOv5使用Mosaic数据增强操作提升模型的训练速度和网络的精度;并提出了一种自适应锚框计算与自适应图片缩放方法。

基准网络:基准网络通常是一些性能优异的分类器种的网络,该模块用来提取一些通用的特征表示。YOLOv5中不仅使用了CSPDarknet53结构,而且使用了Focus结构作为基准网络。

Neck网络:Neck网络通常位于基准网络和头网络的中间位置,利用它可以进一步提升特征的多样性及鲁棒性。虽然YOLOv5同样用到了SPP模块、FPN+PAN模块,但是实现的细节有些不同。

Head输出端:Head用来完成目标检测结果的输出。针对不同的检测算法,输出端的分支个数不尽相同,通常包含一个分类分支和一个回归分支。YOLOv4利用GIOU_Loss来代替Smooth L1 Loss函数,从而进一步提升算法的检测精度。

二. 网络结构优化

YOLOv5s算法的下采样次数多,降低图像分辨率的同时导致检测效果低下,且层数较深的特征图像很难学习到小尺寸目标的特征信息,无法有效检测小目标。本文在YOLO5s 算法中增加小目标检测层,将浅层特征图与深层特征图拼接后进行检测小目标检测层由上采样模块、融合模块、BottleneckCSP 模块与卷积模块组成。如下图所示,红色栅格区域为小目标检测层。对第 17 层图像特征上采样后放大输入图像细节,使得小目标物体经过上采样后,特征信息中小目标物体的像素点占具一定比例将第20层输出图像与主千网络中第2层输出图像进行融合,使得深层特征图与浅层特征图在语义性和空间性上进行更好的平衡,以优化小尺寸目标检测效果。在原三组锚框基础上,增加一组较小的错框,这些锚框长宽分别为(6,7)、(9,15)、(16,12)。

改进YOLOv5s网络结构

三. 异类冗余框抑制

YOLOv5s 算法中结果输出采用非极大值抑制消除同类型重复检测的边界框,但存在将目标检测为不同类型的情况。如图3所示,小汽车被检测为car 后又被检测为 truck,将这组边界框称为异类几余框。针对此问题,本文在 YOLOv5s 算法中提出异类元余框抑制方法,该方法包括异类几余框判别和融合两步操作。

异类冗余框

YOLOv5s 算法结果输出为二维数组,数组每行代表一条检测结果,每条检测结果表示为:

式中:为边界框i的预测结果;为边界框左上角点的横纵坐标(pixel); 为边界框右下角点的横纵坐标 (pixel); 为预测概率;

在车辆检测过程中,若同一辆车被多次检测将每次识别类型保存于类型字典中,输出车辆类型时选择数值最大的识别类型。

为识别类型;{:l}为类型字典,l为车辆类型检测次数判别异类元余框流程为: 计算两两边界框间IOU (Intersection over Union)值,若IOU 值高于异类冗余框闯值,则判定边界框为异类几余框。成值根据非极大值抑制模块的闯值取值。IOU 的计算公式为:

式中:为边界框i与j重叠区域面积pixel pixel);

a;为边界框i的面积(pixel* pixel)融合异类几余框步骤为:取异类元余框坐标均值作为融合边界框坐标,将两个边界框类型加权求和后放入类型字典。识别类型不同时,采用加权非极大值抑制以增加注意框面积,丰富模型提取到的细节数据信息,使得边界框定位更加准确,从而提升算法检测性能。异类冗余框融合的结果表示为:

四. 算法流程

改进YOLOv5s算法车辆检测系统含有四个子模块:数据库建立、网络结构优化、模型训练和车辆检测,如下图所示。数据库提供模型训练所需的数据集;以YOLOv5s 为基准算法,增加小目标检测层优化神经网络小尺寸车辆图像的检测能力;在改进YOLOv5s 网络上训练算法以更新算法参数;利用改进YOLOv5s算法检测图像获得检测目标的边界框基于非极大值抑制模块消除同类型的重复检测边界框,然后利用异类冗余框抑制模块消除不同类型的重复检测边界框。

改进YOLOv5s车辆检测系统

相关推荐
羊小猪~~2 小时前
神经网络基础--什么是正向传播??什么是方向传播??
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
软工菜鸡2 小时前
预训练语言模型BERT——PaddleNLP中的预训练模型
大数据·人工智能·深度学习·算法·语言模型·自然语言处理·bert
哔哩哔哩技术3 小时前
B站S赛直播中的关键事件识别与应用
深度学习
deephub3 小时前
Tokenformer:基于参数标记化的高效可扩展Transformer架构
人工智能·python·深度学习·架构·transformer
___Dream4 小时前
【CTFN】基于耦合翻译融合网络的多模态情感分析的层次学习
人工智能·深度学习·机器学习·transformer·人机交互
极客代码4 小时前
【Python TensorFlow】入门到精通
开发语言·人工智能·python·深度学习·tensorflow
王哈哈^_^5 小时前
【数据集】【YOLO】【VOC】目标检测数据集,查找数据集,yolo目标检测算法详细实战训练步骤!
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·pyqt
是瑶瑶子啦5 小时前
【深度学习】论文笔记:空间变换网络(Spatial Transformer Networks)
论文阅读·人工智能·深度学习·视觉检测·空间变换
wangyue47 小时前
c# 深度模型入门
深度学习
川石课堂软件测试7 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana