【YOLO 系列】基于YOLO V8的火灾烟雾监控检测识别系统【python源码+Pyqt5界面+数据集+训练代码】

摘要:

火灾烟雾的及时检测对于人们的生命财产安全至关重要。然而,在大多数情况下,火灾往往在被发现时已经进展到了难以控制的阶段,这导致了严重的后果。为了解决这一问题,我们提出了基于深度学习技术的火灾烟雾检测系统。本项目使用了Yolov8算法,该算法是一种高效的目标检测算法,能够在图像中快速准确地检测出各种目标。我们将其应用于火灾烟雾检测,以提高火灾的及时识别和响应能力。数据集的选择是本项目成功的关键之一。我们收集了大量的火灾烟雾图像,并进行了标注,以供模型训练使用。这些数据涵盖了不同环境下的火灾烟雾情况,确保了模型的泛化能力和鲁棒性。

在训练过程中,我们采用了迁移学习的方法,将预训练的Yolov8模型与我们的火灾烟雾数据集相结合,进行了进一步的微调和优化。通过这种方式,我们成功地提高了模型在火灾烟雾检测任务上的性能和准确率。

本项目的最终目标是将训练好的模型应用于实际场景中,帮助人们及时发现火灾并采取有效的措施进行应对。基于该项目,我们提供了一个可视化界面,可以通过界面进行操作。

本系统支持的功能包括训练模型的导入、初始化;置信分与IOU阈值的调节、图像上传、检测、可视化结果展示、结果导出与结束检测;视频的上传、检测、可视化结果展示、结果导出与结束检测;摄像头的上传、检测、可视化结果展示与结束检测;已检测目标列表、位置信息;以及推理用时。本博文提供了完整的Python代码和使用教程,适合新入门的朋友参考,完整代码资源文件请转至文末的下载链接

优势:

  1. 高效性和准确性: Yolov8算法在目标检测方面具有出色的性能,能够在图像中快速准确地检测出火灾烟雾,提高了火灾检测的效率和准确性。

  2. 泛化能力: 通过使用大量的火灾烟雾图像进行训练,并在不同环境下进行验证,我们的模型具有良好的泛化能力,可以适应各种复杂的场景。

  3. 实时性: Yolov8算法能够实时处理图像数据,使得火灾烟雾检测系统能够及时响应,减少了火灾发生后的反应时间,有助于及早发现火灾并采取措施。

应用场景:

  1. 智能安防系统: 将火灾烟雾检测技术应用于智能安防系统中,可以及时发现火灾,并通过联动控制系统进行报警和灭火,提升建筑物的安全性。

  2. 城市监控系统: 在城市监控系统中部署火灾烟雾检测技术,可以帮助城市管理者及时发现火灾隐患,提高城市的火灾应急响应能力,保障公共安全。

  3. 工业安全监测: 在工厂、仓库等场所使用火灾烟雾检测技术,可以预防火灾事故的发生,保护工人的生命财产安全,提高工业生产的可持续性。


一、软件核心功能介绍及效果演示

软件主要功能

  1. 支持图片、图片批量、视频及摄像头进行检测,同时摄像头可支持内置摄像头和外设摄像头

  2. 可对检测结果进行单独分析,并且显示单个检测物体的坐标、置信度等;

  3. 界面可实时显示目标位置检测结果检测时间置信度检测结果回滚等信息;

  4. 支持图片视频摄像头的结果保存,将检测结果保持为excel文件;

界面参数设置说明

  1. 标签4 摄像头源/相机/网络源

  2. 标签5 交并比阈值:目标检测时的iou参数,只有目标检测框的交并比大于该值,结果才会显示;

  3. 标签6 置信度阈值:目标检测时的conf参数,只有检测出的目标置信度大于该值,结果才会显示;

  4. 标签7 显卡选择:在进行推理时是否使用显卡,默认勾选(使用显卡);

  5. 标签8 半精度选择:启用半精度(FP16)推理,可加快支持的 GPU 上的模型推理速度,同时将对精度的影响降至最低,默认不勾选(不适应半精度);

  6. 标签9 图片推理尺寸: 在推理时将推理图片固定的尺寸;

  7. 标签10 数据集的配置文件:数据集在训练时的配置文件(.yaml);

  8. 标签11 训练好的模型:最终要进行推理的模型,一般选择最优的一个模型;

  9. 标签12 类别名:该项目的所有类别,可以方便在后续查看某一个类别。

