基于深度学习的森林火焰烟雾检测系统(含UI界面,yolov8、Python代码,数据集)


项目介绍

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

算法模型:

yolov8

yolov8主要包含以下几种创新:

1. 添加注意力机制(SECBAM等)

2. 修改可变形卷积(DySnake-主干c3替换、DySnake-所有c3替换)

数据集:

网上下载的数据集,大约5000张左右,详细介绍见数据集介绍部分。

以上是本套代码的整体算法架构和对目标检测模型的修改说明,这些模型修改可以为您的 毕设、作业等提供创新点和增强模型性能的功能

如果要是需要更换其他的检测模型,请私信。

注:本项目提供所用到的所有资源,包含 环境安装包、训练代码、测试代码、数据集、视频文件、 界面UI文件等。

如果需要yolov5版本的系统,见此链接:https://blog.csdn.net/qq_28949847/article/details/134492438


项目简介

在本文中,我们将详细介绍如何利用深度学习中的YOLOv8算法来实现对森林火焰烟雾的检测,并结合PyQt5设计了一个简约而强大的系统UI界面。通过该界面,您可以轻松选择自己的视频文件或图片文件进行检测,并且还能够根据需要替换训练好的yolov8模型,以适应不同的数据检测需求。

我们的系统界面不仅外观优美,而且具备出色的检测精度和强大的功能。它支持多目标实时检测,并允许您自由选择感兴趣的检测目标。

本博文提供了完整的Python程序代码和使用教程,非常适合新入门者参考学习。您可以通过文末的下载链接获取完整的代码资源文件。以下是本博文的目录大致内容:

目录

效果展示:

功能:

  1. 支持单张图片识别
  2. 支持遍历文件夹识别
  3. 支持识别视频文件
  4. 支持结果导出(xls、csv两种格式)
  5. 支持切换检测到的目标

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


🌟一、环境安装

本项目提供所有需要的环境安装包(python、pycharm、cuda、torch等),可以直接按照视频讲解进行安装。具体的安装流程见此视频:视频链接

环境安装视频是以车牌项目为例进行讲解的,但是可以适用于任何项目。

视频快进到 3:18 - 21:17,这段时间讲解的是环境安装,可直接快进到此处观看。

环境安装包可通过百度网盘下载:

链接:https://pan.baidu.com/s/17SZHeVZrpXsi513D-6KmQw?pwd=a0gi

提取码:a0gi

--来自百度网盘超级会员V6的分享

上面这个方法,是比较便捷的安装方式(省去了安装细节),按照我的视频步骤和提供的安装包安装即可,如果要是想要多学一点东西,可以按照下面的安装方式走一遍,会更加熟悉。

环境安装方法2:

追求快速安装环境的,只看上面即可!!!

下面列出了5个步骤,是完全从0开始安装(可以理解为是一台新电脑,没有任何环境),如果某些步骤已经安装过的可以跳过。下面的安装步骤带有详细的视频讲解和参考博客,一步一步来即可。另外视频中讲解的安装方法是通用的,可用于任何项目

  1. python环境安装:B站视频讲解
  2. cuda、cudnn安装:B站视频讲解
  3. torch安装: B站视频讲解
  4. pycharm安装: B站视频讲解
  5. 第三方依赖包安装: B站视频讲解

按照上面的步骤安装完环境后,就可以直接运行程序,看到效果了。


🌟二、数据集介绍

我们使用的数据集是从网上自行下载的,其中包含了大约2600张图像,用于火焰烟雾检测任务。这些图像已经由他人进行了标注,您可以直接拿来使用。数据集已经按照train、val和test的分类进行了组织,方便您进行模型的训练和评估。

这个数据集涵盖了各种不同场景下的火焰和烟雾图像,主要是室外环境(森林、马路等),不同光照条件以及不同尺度和角度的火焰和烟雾。这样的多样性使得模型能够在各种复杂情况下进行准确的火焰烟雾检测。

为了提高使用的便捷性,数据集已经经过标注,并且按照训练集、验证集和测试集的分类进行了整理。您可以直接使用这些数据集来训练模型并进行性能评估。

下面是一些数据集图片的标注效果图,展示了火焰和烟雾的示例图像,帮助您更好地了解数据集的内容和标注质量。


🌟三、 yolov8相关介绍

YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。

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

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

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

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

网络结构如下:


🌟四、 yolov8训练步骤

