一文详解Yolov5——基于Yolov5的火灾检测系统

news2024/11/28 8:49:01

原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下

👍 点赞,你的认可是我创作的动力! \textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向! \textcolor{green}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富! \textcolor{green}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!

项目效果图:
在这里插入图片描述

YOLOv5

  • 一、YOLOv5介绍
  • 二、模型详解
    • 2.1 Input
    • 2.2 Backbone
    • 2.3 Neck
    • 2.4 Prediction
  • 三、项目意义
  • 四、检测效果
  • 五、数据集获取
  • 六、模型训练效果
  • 七、总结

一、YOLOv5介绍

YOLO(You Only Look Once) 是REDMON等提出的目标检测算法,作为单阶段(one-stage)的代表算法,目前 YOLO已经更新到了YOLOv5。相比于Two stage目标检测算法,YOLO是直接从网络中提取特征,并预测物体的类别和具体位置,一步到位。
 此后,REDMON在此基础上提出了YOLO9000等检测算法,使系统的检测性能得到进一步提升。在YOLOv3的基础上继续改进升级,并最终得到 YOLOv4。YOLOv4网络结构主要由CSPDarknet53特征提取网、SPP(空间金字塔池化)模块、PANet特征融合模块、Yolo Head分类器组成。
 YOLOv5算法使用CSPDarknet(跨阶段局部网络)作为特征提取网络,从输入图像中提取目标信息。如今,YOLOv5无论是在准确率还是速度上,都已经达到较好的效果。所以,本项目采用YOLOv5训练模型,结合YOLOv5算法构建火灾检测系统。

二、模型详解

在这里插入图片描述 上图是yolov5s的网络结构,它是yolov5系列中深度最小、特征图宽度最小的网络。后面的m、l、x都是在此基础上不断加深、加宽的。网络主要分为输入端、Backbone、Neck、Prediction四个部分。它和yolov3主要不同的地方:

  • 输入端:Mosaic数据增强、自适应锚框计算、自适应图片缩放
  • Backbone:Focus结构、CSP结构
  • Neck:FPN+PAN结构
  • Prediction:GIOU_Loss

YOLOv5 模型在输入端(Input)增加了 Mosaic 数据增强、自适应锚框计算、自适应图片缩放等数据预处理技巧来增强数据,防止过拟合;在特征提取网络部分(Backbone)引入了Focus 模块、跨阶段局部融合网络(CrossStage Partial Network, CSPNet)等方法,在减少了计算量的同时可以保证准确率,使特征能够更好的向后传递。下图为cspnet 结构图:
在这里插入图片描述

  CSPNet主要目的就是缓解以前需要大量推理计算的问题,它有以下优点:

  • 增强了CNN的学习能力,能够在轻量化的同时保持准确性。
  • 降低计算瓶颈。
  • 降低内存成本。
  • CSPNet通过将梯度的变化从头到尾地集成到特征图中,在减少了计算量的同时可以保证准确率。

CSPNet和PRN都是一个思想,将feature map拆成两个部分,一部分进行卷积操作,另一部分和上一部分卷积操作的结果进行concate。在特征融合部分(Neck)借鉴了空间金字塔池化(Spatial Pyramid Pooling, SPP)、特征金字塔(Feature Pyramid Networks, FPN)与路径聚合网络(PathAggregation Network, PAN)等方法,有效的增加主干特征的接收范围,融合后的特征保留了丰富的语义特征和精准的定位特征;同时在预测部分(Prediction)采用了新的定位损失函数,确保定位的精准。通过引入各种高效的网络组件,使得YOLOv5 模型在保持实时目标检测速度的基础上,也实现了精度上SOTA

2.1 Input

Input 使用了 Mosaic 数据增强、自适应锚框计算、图片尺寸处理。Mosaic 数据增强把 4 张图片,采用随机缩放、随机裁剪、随机排布的方式进行拼接 , 极大地丰富了检测数据集,同时也能提高小目标检测的精度,除此以外,Mosaic数据增强在训练时可一次性对 4 张图片的数据进行计算,降低了 mini-batch 的大小,也减少了 GPU 的使用。YOLOv5 将自适应锚框计算嵌入代码中,通过在初始设定的锚框上输出预测框,然后和真实标签进行比对,计算损失函数,再不断更新,更新锚点框的大小,实现自适应计算并得出最佳锚框值。图片尺寸处理是对输入的各种图片的尺寸进行自适应填充处理,为了提高目标检测的速度,采用了减少灰度边缘的方法。