视频演示

基于YOLO V8的火灾烟雾监控检测识别系统

图片检测演示

  1. 点击打开图片按钮,选择需要检测的图片,或者点击打开文件夹按钮,选择需要批量检测图片所在的文件夹,操作演示如下:

  2. 点击表格中的指定行,界面会显示该行表格所写的信息内容。

视频检测演示

  1. 点击视频按钮图标,打开选择需要检测的视频,在点击开始运行会自动显示检测结果。再次点击停止按钮,会停止检测视频。

  2. 点击表格中的指定行,界面会显示该行表格所写的信息内容。

摄像头检测演示

  1. 选择相机源中输入需要检测的摄像头(可以是电脑自带摄像头,也可以是外接摄像头,视频流等方式),然后点击摄像头图标来固定选择的推理流方式,最后在点击开始运行即可开始检测,当点击停止运行时则关闭摄像头检测。

  2. 点击表格中的指定行,界面会显示该行表格所写的信息内容。

检测结果保存

点击导出数据按钮后,会将当前选择的图片【含批量图片】、视频或者摄像头的检测结果进行保存为excel文档,结果会存储在output目录下,保存内容如下:

环境搭建

创建专属环境

conda create -n yolo python==3.8

 激活专属环境

conda activate yolo

安装torch-GPU库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple "torch-2.0.1+cu118-cp38-cp38-win_amd64.whl"

安装torchvision-GPU库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple "torchvision-0.15.2+cu118-cp38-cp38-win_amd64.whl"

安装ultralytics库

pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple

测试环境

yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'

此时就表明环境安装成功!!!

安装图形化界面库 pyqt5

pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple

算法原理

YOLOv8是一种前沿的深度学习技术,它基于先前YOLO版本在目标检测任务上的成功,进一步提升了性能和灵活性,在精度和速度方面都具有尖端性能。在之前YOLO 版本的基础上,YOLOv8 引入了新的功能和优化,使其成为广泛应用中各种物体检测任务的理想选择。主要的创新点包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。

YOLOv8目标检测算法具有如下的几点优势:

(1)更友好的安装/运行方式;

(2)速度更快、准确率更高;

(3)新的backbone,将YOLOv5中的C3更换为C2F;

(4)YOLO系列第一次使用anchor-free;

(5)新的损失函数。

YOLO各版本性能对比

网络结构

YOLOv8模型的整体结构如下图所示:

YOLOv8与YOLOv5模型最明显的差异是使用C2F模块替换了原来的C3模块;另外Head 部分变化最大,从原先的耦合头变成了解耦头,并且从 YOLOv5 的 Anchor-Based 变成了 Anchor-Free

YOLOv8的网络架构包含了多个关键组件,这些组件共同工作以实现快速而准确的目标检测。首先是其创新的特征提取网络(Backbone),YOLOv8的Backbone采用了最新的网络设计理念,通过深层次的特征融合和精细的特征提取策略来增强对目标的识别能力。这一策略的成功关键在于其特征提取器能够充分捕获目标的细微特征,同时保持计算效率。

YOLOv8在训练策略上也进行了优化。与YOLOv7相比,YOLOv8采用了SPFF(Spatial Pyramid Fusion Fast)策略,该策略通过高效的多尺度特征融合提高了模型对不同大小目标的检测能力。此外,YOLOv8在训练过程中引入了一种名为Task Aligned Assigner的新技术,这种技术能够更精准地将预测框与真实目标对齐,从而提高检测的准确率。

