基于yolov8、yolov5的烟雾检测系统(含UI界面、训练好的模型、Python代码、数据集)

devtools/2024/10/15 20:14:30/

在这里插入图片描述

项目介绍

项目中所用到的算法模型和数据集等信息如下:

算法模型:
    yolov8yolov8 + SE注意力机制yolov5yolov5 + SE注意力机制直接提供最少两个训练好的模型。模型十分重要,因为有些同学的电脑没有 GPU,无法自行训练。

数据集:
    网上下载的数据集,格式都已转好,可直接使用。

界面:
    PyQt5

以上是本篇博客的简单说明,添加注意力机制可作为模型的创新点

在这里插入图片描述


摘要烟雾检测对于预防火灾、保障人们的生命财产安全以及减少环境污染具有至关重要的作用。本文介绍了一款基于YOLOv8深度学习框架烟雾检测模型,该模型使用了**1800张图片进行训练,能够识别多种环境下的烟雾,包括森林火灾烟雾、工业烟雾、车辆尾气烟雾等。此外,我们开发了一款带有UI界面的烟雾检测系统,支持实时检测不同场景下的烟雾,并能更直观地展示检测结果。该系统采用Python与PyQT5开发,能够对图片、视频及摄像头输入**进行目标检测,同时支持检测结果的保存。本文还附带了完整的Python代码和使用指南,供有兴趣的读者学习参考,获取完整的代码资源请参见文章末尾。

前言

    烟雾检测在保障环境安全、预防火灾风险以及减少空气污染方面起着关键作用。在消防与环境监测领域,及时且精确地检测出烟雾,有助于快速响应潜在火灾隐患,避免火灾蔓延,并为环保部门提供污染源数据。此外,烟雾检测还能帮助相关部门减少环境损害,提高监测效率,降低灾害带来的经济损失。

    烟雾检测在多个领域中得到了广泛应用,如森林防火、工业排放监测、智能交通系统、城市空气质量监测等场景中,都扮演着重要角色。在森林防火领域,一个自动化的烟雾检测系统能够实现实时监控,及时识别火源并发出警报,从而迅速采取应对措施,减少火灾带来的损失,保障生态环境的稳定性

    在现代环境监测中,烟雾检测系统还可以与其他智能监控系统协同工作,比如与环境管理系统整合,以提供实时的空气质量数据,推动智慧城市和环境保护的进一步发展。在后续维护与评估阶段,系统能够帮助快速诊断火灾现场和工业排放可能产生的烟雾问题,确保公共安全以及环境保护的实施效果。

    通过收集与烟雾相关的数据和图像,博主利用YOLO目标检测技术,结合Python与PyQt5,开发出了一款界面简洁的烟雾检测系统,该系统支持图片、视频及摄像头检测,并能够保存检测结果。

目录

  • 项目介绍
  • 前言
  • 功能展示:
  • 🌟 一、环境安装
  • 🌟 二、数据集介绍
  • 🌟 三、深度学习算法介绍
    • 1. yolov8相关介绍
    • 2. yolov5相关介绍
  • 🌟 四、模型训练步骤
  • 🌟 五、模型评估步骤
  • 🌟 六、训练结果
  • 结束语 🌟 🌟🌟🌟
  • 参考文献:

功能展示:

部分核心功能如下:

  • 功能1: 支持单张图片识别
  • 功能2: 支持遍历文件夹识别
  • 功能3: 支持识别视频文件
  • 功能4: 支持摄像头识别
  • 功能5: 支持结果文件导出(xls格式)
  • 功能6: 支持切换检测到的目标查看

更多的其他功能可以通过下方视频演示查看。

基于深度学习的烟雾检测系统(yolov8)


🌟 一、环境安装

文档中有详细的环境安装指南,包括 Python、PyCharm、CUDA、Torch 等库的安装步骤,所有版本均已适配。你可以根据文档或视频教程一步步完成安装。

经过三年多的经验积累,我整理了在帮助他人安装环境过程中常见的问题和解决方法,并汇总到这份文档中。无论你是使用 GPU 版还是 CPU 版,都能找到相关的安装细节和说明。文档会定期更新,以确保最新的环境配置和优化,供大家参考。

