当前位置: 首页 > news >正文

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 算法结果输出为二维数组,数组每行代表一条检测结果,每条检测结果表示为:

 

式中:p_{i}^{b}为边界框i的预测结果;x_{1i}y_{1i}为边界框左上角点的横纵坐标(pixel); x_{2i}y_{2i}为边界框右下角点的横纵坐标 (pixel); p_{i}^{b}为预测概率;

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

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

 

式中:a_{ij}^{I}为边界框i与j重叠区域面积pixel pixel);

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

 四. 算法流程

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

改进YOLOv5s车辆检测系统

相关文章:

  • c语言如何改变文件读取位置
  • [线程与网络] 网络编程与通信原理(六):深入理解应用层http与https协议(网络编程与通信原理完结)
  • Python 快速查找并替换Excel中的数据
  • 基于STM32开发的智能家居监控系统
  • C++面向对象程序设计 - 文件操作与文件流
  • Python 树状数组
  • Elasticsearch 认证模拟题 - 8
  • 正则限制字符串的长度必须是n的倍数
  • c++替换字符或字符串函数
  • 【爬虫】使用Python爬取百度学术页面的标题、作者、摘要和关键词
  • 详解大模型微调数据集构建方法(持续更新)
  • ant design form表单动态增减表单项Form.List选中Select值后更新相关联Select选项
  • 你使用过哪些性能分析工具来优化Java程序?
  • spring 事务隔离级别
  • [手游] 口袋妖怪肉鸽宝可梦肉鸽
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 08.Android之View事件问题
  • Android框架之Volley
  • Angular2开发踩坑系列-生产环境编译
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • es的写入过程
  • idea + plantuml 画流程图
  • JavaScript函数式编程(一)
  • Js基础知识(四) - js运行原理与机制
  • JS字符串转数字方法总结
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • leetcode386. Lexicographical Numbers
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • vue数据传递--我有特殊的实现技巧
  • Zepto.js源码学习之二
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 关于字符编码你应该知道的事情
  • 机器学习 vs. 深度学习
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 一道面试题引发的“血案”
  • #FPGA(基础知识)
  • $ git push -u origin master 推送到远程库出错
  • (3)nginx 配置(nginx.conf)
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (四)Controller接口控制器详解(三)
  • (未解决)macOS matplotlib 中文是方框
  • (学习日记)2024.01.19
  • (自适应手机端)行业协会机构网站模板
  • .gitignore文件_Git:.gitignore
  • .net Application的目录
  • .NET Core Web APi类库如何内嵌运行?
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET连接MongoDB数据库实例教程
  • .net与java建立WebService再互相调用