原创项目合集 基于 YOLOv8 的森林火灾检测系统

基于 YOLOv8 的森林火灾检测系统

一、项目概述

基于 YOLOv8 目标检测算法实现的森林火灾与烟雾智能检测系统,支持图片、视频、实时摄像头等多种输入方式的火灾与烟雾识别,并提供完整的模型训练、指标可视化与检测历史管理功能。

本系统采用 Ultralytics YOLOv8 作为检测核心,针对森林火灾场景进行模型训练与部署。系统具备用户登录、模型管理、多源检测、历史记录、训练指标可视化等功能,适用于森林防火监控、环境监测、无人机巡检等应用场景。

二、数据集说明

基于 YOLOv8 的森林火灾检测系统项目截图1 基于 YOLOv8 的森林火灾检测系统项目截图1

2.1 数据集概览

项目说明
数据集名称森林火灾检测数据集(Fire and Smoke Detection Dataset)
检测类别2 类:Fire(火灾)Smoke(烟雾)
图片格式JPG
图片尺寸640×640 像素(已统一)
标注格式YOLO 格式(.txt)

2.2 数据规模

数据集图片数量标注数量占比
训练集 (train)6,900 张6,900 个~80%
验证集 (val)862 张862 个~10%
测试集 (test)863 张863 个~10%
总计8,625 张8,625 个100%

2.3 目录结构

datasets/
├── fire_smoke.yaml          # YOLO 数据集配置文件
├── classes.txt              # 类别名称
└── datasets/
    ├── train/
    │   ├── images/          # 训练图片(6,900 张)
    │   └── labels/          # 训练标注
    ├── val/
    │   ├── images/          # 验证图片(862 张)
    │   └── labels/          # 验证标注
    └── test/
        ├── images/          # 测试图片(863 张)
        └── labels/          # 测试标注

2.4 标注格式(YOLO)

每行格式:class_id x_center y_center width height(归一化坐标 0–1)

  • 0:Fire(火灾)
  • 1:Smoke(烟雾)

三、训练过程