文档截图如下:

在这里插入图片描述


🌟 二、数据集介绍

数据集总共包含以下类别,且已经分好 train、val、test文件夹,也提供转好的yolo格式的标注文件,可以直接训练使用。

本系统使用的烟雾数据集比较少,大概 6百张左右,因为目前没有找到质量很高的数据集。只有这个训练出来的指标还行。
数据样式如下:

在这里插入图片描述


🌟 三、深度学习算法介绍

1. yolov8相关介绍

YOLOv8 是一个SOTA(State-Of-The-Art)模型,建立在以往 YOLO 版本的成功基础上,引入了许多新的功能和改进,以进一步提升性能和灵活性。具体创新包括:全新的骨干网络Anchor-Free 检测头以及新型损失函数,这些改进使得 YOLOv8 能够在从CPUGPU的各种硬件平台上高效运行。

然而,ultralytics 并没有直接将开源库命名为YOLOv8,而是使用了ultralytics这个名称。原因在于ultralytics将这个库定位为算法框架,而非某一个特定算法。一个主要特点是可扩展性。该库的目标是不仅能够支持 YOLO 系列模型,还能够支持YOLO 模型以及分类、分割、姿态估计等各类任务

总而言之,ultralytics 开源库的两个主要优点是:

  • 融合众多当前 SOTA 技术于一体

  • 未来将支持其他 YOLO 系列以及 YOLO 之外的更多算法

在这里插入图片描述

网络结构如下:
在这里插入图片描述

2. yolov5相关介绍

YOLOV5有YOLOv5n,YOLOv5s,YOLOv5m,YOLOV5l、YOLO5x五个版本。这个模型的结构基本一样,不同的是deth_multiole模型深度和width_multiole模型宽度这两个参数。就和我们买衣服的尺码大小排序一样,YOLOV5n网络是YOLOV5系列中深度最小,特征图的宽度最小的网络。其他的三种都是在此基础上不断加深,不断加宽。不过最常用的一般都是yolov5s模型。
在这里插入图片描述

  本系统采用了基于深度学习的目标检测算法YOLOv5,该算法是YOLO系列算法的较新版本,相比于YOLOv3和YOLOv4,YOLOv5在检测精度和速度上都有很大的提升。YOLOv5算法的核心思想是将目标检测问题转化为一个回归问题。此外,YOLOv5还引入了一种称为SPP(Spatial Pyramid Pooling)的特征提取方法,这种方法可以在不增加计算量的情况下,有效地提取多尺度特征,提高检测性能。

  在YOLOv5中,首先将输入图像通过骨干网络进行特征提取,得到一系列特征图。然后,通过对这些特征图进行处理,将其转化为一组检测框和相应的类别概率分数,即每个检测框所属的物体类别以及该物体的置信度。YOLOv5中的特征提取网络使用CSPNet(Cross Stage Partial Network)结构,它将输入特征图分为两部分,一部分通过一系列卷积层进行处理,另一部分直接进行下采样,最后将这两部分特征图进行融合。这种设计使得网络具有更强的非线性表达能力,可以更好地处理目标检测任务中的复杂背景和多样化物体。

在这里插入图片描述

  在YOLOv5中,每个检测框由其左上角坐标(x,y)、宽度(w)、高度(h)和置信度(confidence)组成。同时,每个检测框还会预测C个类别的概率得分,即分类得分(ci),每个类别的得分之和等于1。因此,每个检测框最终被表示为一个(C+5)维的向量。在训练阶段,YOLOv5使用交叉熵损失函数来优化模型。损失函数由定位损失、置信度损失和分类损失三部分组成,其中定位损失和置信度损失采用了Focal Loss和IoU Loss等优化方法,能够有效地缓解正负样本不平衡和目标尺寸变化等问题。

  YOLOv5网络结构是由Input、Backbone、Neck、Prediction组成。Yolov5的Input部分是网络的输入端,采用Mosaic数据增强方式,对输入数据随机裁剪,然后进行拼接。Backbone是Yolov5提取特征的网络部分,特征提取能力直接影响整个网络性能。YOLOv5的Backbone相比于之前Yolov4提出了新的Focus结构。Focus结构是将图片进行切片操作,将W(宽)、H(高)信息转移到了通道空间中,使得在没有丢失任何信息的情况下,进行了2倍下采样操作。