2.2 Backbone

Backbone 是 YOLOv5 网络的主干部分,包含 Focus 结构、CSP 结构和 SPP 结构。其 中 Focus 结 构: 主 要 进 行 切 片 操 作, 只 存 在 于YOLOv5 算法中,以 YOLOv5s 为例,将原始三通道图像输入 Focus 结构,经过切片操作后,进行拼接,图片尺寸缩小到原来的 1/4、输入通道扩充到原来的 4 倍,经过 32 个卷积核的卷积计算,最终得到含有 32 个通道的特征图。YOLOv5s、YOLOv5m、YOLOv5x 和 YOLOv5l, 使 用 的 卷积核数量依次增加,其中,YOLOv5m 使用了 48 个卷积核。卷积核个数越多 , 特征图的宽度越宽 , 网络提取特征的学习能力也越强。开发者认为,Focus 模块的设计目的是减少层数并降低计算量。

  • CSP 结构:YOLOv5 中设计了 CSP1_N 和 CSP2_N 两种CSP 结构,CSP1_N 应用于 Backbone 作为主干网络,CSP2_N 应用在 Neck 中,这部分没有残差组件。CSP1_N 结构将基础层的特征映射划分为两个不同的部分,其中之一就是将 N个残差组件进行卷积操作,另一部分则是直接进行卷积操作,两次卷积操作可以使通道数减半,然后通过拼接来进行输出。
  • SPP 结构:在 Backbone 中,采用 SPP(空间向量金字塔
    池化)。多尺度融合是通过最大化池来实现的。

2.3 Neck

Neck 采用 FPN+PAN 的结构。FPN 结构是自上向下传递强特征,对结构起到增强的作用,然而,FPN 只能增强语义信息,而不能传递位置信息。而 PAN 结构刚好弥补了 FPN结构不能进行定位信息传递的缺陷,PAN 结构自下向上将低层的强定位特征传递上去,两者结合操作,增强网络特征融合的能力。

2.4 Prediction

本文中 Yolov5 采用 GIOU_Loss 作 Bounding box 的损失函数GIOU_Loss 能够区分重叠的预测框和目标框在 IOU 相同时两者相交情况的不同。另外,针对预测过程中会出现多个预测框的情况,需要通过非极大值抑制即 NMS 来处理,Yolov5 使用加权 NMS 来筛选最佳的预测框

三、项目意义

  火灾作为威胁人类生命生产安全的隐患之一,一直是人们关注的重点。传统的火灾监测装置根据温度来检测火灾,不仅灵敏度差,而且反馈时间长,常常会出现消防员收到警报消息时,火室已经无法控制。本文由树莓派、Opencv和蜂鸣器设计了一套火灾检测装置,能够对火灾进行实时灵敏检测,适用于地下停车场、居民楼道、商场等多种场景。

四、检测效果

在这里插入图片描述

五、数据集获取

  通过labelImg 标注工具对数据集图像进行标注,并保存为YOLO 系列的 txt 格式。可以在你的虚拟环境中进入labelImg,这是他的界面。左侧open Dir可以打开数据集的文件夹,Change Save Dir是你的保存路径,Next和Prev Image分别是上一张和下一张图片。重点来了:Create RectBox绘制一个矩形框将你需要框选的对象框选出来,并添加标签。这里不懂的同学可以看我之前有一篇很详细的教程链接: Yolov5:强大到你难以想象──新冠疫情下的口罩检测
在这里插入图片描述
通过对数据进行乱序排列,随机选出训练集 1442 张,测试集共617 张,验证集共 617 张。通过上千张火灾的图片进行机器学习的训练,对于微小火焰也有这不错的检测效果。数据集的下载地址我贴在这里了:链接:https://pan.baidu.com/s/1ry7o3oJfyHM5rw4nkXL14A?pwd=f5xp
提取码:f5xp
在这里插入图片描述

