ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

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

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

本项目是一套基于YOLOv8的森林火灾检测系统,以Fire and Smoke 火焰烟雾检测数据集为数据基础,面向火焰与烟雾两类目标完成模型训练、评估与系统应用。系统提供Web 端和 PyQt6 桌面端,支持图片、视频和摄像头输入,并集成结果查看、历史查询、模型管理与训练指标展示,适用于项目设计、课程实践和答辩展示。

一、项目简介

面向森林及其他复杂背景中的火焰、烟雾检测,使用双类别图像与目标框标注训练模型。系统提供目标定位、置信度分布、批量任务、视频采样、模型管理与历史回查,便于结合原图复核检测结果。

组成项目内容
数据集Fire and Smoke 火焰烟雾检测数据集
模型YOLOv8n
识别任务火焰与烟雾两类目标
实验资料训练参数、日志、权重与已有图表
应用端桌面界面与浏览器操作界面

二、系统功能设计

2.1 登录与功能入口

系统提供登录与注册,侧栏组织图片、批量、视频、摄像头、历史、模型和指标页面,账号分别保存任务及结果。

2.2 图片检测与置信度分布

单图支持缩放、类别筛选和目标定位,分别统计火焰与烟雾,列出坐标、尺寸、面积等明细,并展示置信度分布。置信度是模型预测分数,不能解释为火灾发生概率。

2.3 批量检测

支持多图和文件夹导入,显示进度、取消状态、逐图筛选与详情。可导出汇总 CSV、完整目标明细 CSV 和标注图片 ZIP,便于整理一批图像。

2.4 视频与摄像头

视频模块对采样帧调用模型,展示处理进度、趋势和类别统计,并生成标注视频。摄像头提供设备与采样控制。视频示例使用图片序列,累计检出次数按采样帧相加。

2.5 历史查询与结果保留

历史支持查询、删除和 CSV 导出。取消任务时保留已经完成的结果,统计与明细长期保存,方便回查处理过程。

2.6 模型与训练指标

模型页集中展示既有火焰烟雾权重与推理参数,指标页读取真实日志,展示损失、Precision、Recall 与 mAP,并区分最高轮次和最后一轮。

三、技术栈

类别技术及用途
编程语言Python、JavaScript
深度学习框架PyTorch
模型训练与推理Ultralytics YOLOv8
桌面界面PyQt6
Web 服务FastAPI
Web 前端HTML、CSS、JavaScript
图像与视频处理OpenCV、NumPy
训练日志与离线绘图Matplotlib;CSV 训练记录
结果保存Web 独立目录中的账号、任务、历史与结果文件

四、项目结构

项目将训练代码、界面、模型产物和 Web 服务分别组织,主要目录如下:

c128/ ├─ data/ ├─ douyin_article.md ├─ login_window.py ├─ main.py ├─ main_window.py ├─ models/ ├─ pages/ ├─ README.md ├─ requirements.txt ├─ runs/ ├─ train_yolo.py ├─ utils/ └─ web/ ├─ backend/ # 服务接口与推理任务 ├─ frontend/ # 页面与交互 └─ data/ # Web 独立运行数据

本文对应的训练日志位于runs/train/fire_detection_20260201_191621/results.csv。 数据集按实际配置定位;浏览器端的运行结果独立保存在 Web 数据目录。

五、数据集说明

5.1 数据集与识别任务

项目使用Fire and Smoke 火焰烟雾检测数据集,面向火焰与烟雾两类目标。每个目标由类别与边界框共同描述,模型输出位置及对应预测分数。

5.2 数据规模与划分

以下数量按当前本机配套数据目录统计;所列划分对应本项目的数据组织。

数据划分图像数量
训练集6,900
验证集862
测试集863
合计8,625

5.3 类别与标注格式

类别编号类别名称中文含义
0Fire火焰
1Smoke烟雾

YOLO 标注按每行一个目标组织:

class_id center_x center_y width height

中心点坐标与宽高采用相对图像尺寸的归一化值,图像与 TXT 标注按文件名对应。

六、模型训练过程

6.1 训练流程

训练代码由train_yolo.py组织,先读取图像、类别与划分,再加载预训练模型进行训练,并保留逐轮日志与已有权重。

  1. 按当前数据目录读取图像及对应标签。
  2. 将输入调整为实验配置的尺寸,并应用训练预处理。
  3. 加载基础模型,在对应类别上进行训练。
  4. 在验证阶段计算指标并保存日志及权重。
  5. 使用已有训练图表分析结果,并在系统中加载权重开展推理。

6.2 模型与训练参数

参数本次记录
基础模型YOLOv8n
配置轮数100
日志实际轮数100
输入尺寸640 × 640
Batch Size16
优化器配置SGD
预热轮数3.0
DataLoader Workers8

日志最后一行累计耗时为5,266.95 秒,约 87.8 分钟。 数据增强与学习率调度以本次参数记录和逐轮 CSV 为准;配置值与实际日志中的学习率分别读取。

6.3 训练产物

  • args.yaml:本次实验参数。
  • results.csv:每一轮损失、检测指标和学习率。
  • weights/:已保存的模型权重。
  • 训练图表:原始产物中的曲线、分布或评估图,见第八节。

七、训练结果与核心指标

7.1 最后一轮结果

以下为当前实验 CSV 的第100 轮验证结果:

指标日志数值百分比
Precision0.811781.170%
Recall0.7814878.148%
mAP@0.50.8517785.177%
mAP@0.5:0.950.6071560.715%

7.2 各指标最高值

指标最高值对应轮次
Precision0.82415第 85 轮
Recall0.79734第 68 轮
mAP@0.50.85216第 97 轮
mAP@0.5:0.950.60747第 95 轮

单项峰值可能出现在不同轮次;末轮表用于查看同一轮完整结果,峰值表用于查看各指标在本次训练中的最高记录。

7.3 结果分析

火焰、烟雾在颜色、透明度和边界形态上差异较大。可结合定位指标与置信度分布复核预测区域,并对复杂背景和不同目标尺度开展同划分对照。

八、可视化图表说明

以下图片直接采用源码目录已有的训练产物,保留原始图表内容与数值。

8.1 训练与验证损失

展示图中对应的损失项随训练轮次的变化,结合训练与验证结果观察拟合情况。

8.2 检测指标变化

展示对应检测指标随训练轮次的变化,数值与本文列出的原始 CSV 结果按同一实验读取。

8.3 训练结果总览

集中展示训练过程中的多项损失和评测指标,便于结合完整实验查看收敛变化。

本项目为个人原创项目,配套源码、模型权重、训练资料和项目说明,可用于毕业设计、课程实践、简历展示及个人学习。有项目成品或定制需求,可以通过主页联系作者。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进