🌟 四、模型训练步骤

  1. 使用pycharm打开代码,找到train.py打开,示例截图如下:
    在这里插入图片描述

  2. 修改 model_yaml 的值,以符合实际情况。如果你打算训练 YOLOv8s 模型,请将其修改为 model_yaml = yaml_yolov8s。如果你想训练添加 SE注意力机制 的模型,请将其修改为 model_yaml = yaml_yolov8_SE

  3. 修改 data_path 的数据集路径。这里默认指定的是 traindata.yaml 文件。如果你使用的是我提供的数据,可以不用修改。

  4. 修改 model.train() 中的参数,根据自己的需求和电脑硬件的情况进行调整。

    python"># 文档中对参数有详细的说明
    model.train(data=data_path,             # 数据集imgsz=640,                  # 训练图片大小epochs=200,                 # 训练的轮次batch=2,                    # 训练batchworkers=0,                  # 加载数据线程数device='0',                 # 使用显卡optimizer='SGD',            # 优化器project='runs/train',       # 模型保存路径name=name,                  # 模型保存命名)
    
  5. 修改traindata.yaml文件, 打开 traindata.yaml 文件,如下所示:
    在这里插入图片描述
    在这里,只需修改 path 的值,其他的都不用改动(仔细看上面的黄色字体),我提供的数据集默认都是到 yolo 文件夹,设置到 yolo 这一级即可,修改完后,返回 train.py 中,执行train.py

  6. 打开 train.py ,右键执行。
    在这里插入图片描述

  7. 出现如下类似的界面代表开始训练了
    在这里插入图片描述

  8. 训练完后的模型保存在runs/train文件夹下
    在这里插入图片描述


🌟 五、模型评估步骤

  1. 打开val.py文件,如下图所示:
    在这里插入图片描述

  2. 修改 model_pt 的值,是自己想要评估的模型路径

  3. 修改 data_path ,根据自己的实际情况修改,具体如何修改,查看上方模型训练中的修改步骤

  4. 修改 model.val()中的参数,按照自己的需求和电脑硬件的情况更改

    python">model.val(data=data_path,           # 数据集路径imgsz=300,                # 图片大小,要和训练时一样batch=4,                  # batchworkers=0,                # 加载数据线程数conf=0.001,               # 设置检测的最小置信度阈值。置信度低于此阈值的检测将被丢弃。iou=0.6,                  # 设置非最大抑制 (NMS) 的交叉重叠 (IoU) 阈值。有助于减少重复检测。device='0',               # 使用显卡project='runs/val',       # 保存路径name='exp',               # 保存命名)
    
  5. 修改完后,即可执行程序,出现如下截图,代表成功(下图是示例,具体以自己的实际项目为准。)
    在这里插入图片描述

  6. 评估后的文件全部保存在在 runs/val/exp... 文件夹下
    在这里插入图片描述


🌟 六、训练结果

我们每次训练后,会在 run/train 文件夹下出现一系列的文件,如下图所示:
在这里插入图片描述
   如果大家对于上面生成的这些内容(confusion_matrix.png、results.png等)不清楚是什么意思,可以在我的文档中查看这些指标的具体含义,示例截图如下:

在这里插入图片描述


结束语 🌟 🌟🌟🌟

   下面图片是对每个文件夹作用的介绍:(纯粹是秀一秀 俺的 代码结构是否清晰, 注释是否详细,如果大家觉得有更好的方法,可以下方留言,一定再精进一下。)

在这里插入图片描述

其实用yolo算法做系统非常的简单,但是博客文字有限,如果有介绍不明白的地方,也可以看一下下面的视频,也许会更容易理解,对大家做项目有帮助。

视频就是记录自己如何进行环境安装、以及如何进行模型训练和模型评估的, 具体视频列表可以看下方图片箭头位置。当然如果自己不做这个项目,做其他的也可以参考一下,毕竟方法都是通用的。
在这里插入图片描述

演示与介绍视频: 【基于深度学习的烟雾检测系统(yolov8)】

演示与介绍视频: 【基于深度学习的烟雾检测识别系统(yolov5)】

由于博主的能力有限,博文中提及的方法虽然经过试验,但难免会存在一些疏漏之处。为了不断提高内容的质量和准确性,希望您能够热心指出这些错误。这不仅有助于我在下次修改时呈现得更加完善和严谨,也能使其他读者受益。您的反馈对我来说非常重要,能够帮助我进一步完善相关内容。

此外,如果您有更好的实现方法或独到的见解,也非常欢迎您分享。这将为大家提供更多的思路和选择,促进我们共同进步。期待您的宝贵建议与经验交流,谢谢您的支持!

参考文献:

  1. Zhang, Y., Li, J., & Wang, X. (2018). A review of steel surface defect detection technologies. Journal of Materials Processing Technology, 255, 124-134.

  2. Liu, H., Xu, Y., & Chen, G. (2020). Deep learning for steel defect detection based on convolutional neural networks. Automation in Construction, 110, 103029.

  3. Wang, S., Zhang, H., & Li, F. (2021). Real-time detection of surface defects in hot-rolled steel using YOLOv4. Sensors, 21(3), 734.

  4. Chen, L., Zhang, Y., & Liu, Y. (2022). An effective method for detecting steel surface defects using image processing and machine learning. Materials Today Communications, 28, 102649.

  5. Gao, J., Li, C., & Zhao, S. (2023). Application of computer vision in steel defect detection: A review. International Journal of Advanced Manufacturing Technology, 124, 2001-2013.


http://www.ppmy.cn/devtools/126329.html

相关文章

【python】__call__,__new__,__init__

call()、new() 和 init() 是 Python 中常用的特殊方法,它们在对象的创建和使用过程中发挥着不同的作用。 1. call() 方法 功能: __call__() 是用来让一个类的实例像函数一样调用的。当定义了 __call__() 方法后,类的实例可以被当作函数来使…

mac os使用uniapp官网cli创建项目后,hbuilderx运行失败

这个故障发生前提是,m芯片的macos,采用arm64架构 npm i安装依赖的时候只安装了 esbuild/darwin-arm64rollup/rollup-darwin-arm64 但是hbx运行时会使用到 esbuild/darwin-x64rollup/rollup-darwin-x64 所以我们需要单独安装一下这两个依赖&#xff…

密码加密存储方案

在密码加密存储中,常用的方案包括 MD5、SHA-256 等哈希算法,同时结合一些额外的技术如加盐(Salt)和多次哈希来提高安全性。下面逐步介绍常见的密码加密存储方案、算法之间的区别、以及如何安全存储密码。 1. 基本的哈希算法&…

【含文档】基于Springboot+Vue的案件管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

基于ECS和NAS搭建个人网盘

前言 在数字化时代,数据已成为我们生活中不可或缺的一部分。个人文件、照片、视频等数据的积累,使得我们需要一个安全、可靠且便捷的存储解决方案。传统的物理存储设备(如硬盘、U盘)虽然方便,但存在易丢失、损坏和数据…

【工具分享】Amnesia勒索病毒解密工具

前言 Amnesia 勒索软件于 2017 年 4 月 26 日开始出现。Amnesia 主要通过 RDP(远程桌面服务)暴力攻击进行传播,允许恶意软件作者登录受害者的服务器并执行勒索行为。 特征 AES-256 加密算法对您的文件进行加密。加密后的文件会被重命名为 *…

蓝桥杯备赛(c/c++)

排序 9. 实现选择排序 10. 实现插入排序 11. 实现快速排序 12. 实现归并排序 13. 实现基数排序 14. 合并排序数组

9.校园二手网站系统( Springboot 和 thymeleaf(html)开源框架)

目录 1.系统的受众说明 2.系统需求分析 2.2.1用户功能模块 2.2.2二手交易功能需求 2.2.3需求发布功能需求 2.3.1操作流程 2.3.2添加信息流程 2.3.3删除信息流程 2.4 系统E-R图 3.系统概要设计 3.1系统的整体架构 3.2 数据库表 4.系统实现 4.1用户功能模块 4.2 二…