六、模型训练效果

在这里插入图片描述

七、总结

  由于大多数设备、算法的实时性较差或检测精确度偏低,而YOLOv5 检测算法拥有轻量级的模型和优良的性能,针对于此,本项目基于 YOLOv5 算法, 着重解决的问题是如何实现准确快速地检测火灾,以减小在复杂环境中的误检率,并提高检测精确率和实时性。

原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下

👍 点赞,你的认可是我创作的动力! \textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向! \textcolor{green}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富! \textcolor{green}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP ERP系统实施隐式增强中“声明“和“代码“的区别和用途介绍

SAP ERP系统在实施隐式增强的时候会跳出一个增强模式选择“声明”或者“代码”,这步骤应该如何选择对于刚接触这类增强的开发人员通常会感到疑惑,不知道应该选择哪个(如下图)。 点击“信息”可以看到官方的英文的解释如下: 这两个选项有什…

通达信收费接口查询可申购新股c++源码分享

有很多股民在做股票交易时为了实现盈利会借助第三三方炒股工具帮助自己&#xff0c;那么通达信收费接口就是人们常用到的&#xff0c;今天小编来分享一下通达信收费接口查询可申购新股c源码&#xff1a; std::cout << " 查询可申购新股: category 12 \n"; c…

maven的学习与理解之 maven的下载与配置文件的修改

maven的学习之maven的下载与配置文件的修改 maven的下载 maven的下载地址&#xff1a; <http://us.mirrors.quenda.co/apache/maven/maven-3/3.5.4/binaries/maven的安装 zip文件下载之后 解压到没有中文的路径下 这个路径后面maven项目使用频繁 建议路径简单…

电商销量查询:鲸参谋2023年1月平板电视品牌销售数据

根据鲸参谋平台的电商数据显示&#xff0c;1月份在京东平台上各类大家电的销售中&#xff0c;平板电视销售量共计210万件左右&#xff0c;总销售量排名第一&#xff0c;环比增长了26.43%&#xff0c;领先于洗衣机、冰箱、冷柜和空调等热销大家电。 ​*数据源于鲸参谋-类目排行分…

C语言--数据的存储1

目录数据类型的介绍类型的意义类型的基本归类整形家族浮点型家族构造类型--自定义类型指针类型空类型整形在内存中的存储大小端大小端如何区分为什么会有大小端判断机器字节序从本章开始&#xff0c;我们将正式进入C语言的进阶学习中。本篇内容我们将学习 数据的存储数据类型的…

Python深度学习实战PyQt5基本控件使用解析

PyQt5 提供了丰富的输入输出控件。本文介绍通过 QtDesigner 工具栏创建常用的基本控件&#xff0c;包括各种按钮控件、文本输入控件和调节输入控件1. PyQt5 控件简介1.1 什么是控件控件也称控件对象&#xff0c;是 Qt用户界面上最基本的组件类型&#xff0c;也是构成用户界面的…

作为研发如何使用Github Api?

文章目录使用步骤账号创建进行开发者相关设置API操作演示Github API好处推荐的Github API&#x1f31f;个人主页: 个人主页 &#x1f6b5;‍♀️个人介绍:每天进步一点点&#xff0c;生活变得好一点点。 &#x1f4cc;作为一位开发&#xff0c;不管是非工作的还是工作中的人士&…

指针的进阶

指针的进阶一级目录二级目录三级目录先来回顾一下&#xff1a;字符指针指针数组数组指针数组指针的定义&数组名vs数组名数组指针的使用数组参数 指针参数一维数组传参二维数组传参一级指针传参二级指针传参函数指针函数指针数组指向函数指针数组的指针回调函数指针和数组笔…

图表控件TeeChart for .NET系列教程六:选择一个系列类型(使用系列)

TeeChart for .NET是优秀的工业4.0 WinForm图表控件&#xff0c;官方独家授权汉化&#xff0c;集功能全面、性能稳定、价格实惠等优势于一体。TeeChart for .NET 中文版还可让您在使用和学习上没有任何语言障碍&#xff0c;至少可以节省30%的开发时间。 TeeChart for .NET最新…

python基于django的自媒体社区交流平台