此代码的训练步骤极其简单,不需要修改代码,直接通过cmd就可以命令运行,而且命令都已写好,直接复制即可,命令如下图:

下面这条命令是 训练 添加 CBAM 注意力机制的命令,复制下来,直接就可以运行,看到训练效果(需要将coco_NEU-DET.yaml替换为自己的数据集的yaml文件)。

python 复制代码
python ./train.py --epochs 500 --cfg models/yolov5s-CBAM-2.yaml --hyp data/hyps/hyp.scratch-low.yaml --data data/coco_NEU-DET.yaml --weight weights/yolov5s.pt --workers 4 --batch 16

执行完上述命令后,即可完成训练,训练过程如下:

下面是对命令中各个参数的详细解释说明:

  • python: 这是Python解释器的命令行执行器,用于执行后续的Python脚本。

  • ./train.py: 这是要执行的Python脚本文件的路径和名称,它是用于训练目标检测模型的脚本。

  • --epochs 500: 这是训练的总轮数(epochs),指定为500,表示训练将运行500个轮次。

  • --cfg models/yolov5s-CBAM-2.yaml: 这是YOLOv5模型的配置文件的路径和名称,它指定了模型的结构和参数设置。

  • --hyp data/hyps/hyp.scratch-low.yaml: 这是超参数文件的路径和名称,它包含了训练过程中的各种超参数设置,如学习率、权重衰减等。

  • --data data/coco_NEU-DET.yaml: 这是数据集的配置文件的路径和名称,它指定了训练数据集的相关信息,如类别标签、图像路径等。

  • --weight weights/yolov5s.pt: 这是预训练权重文件的路径和名称,用于加载已经训练好的模型权重以便继续训练或进行迁移学习。

  • --workers 4: 这是用于数据加载的工作进程数,指定为4,表示使用4个工作进程来加速数据加载。

  • --batch 16: 这是每个批次的样本数,指定为16,表示每个训练批次将包含16个样本。

通过运行上面这个命令,您将使用YOLOv5模型对目标检测任务进行训练,训练500个轮次,使用指定的配置文件、超参数文件、数据集配置文件和预训练权重。同时,使用4个工作进程来加速数据加载,并且每个训练批次包含16个样本。


🌟五、 yolov8评估步骤

评估步骤同训练步骤一样,执行1行语句即可,注意--weights需要变为自己想要测试的模型路径。

python 复制代码
python ./val.py --data  data/coco_fire.yaml --weights ../weights/yolov5s.yaml/weights/best.pt

评估结果如下:


🌟六、 训练结果

我们每次训练后,会在 run/train 文件夹下出现一系列的文件,如下图所示:


❤️下载链接

该代码采用Pycharm+Python3.8开发,经过测试能成功运行,运行界面的主程序为main.py,提供用到的所有程序。为确保程序顺利运行,请按照requirements.txt配置Python依赖包的版本。Python版本:3.8,为避免出现运行报错,请勿使用其他版本,详见requirements.txt文件;

若您想获得博文中涉及的实现完整全部程序文件(包括训练代码、测试代码、训练数据、测试数据、视频,py、 UI文件等,如下图),这里已打包上传至博主的面包多平台,可通过下方项目讲解链接中的视频简介部分下载,完整文件截图如下:

项目演示讲解链接B站

相关推荐
余~~18538162800几秒前
稳定的碰一碰发视频、碰一碰矩阵源码技术开发,支持OEM
开发语言·人工智能·python·音视频
0zxm11 分钟前
06 - Django 视图view
网络·后端·python·django
ROBOT玲玉1 小时前
Milvus 中,FieldSchema 的 dim 参数和索引参数中的 “nlist“ 的区别
python·机器学习·numpy
Kai HVZ2 小时前
python爬虫----爬取视频实战
爬虫·python·音视频
古希腊掌管学习的神2 小时前
[LeetCode-Python版]相向双指针——611. 有效三角形的个数
开发语言·python·leetcode
m0_748244832 小时前
StarRocks 排查单副本表
大数据·数据库·python
B站计算机毕业设计超人2 小时前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
路人甲ing..2 小时前
jupyter切换内核方法配置问题总结
chrome·python·jupyter
学术头条2 小时前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学
18号房客2 小时前
一个简单的机器学习实战例程,使用Scikit-Learn库来完成一个常见的分类任务——**鸢尾花数据集(Iris Dataset)**的分类
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理·sklearn