基于 YOLOv8 的森林火灾检测系统(全套源码+数据集)
基于 YOLOv8 的森林火灾和烟雾智能检测系统,提供图形化界面,支持图片、视频和实时摄像头检测。
📋 项目简介
本项目是一个基于深度学习的森林火灾检测系统,使用 YOLOv8 目标检测模型,能够准确识别图像和视频中的火灾和烟雾。系统提供友好的图形界面,支持用户登录注册、历史记录查询、训练指标可视化等功能。
✨ 功能特性
🔍 检测功能
- 图片检测:支持 JPG、PNG、BMP 等常见图片格式
- 视频检测:支持 MP4、AVI、MOV、MKV 等视频格式,可保存检测结果
- 实时检测:支持摄像头实时检测,实时显示检测结果
📊 系统功能
- 用户管理:用户注册、登录功能
- 历史记录:自动保存检测历史,支持查询和删除
- 模型管理:支持切换不同的训练模型
- 训练可视化:可视化训练指标和损失曲线
- 结果保存:检测结果可保存为图片或视频
🎨 界面特色
- 现代化的绿色主题界面
- 直观的操作流程
- 实时显示检测统计信息
- 美观的结果展示
🛠️ 技术栈
- 深度学习框架:PyTorch, Ultralytics YOLOv8
- 图形界面:PyQt6
- 图像处理:OpenCV, NumPy
- 数据处理:Pandas, Matplotlib
- 其他:PyYAML, Pillow
📁 项目结构
c102/
├── main.py # 主程序入口(图形界面)
├── detector.py # 检测功能模块
├── database.py # 数据库管理模块
├── train.py # 模型训练脚本
├── visualize_training.py # 训练结果可视化脚本
├── requirements.txt # 依赖包列表
├── data/ # 数据存储目录
│ ├── users.json # 用户数据
│ └── history.json # 检测历史记录
├── datasets/ # 数据集目录
│ ├── fire_smoke.yaml # 数据集配置文件
│ ├── classes.txt # 类别名称文件
│ ├── best.pt # 预训练模型权重
│ └── datasets/ # 训练数据集
│ ├── train/ # 训练集
│ ├── val/ # 验证集
│ └── test/ # 测试集
└── runs/ # 训练结果目录
└── train/
└── fire_detection_*/ # 训练输出
├── weights/ # 模型权重
├── results.csv # 训练指标
└── *.png # 可视化图表
🚀 安装说明
环境要求
- Python 3.8+
- CUDA(可选,用于GPU加速)
- Windows/Linux/macOS
安装步骤
- 克隆项目
git clone <repository-url>
cd c102
- 创建虚拟环境(推荐)
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/macOS
source venv/bin/activate
- 安装依赖
pip install -r requirements.txt
- **下载预训练模型(可选)**如果使用默认模型路径,确保以下路径存在:
runs/train/fire_detection_20260201_191621/weights/best.pt
或者使用 datasets/best.pt 作为模型文件。
📖 使用方法
启动程序
python main.py
使用流程
- 登录/注册
- 首次使用需要注册账号
- 密码长度至少6位
- 注册成功后使用账号登录

- 加载模型
- 系统会自动加载默认模型
- 可在"模型选择"页面切换其他模型

- 图片检测
- 点击"图片检测"页面
- 选择图片文件
- 点击"开始检测"
- 查看检测结果,可保存结果图片

- 视频检测
- 点击"视频检测"页面
- 选择视频文件
- 点击"开始检测"
- 选择保存路径
- 等待处理完成
- 摄像头检测
- 点击"摄像头检测"页面
- 点击"开启摄像头"
- 实时查看检测结果
- 点击"停止检测"结束
- 查看历史记录
- 点击"历史记录"页面
- 查看所有检测历史
- 可删除不需要的记录

- 训练指标可视化
- 点击"训练指标可视化"页面
- 输入训练结果路径
- 点击"加载指标"查看训练曲线

🎓 模型训练
准备数据集



- 按照 YOLO 格式组织数据集:
datasets/datasets/
├── train/
│ ├── images/
│ └── labels/
├── val/
│ ├── images/
│ └── labels/
└── test/
├── images/
└── labels/
- 配置
datasets/fire_smoke.yaml:
path: datasets/datasets
train: train/images
val: val/images
nc: 2
names:
'0': Fire
'1': Smoke
开始训练
python train.py
训练参数配置
在 train.py 的 main() 函数中修改训练参数:
trainer.train(
epochs=100, # 训练轮数
imgsz=640, # 图像尺寸
batch=16, # 批次大小(根据GPU显存调整)
device='0' # '0' for GPU, 'cpu' for CPU
)
训练结果
训练完成后,结果保存在 runs/train/fire_detection_<timestamp>/ 目录下:
weights/best.pt- 最佳模型权重weights/last.pt- 最后一轮模型权重results.csv- 训练指标CSV文件*.png- 各种可视化图表



可视化训练结果
python visualize_training.py
或修改脚本中的CSV路径后运行。
📊 检测类别
- Fire (火灾):检测图像中的火焰
- Smoke (烟雾):检测图像中的烟雾
⚙️ 配置说明
模型配置
- 默认模型路径:
runs/train/fire_detection_20260201_191621/weights/best.pt - 可在"模型选择"页面切换其他
.pt模型文件
检测参数
- 置信度阈值:默认 0.25(可在代码中修改)
- 输入图像尺寸:640x640
📝 注意事项
- GPU支持:如果有NVIDIA GPU,建议安装CUDA版本的PyTorch以加速训练和检测
- 模型文件:确保模型文件路径正确,否则无法进行检测
- 摄像头权限:使用摄像头检测时,确保系统已授予摄像头访问权限
- 数据集路径:训练时确保数据集路径配置正确
- 内存要求:视频检测需要足够的系统内存,大视频文件建议分批处理
本项目为个人原创,结构清晰,功能完整,适合计算机视觉方向课程设计、毕业设计和项目演示使用。有定制化需求可以评论或私信作者。
作者原创项目地址:michael-jay.pages.dev/projects.html
浙公网安备 33010602011771号