自媒体社区平台采用python技术,基于django框架,mysql数据库进行开发,实现了以下功能&#xff1a; 本系统主要包括管理员,用户,商家和普通管理员四个角色组成,主要包括以下功能&#xff1a; 1;前台&#xff1a;首页、需求通告、优质案例、帮助中心、意见反馈、个人中心、后台管理…

区块链安全:从web3.0到数字货币

互联网发展的三个阶段 web1.0 静态页面&#xff0c;内容只能供用户去阅读&#xff0c;类似于在网络上读报纸或者看书。 web2.0 动态互联网&#xff0c;实现用户之间的互动&#xff0c;比如twitter&#xff0c;facebook&#xff0c;titok等。 web2.0中厂商用免费或极低的成…

基于UDP/TCP实现客户端服务器的网络通信程序

目录&#xff1a;前言基于UDP实现客户端服务器的网络通信程序基于TCP实现客户端服务器的网络通信程序前言网络编程的核心是Socket API&#xff0c;它是操作系统给应用程序提供的网络编程API&#xff0c;可以认为是socket api是和传输层密切相关的。在传输层里面&#xff0c;提供…

leetcode刷题---递归思想

leetcode刷题---递归思想&#xff09;1.1 递归介绍1.2 基本步骤1.3 代表题目1.3.1 入门题---青蛙跳1.3.2.1 初级题226.翻转二叉树112.路径总和1.3.3 中级题---汉诺塔问题1.3.4 进阶题---细胞分裂1.1 递归介绍 如果在函数中存在着调用函数本身的情况&#xff0c;这种现象就叫递…

java Resource

参看本文前 你要先了解 spring中的 Autowired和Qualifier 注解 如果之前没有接触过 可以查看我的文章 java spring 根据注解方式按(类型/名称)注入Bean 然后 创建一个java项目 引入spring注解方式 所需要的包 然后 在src下创建包 我们这里直接叫 Bean 在Bean下创建包 叫UserD…

【GIC】处理中断

目录 一、当中断变为pending时发生了什么&#xff1f; 二、中断响应 三、虚假的中断 四、运行优先级&抢占 五、结束中断 六、检查系统的当前状态 6.1最高优先级等待中断和运行优先级 6.2单个INTID的状态 一、当中断变为pending时发生了什么&#xff1f; 前面的文章…

0207 事件

事件监听事件监听版本事件类型事件概念事件在编程时系统内发生的动作或者发生的事情例子点击按钮鼠标经过拖拽鼠标事件监听&#xff08;注册事件&#xff0c;绑定事件&#xff09;让程序员检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立即调用一个函数做出响应…

PHP立体安全:一网打尽攻击向量

PHP立体安全&#xff1a;一网打尽攻击向量 所谓攻击向量&#xff0c;就是指黑传递有效负载或恶意结果而可以访问计算机或网络服务器的路径或方法。 PHP的安全并不只有危险函数&#xff0c; 这只是冰山一角 。本文将介绍PHP从汇编层面到框架层面直到标准层面的所有攻击向量。 攻…

【H5】html实现微信授权登陆

html实现微信授权登陆前言网页授权的两种 scope 的区别开发指南第一步&#xff1a;用户同意授权&#xff0c;获取code第二步&#xff1a;通过 code 换取网页授权access_token第三步&#xff1a;拉取用户信息(需 scope 为 snsapi_userinfo)代码实现&#xff1a;效果图总结前言 …

用Python出了3000道数学题,外甥表示要正月剪头

人生苦短&#xff0c;快学Python&#xff01; 过年期间发现小外甥已经上小学了&#xff0c;我姐说老师今天给他们布置了寒假作业&#xff1a;每天坚持做乘法和加减法混合运算。 这我必须帮帮忙&#xff0c;用Python写了一段自动生成小学生计算题的代码&#xff0c;并支持导出…

Python入门之ChatGPT的API调(Python版)

一、Python环境部署 参考Python 环境搭建 | 菜鸟教程 Python官网&#xff1a;Welcome to Python.org Python文档下载地址&#xff1a;Our Documentation | Python.org 二、Thonny的安装 安装包地址&#xff1a;Thonny, Python IDE for beginners 三、ChatGPT的Key申请 网…