在损失函数的设计上,YOLOv8进行了创新,采用了JFL(Joint Family Losses),这是一种集成了多个损失函数的复合损失函数,能够同时优化目标检测的多个方面。这些损失函数包括用于提升模型对目标位置和大小预测准确性的CIOU Loss,以及优化分类准确性的分类损失函数。JFL的设计允许YOLOv8更全面地考虑检测任务中的不同需求,通过协调各种损失来提升总体的性能。

YOLOv8的原理不仅在于其创新的技术点,更在于这些技术如何被综合应用于解决实际的目标检测问题。通过其精心设计的网络架构、高效的训练策略以及综合的损失函数设计,YOLOv8实现了在保持实时性的同时,提高了在复杂场景下的检测准确率。这些改进使得YOLOv8成为了一个强大的工具,适用于从自动驾驶到智能视频监控等多种应用场景。

四、模型的训练、评估与推理

数据集准备

本文使用的火灾烟雾数据集共包含979张图片,一共有3类,分别为['Fire', 'default', 'smoke']。部分数据集及类别信息如下:

图片数据集的存放格式如下,在项目目录中新建VOCData目录,同时将图片放入images目录下。

模型训练

数据准备完成后,通过调用train.py文件进行模型训练,epochs参数用于调整训练的轮数,代码如下:

yolo detect train data=./VOCData/myvoc.yaml model=yolov8n.yaml pretrained=./weights/yolov8n.pt epochs=100 imgsz=640
from ultralytics import YOLO

# build from YAML and transfer weights
model = YOLO('yolov8n.yaml').load('./weights/yolov8n.pt')

# Train the model
results = model.train(data='./VOCData/myvoc.yaml', epochs=100, imgsz=640)

训练结果分析

YOLOv8在训练结束后,可以在runs/目录下找到训练过程及结果文件,如下所示:

P_curve.png

confusion_matrix_normalized.png

训练 batch

验证 batch

模型推理

模型训练完成后,可以得到一个最佳的训练结果模型best.pt文件,在runs/trian/weights目录下。我们通过使用该文件进行后续的推理检测。

图片检测代码如下:

yolo detect predict model=./runs/detect/train/weights/best.pt source=./img save=True device=0
from ultralytics import YOLO

# Load a model
model = YOLO('./runs/detect/train/weights/best.pt')

# Run batched inference on a list of images
model.predict("./img", imgsz=640, save=True, device=0)

执行上述代码后,会将执行的结果直接标注在图片上,结果如下:

关于该系统涉及到的完整源码、UI界面代码、数据集、训练代码、测试图片视频等相关文件,均已打包上传,感兴趣的小伙伴可以通过下载链接自行获取。

五、获取方式

本文涉及到的完整全部程序文件:包括 python源码、数据集、训练好的结果文件、训练代码、UI源码、测试图片视频等(见下图),获取方式见文末:

注意:该代码基于Python3.8开发,运行界面的主程序为GUI.py,其他测试脚本说明见上图。为确保程序顺利运行,请按照requirements.txt配置软件运行所需环境。

关注下方公众号:【AI算法与电子竞赛】,发送【YOLO系列源码】即可获取下载方式

六、链接作者

欢迎关注我的公众号:@AI算法与电子竞赛

硬性的标准其实限制不了无限可能的我们,所以啊!少年们加油吧!

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-04-28 20:38:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-28 20:38:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-28 20:38:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-28 20:38:02       18 阅读

热门阅读

  1. AI作画算法原理详解

    2024-04-28 20:38:02       10 阅读
  2. [GN] 车300笔试记

    2024-04-28 20:38:02       10 阅读
  3. Linux制作docker镜像

    2024-04-28 20:38:02       12 阅读
  4. 前端初学者必读的 Web Workers指南

    2024-04-28 20:38:02       11 阅读
  5. AI生成音乐

    2024-04-28 20:38:02       12 阅读
  6. 2024年通信安全员题库及答案

    2024-04-28 20:38:02       11 阅读
  7. 第一个爬虫:获取演员表

    2024-04-28 20:38:02       12 阅读