基于深度学习YOLOv11的智能火灾检测系统

目录

  • 基于深度学习YOLOv11的智能火灾检测系统
    • 目录
    • 1. 系统简介
    • 2. 界面功能介绍
      • 2.1 图像检测
      • 2.2 视频检测
      • 2.3 实时摄像头检测
    • 3. 检测历史
    • 4. 模型训练
      • 4.1 准备数据集
      • 4.2 执行训练
    • 5. 代码目录介绍
    • 6. 部署与运行
    • 系统演示视频
    • 获取项目源码

1. 系统简介

本系统是一个基于 YOLOv11 目标检测算法和 Streamlit Web框架开发的智能火灾检测应用。它旨在提供一个高效、易用的工具,能够对图像、视频及实时摄像头画面进行火灾识别,为安防监控、应急响应等场景提供技术支持。

核心技术栈:

  • 模型算法: YOLOv11, PyTorch
  • 后端/Web界面: Streamlit
  • 核心库: OpenCV, Pillow, numpy

主要功能:

  • 多种检测模式: 支持静态图片、视频文件和实时摄像头三种火灾检测方式。
  • 高精度识别: 采用先进的YOLOv11模型,确保火灾检测的准确性和实时性。
  • 友好交互界面: 基于Streamlit构建,界面简洁直观,操作便捷。
  • 实时状态反馈: 在摄像头检测模式下,提供详细的运行状态、检测统计和醒目的火灾告警提示。
  • 灵活的模型训练: 提供独立的训练脚本,方便用户使用自定义数据集训练模型。
  • 结果记录与保存: 自动保存检测到火灾的图像,便于后续分析和追溯。

系统演示视频

https://www.bilibili.com/video/BV1MeKDz9EJK/


2. 界面功能介绍

系统启动后,用户可以通过页面中部选项卡在不同的功能模块间切换。

首页页面如下图所示
在这里插入图片描述

在进行检测之前,请先选择一个模型,并设置一个置信度阈值。

项目自带经过 A800显卡(18万) 训练 100轮 的模型, yolo11n(5.22MB), yolo11s(18.2MB), yolo11m(38.6MB), yolo11l(48.8MB), yolo11x(109MB) ,用户可以根据需要选择。
在这里插入图片描述

2.1 图像检测

在“图像检测”页面,用户可以上传本地的图片文件进行火灾检测。
在这里插入图片描述

  1. 选择模型: 从下拉菜单中选择一个预训练的YOLOv11模型(如 yolo11n, yolo11s 等)。

  2. 设置置信度阈值: 调整滑块设置检测的最小置信度,过滤掉低可能性的结果。

  3. 上传图片: 点击“上传图片”按钮,选择一张图片。
    在这里插入图片描述

  4. 开始检测: 上传后,系统会自动进行检测,并在界面上展示原始图片和带有检测框的标注图片。
    在这里插入图片描述

  5. 查看结果: 检测结果会以列表形式展示,包括检测到的目标数量、类别和各自的置信度。
    在这里插入图片描述

  6. 摄像头拍照: 系统还支持使用相机进行拍照,并进行火灾检测。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.2 视频检测

“视频检测”模块支持对视频文件进行逐帧火灾检测。
在这里插入图片描述

  1. 选择模型与置信度: 与图像检测类似,首先选择模型和置信度。

  2. 上传视频: 上传一个视频文件(支持 mp4, avi, mov 等格式)。
    在这里插入图片描述

  3. 开始处理: 点击“开始处理”后,系统会逐帧分析视频。处理进度会通过进度条实时显示。
    在这里插入图片描述

  4. 预览与下载: 处理完成后,用户可以在线预览带有检测结果的视频,并提供下载链接。
    在这里插入图片描述

2.3 实时摄像头检测

这是系统的核心功能之一,能够调用本地摄像头进行不间断的实时火灾监控。
在这里插入图片描述

  1. 配置检测参数:

    • 选择模型与置信度: 配置检测所用的模型和阈值。
    • 查看配置参数: 查看当前使用的摄像头、分辨率、检测频率等参数(可以在项目配置文件中轻松修改)。
  2. 启动/停止检测:

    • 点击 “启动检测”,系统会打开一个新的OpenCV窗口,显示实时摄像头画面和检测结果。
    • 在检测窗口中,按 ESC 键可随时停止检测并关闭窗口。
  3. 实时画面解读:

    • 状态信息区 (左上角): 显示当前状态(运行中/暂停)、总处理帧数、检测到火灾的次数、连续检测次数以及已运行时间。
    • 火灾告警 (屏幕中央): 当检测到火灾时,屏幕中央会出现醒目的红色 “火灾警告!!!” 字样,并显示当前检测的最高置信度。
    • 检测框: 实时在画面中用方框和标签标出检测到的火灾区域。
    • 操作提示 (左下角): 提示用户可以通过 ESC 键退出,SPACE 键暂停/恢复检测,S 键手动截图。
  4. 自动记录: 系统会自动记录每次检测到火灾的瞬间,并将带有标注的图片保存到 realtime_detection 目录下的日期文件夹中。
    在这里插入图片描述
    检测结束后可以查看统计信息,以及检测到火灾的视频帧截图。
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