3.1 训练流程

  1. 运行 train_yolo.py 启动训练
  2. 自动更新数据集路径到当前项目 datasets/datasets
  3. 加载 YOLOv8 预训练模型(默认 yolov8n.pt
  4. 按配置进行训练,并在 runs/train/fire_detection_<时间戳>/ 下保存结果

3.2 主要训练参数

参数默认值说明
epochs100训练轮数
imgsz640输入图像尺寸
batch16批次大小(可按 GPU 显存调整)
device'0'训练设备('0' 为 GPU,'cpu' 为 CPU)
optimizerSGD优化器
lr00.01初始学习率
lrf0.01最终学习率
momentum0.937动量
weight_decay0.0005权重衰减
warmup_epochs3.0预热轮数
cos_lrTrue余弦学习率调度
close_mosaic10最后 10 轮关闭 Mosaic 增强
ampTrue自动混合精度训练
mosaic1.0Mosaic 数据增强概率
fliplr0.5左右翻转概率

3.3 修改训练参数

train_yolo.pymain() 中修改:

results = trainer.train(
    epochs=100,        # 训练轮数
    imgsz=640,         # 图像尺寸
    batch=16,           # 批次大小
    device='0'          # GPU 或 'cpu'
)

四、训练可视化图说明

基于 YOLOv8 的森林火灾检测系统项目截图1 基于 YOLOv8 的森林火灾检测系统项目截图2 基于 YOLOv8 的森林火灾检测系统项目截图3 基于 YOLOv8 的森林火灾检测系统项目截图4

训练完成后,在 runs/train/fire_detection_<时间戳>/ 目录下会生成以下文件:

文件含义
results.csv每轮训练指标(损失、mAP、精确率、召回率等)
results.png训练曲线总览(损失、mAP、P、R 等随 epoch 变化)
loss_curves.png训练/验证损失曲线(box_loss、cls_loss、dfl_loss)
metrics_detailed.png详细指标曲线(mAP、精确率、召回率等)
confusion_matrix.png混淆矩阵,展示各类别预测与真实标签的对应关系
F1_curve.pngF1 分数随置信度阈值变化曲线
P_curve.png精确率(Precision)随置信度阈值变化曲线
R_curve.png召回率(Recall)随置信度阈值变化曲线
PR_curve.png精确率-召回率曲线(Precision-Recall)
_train_batch__.jpg_*训练批次样本(含 Mosaic 增强效果)
_val_batch___labels.jpg_*验证集真实标签可视化
_val_batch___pred.jpg_*验证集预测结果可视化
weights/best.pt验证集上表现最好的模型权重
weights/last.pt最后一轮模型权重

4.1 主要指标含义

  • mAP@50:IoU 阈值为 0.5 时的平均精度均值
  • mAP@50:95:IoU 从 0.5 到 0.95 步长 0.05 的平均 mAP
  • Precision(精确率):预测为正例中实际为正例的比例
  • Recall(召回率):实际正例中被正确预测的比例
  • box_loss:边界框回归损失
  • cls_loss:分类损失
  • dfl_loss:分布焦点损失(DFL)

五、系统功能

5.1 功能模块

模块功能说明
图片识别加载本地图片,进行火灾/烟雾检测,展示检测框、置信度、统计信息及置信度分布
视频识别加载视频文件,逐帧检测,可设置检测间隔,实时统计检测结果
摄像头识别连接摄像头进行实时检测,支持检测开关与帧间隔调节
检测历史查看、筛选、搜索历史检测记录,支持导出 CSV 与清空
模型管理加载/切换模型权重,配置置信度阈值、IoU 阈值、最大检测数
指标展示读取训练结果 CSV,以图表展示训练曲线与 mAP、精确率、召回率等指标
基于 YOLOv8 的森林火灾检测系统项目截图1 基于 YOLOv8 的森林火灾检测系统项目截图2 基于 YOLOv8 的森林火灾检测系统项目截图3 基于 YOLOv8 的森林火灾检测系统项目截图4 基于 YOLOv8 的森林火灾检测系统项目截图5 基于 YOLOv8 的森林火灾检测系统项目截图1

5.2 检测参数

  • 置信度阈值:过滤低置信度检测框(默认 0.25)
  • IoU 阈值:NMS 时的重叠阈值(默认 0.45)
  • 最大检测数:单张图最大保留检测框数量(默认 300)

六、项目技术栈

类别技术
深度学习PyTorch、Ultralytics YOLOv8
图像处理OpenCV、NumPy、Pillow
界面PyQt6
数据处理Pandas、NumPy
可视化Matplotlib
配置PyYAML
其他SciPy、tqdm

七、项目结构

c128/
├── main.py                 # 程序入口
├── login_window.py         # 登录/注册窗口
├── main_window.py          # 主窗口(侧边栏 + 页面切换)
├── train_yolo.py           # YOLOv8 模型训练脚本
├── requirements.txt       # 依赖列表
├── README.md               # 项目说明
│
├── pages/                  # 功能页面
│   ├── image_page.py       # 图片识别页
│   ├── video_page.py       # 视频识别页
│   ├── camera_page.py      # 摄像头识别页
│   ├── history_page.py     # 检测历史页
│   ├── model_page.py       # 模型管理页
│   └── metrics_page.py     # 指标展示页
│
├── utils/                  # 工具模块
│   ├── detector.py         # YOLOv8 推理封装
│   ├── auth.py             # 登录/注册逻辑
│   ├── config.py           # 配置读写
│   ├── history_db.py       # 检测历史数据库
│   ├── paths.py            # 路径常量
│   └── styles.py           # 界面样式
│
├── data/                   # 运行时数据
│   ├── config.json         # 用户配置(模型路径、检测参数)
│   └── users.json          # 用户数据
│
├── datasets/               # 数据集
│   ├── fire_smoke.yaml     # 数据集配置
│   └── datasets/           # 训练/验证/测试数据
│
└── runs/train/             # 训练输出
    └── fire_detection_*/   # 每次训练的结果目录
        ├── weights/        # 模型权重
        ├── results.csv     # 训练指标
        └── *.png           # 可视化图表

八、运行说明

8.1 环境准备

pip install -r requirements.txt

8.2 启动系统

python main.py

启动后进入登录界面,登录成功后进入主界面,可进行图片/视频/摄像头检测、模型管理、历史查看、指标展示等操作。

8.3 模型训练

python train_yolo.py

训练完成后,在 runs/train/fire_detection_<时间戳>/weights/ 下可找到 best.pt,在模型管理页加载该权重即可使用。

九、训练结果示例

以 100 轮训练为例,最终验证集指标约:

  • mAP@50:~0.85
  • mAP@50:95:~0.61
  • 精确率:~0.81
  • 召回率:~0.78

具体数值以实际训练结果为准。

本项目为个人原创,结构清晰,功能完整,适合课程设计、毕业设计和个人学习使用。如需购买项目成品或定制化需求可以联系作者。

微信二维码
Jay 微信二维码