基于 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

安装步骤

  1. 克隆项目
git clone <repository-url>
cd c102
  1. 创建虚拟环境(推荐)
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/macOS
source venv/bin/activate
  1. 安装依赖
pip install -r requirements.txt
  1. **下载预训练模型(可选)**如果使用默认模型路径,确保以下路径存在:
runs/train/fire_detection_20260201_191621/weights/best.pt

或者使用 datasets/best.pt 作为模型文件。

📖 使用方法

启动程序

python main.py

使用流程

  1. 登录/注册
    • 首次使用需要注册账号
    • 密码长度至少6位
    • 注册成功后使用账号登录

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

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

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

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

🎓 模型训练

准备数据集

  1. 按照 YOLO 格式组织数据集:
datasets/datasets/
├── train/
│   ├── images/
│   └── labels/
├── val/
│   ├── images/
│   └── labels/
└── test/
    ├── images/
    └── labels/
  1. 配置 datasets/fire_smoke.yaml
path: datasets/datasets
train: train/images
val: val/images
nc: 2
names:
  '0': Fire
  '1': Smoke

开始训练

python train.py

训练参数配置

train.pymain() 函数中修改训练参数:

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

📝 注意事项

  1. GPU支持:如果有NVIDIA GPU,建议安装CUDA版本的PyTorch以加速训练和检测
  2. 模型文件:确保模型文件路径正确,否则无法进行检测
  3. 摄像头权限:使用摄像头检测时,确保系统已授予摄像头访问权限
  4. 数据集路径:训练时确保数据集路径配置正确
  5. 内存要求:视频检测需要足够的系统内存,大视频文件建议分批处理

本项目为个人原创,结构清晰,功能完整,适合计算机视觉方向课程设计、毕业设计和项目演示使用。有定制化需求可以评论或私信作者。

作者原创项目地址:michael-jay.pages.dev/projects.html

posted on 2026-08-03 00:56  Jay8059  阅读(2)  评论(0)    收藏  举报

导航