3. 检测历史

为了方便用户回顾和分析检测结果,系统提供了检测历史追溯功能。检测的结果都会被记录下来。
在这里插入图片描述

可以对记录根据检测类型和检测结果进行筛选
在这里插入图片描述

  1. 查看历史记录: 在“检测历史”页面,系统会以列表形式展示所有的历史检测任务。

  2. 记录内容: 每条记录会包含检测时间、检测类型(图片/视频)、使用的模型、置信度阈值等基本信息。
    在这里插入图片描述
    在这里插入图片描述

  3. 数据持久化: 所有历史记录都保存在 data/history/detection_history.json 文件中,确保了数据的持久化存储。

4. 模型训练

本系统支持用户使用自己的数据集进行模型训练。训练过程通过 scripts/train_fire_model.py 脚本完成。

4.1 准备数据集

  1. 将您的图像文件和YOLO格式的标注文件(.txt)放入 datasets/fire_dataset 目录中,或自定义其他目录。
  2. 运行 scripts/prepare_fire_dataset.py 脚本,它会自动划分训练集和验证集,并生成 data/dataset.yaml 配置文件。

项目自带标注好的数据集
在这里插入图片描述

4.2 执行训练

打开终端,进入项目根目录,执行以下命令:

python scripts/train_fire_model.py --model yolo11s --epochs 100 --batch-size 16

常用参数说明:

  • --model: 选择YOLOv11的模型大小 (yolo11n, yolo11s, yolo11m, yolo11l, yolo11x)。
  • --epochs: 训练的总轮数。
  • --batch-size: 每个批次的图片数量。
  • --learning-rate: 学习率。
  • --device: 指定训练设备,如 cpu, cuda:0, 或 mps (macOS)。默认为 auto
  • --resume: 从上一个断点恢复训练。
  • --prepare-data: 在训练前自动执行数据集准备脚本。

训练完成后,最佳模型权重(best.pt)和训练报告将保存在 models/training/ 目录下。
在这里插入图片描述

confusion_matrix.png

confusion_matrix.png

confusion_matrix.png

confusion_matrix.png

confusion_matrix_normalized.png

confusion_matrix_normalized.png

F1_curve.png

F1_curve.png

labels.jpg

在这里插入图片描述

P_curve.png

P_curve.png"

PR_curve.png

PR_curve.png

R_curve.png

在这里插入图片描述

results.png

results.png

train_batch0.jpg

train_batch0.jpg

val_batch0_labels.jpg

val_batch0_labels.jpg

val_batch0_pred.jpg

val_batch0_pred.jpg


5. 代码目录介绍

.yolo11_fire_detection/
├── config/               # 配置文件目录
│   ├── app_config.yaml   # 应用配置
│   └── model_config.yaml # 模型配置
├── data/                 # 处理后的数据集
├── datasets/             # 原始数据集
├── models/               # 存放训练好的模型权重
├── scripts/              # 辅助脚本
│   ├── prepare_fire_dataset.py # 数据集准备脚本
│   └── train_fire_model.py     # 模型训练脚本
├── src/                  # 项目源码
│   ├── app/              # Streamlit应用界面代码
│   │   └── 🔥_火灾检测系统.py
│   ├── models/           # 模型加载与训练逻辑
│   │   └── fire_detector.py
│   ├── services/         # 核心服务(检测、图像/视频处理)
│   │   └── detection_service.py
│   └── utils/            # 工具类(配置、日志、文件操作)
├── run.py                # 项目主启动文件
└── requirements.txt      # Python依赖

6. 部署与运行

  1. 下载项目

  2. 创建并激活Conda环境

    conda create -n yolo11_fire python=3.9
    conda activate yolo11_fire
    
  3. 安装依赖

    pip install -r requirements.txt
    
  4. 启动系统

    python run.py
    
  5. 系统启动后,会自动在浏览器中打开应用界面,默认地址为 http://localhost:9000

系统演示视频

https://www.bilibili.com/video/BV1MeKDz9EJK/

获取项目源码

https://tcn196ka4swf.feishu.cn/wiki/SkfDw89NfitoFfk952Bcrg32nVg

包含以下内容:

项目源代码

数据集

训练好的模型(经过 A800显卡(18万) 训练 100轮 的5个模型, yolo11n(5.22MB), yolo11s(18.2MB), yolo11m(38.6MB), yolo11l(48.8MB), yolo11x(109MB) ,用户可以根据需要选择。)

对应指标可视化图像

使用和部署文档
在这里插入图片描述
项目架构说明文档
在这里插入图片描述

原创精品 盗版必究

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