)
基于 YOLOv8 目标检测算法实现的森林火灾与烟雾智能检测系统支持图片、视频、实时摄像头等多种输入方式的火灾与烟雾识别并提供完整的模型训练、指标可视化与检测历史管理功能。一、项目概述本系统采用 Ultralytics YOLOv8 作为检测核心针对森林火灾场景进行模型训练与部署。系统具备用户登录、模型管理、多源检测、历史记录、训练指标可视化等功能适用于森林防火监控、环境监测、无人机巡检等应用场景。二、数据集说明2.1 数据集概览项目说明数据集名称森林火灾检测数据集Fire and Smoke Detection Dataset检测类别2 类Fire火灾、Smoke烟雾图片格式JPG图片尺寸640×640 像素已统一标注格式YOLO 格式.txt2.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–10Fire火灾1Smoke烟雾三、训练过程3.1 训练流程运行train_yolo.py启动训练自动更新数据集路径到当前项目datasets/datasets加载 YOLOv8 预训练模型默认yolov8n.pt按配置进行训练并在runs/train/fire_detection_时间戳/下保存结果3.2 主要训练参数参数默认值说明epochs100训练轮数imgsz640输入图像尺寸batch16批次大小可按 GPU 显存调整device0训练设备0为 GPUcpu为 CPUoptimizerSGD优化器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.py的main()中修改resultstrainer.train(epochs100,# 训练轮数imgsz640,# 图像尺寸batch16,# 批次大小device0# GPU 或 cpu)四、训练可视化图说明训练完成后在runs/train/fire_detection_时间戳/目录下会生成以下文件文件含义results.csv每轮训练指标损失、mAP、精确率、召回率等results.png训练曲线总览损失、mAP、P、R 等随 epoch 变化loss_curves.png训练/验证损失曲线box_loss、cls_loss、dfl_lossmetrics_detailed.png详细指标曲线mAP、精确率、召回率等confusion_matrix.png混淆矩阵展示各类别预测与真实标签的对应关系F1_curve.pngF1 分数随置信度阈值变化曲线P_curve.png精确率Precision随置信度阈值变化曲线R_curve.png召回率Recall随置信度阈值变化曲线PR_curve.png精确率-召回率曲线Precision-Recalltrain_batch*.jpg**训练批次样本含 Mosaic 增强效果val_batch___labels.jpg*验证集真实标签可视化val_batch___pred.jpg*验证集预测结果可视化weights/best.pt验证集上表现最好的模型权重weights/last.pt最后一轮模型权重4.1 主要指标含义mAP50IoU 阈值为 0.5 时的平均精度均值mAP50:95IoU 从 0.5 到 0.95 步长 0.05 的平均 mAPPrecision精确率预测为正例中实际为正例的比例Recall召回率实际正例中被正确预测的比例box_loss边界框回归损失cls_loss分类损失dfl_loss分布焦点损失DFL五、系统功能5.1 功能模块模块功能说明图片识别加载本地图片进行火灾/烟雾检测展示检测框、置信度、统计信息及置信度分布视频识别加载视频文件逐帧检测可设置检测间隔实时统计检测结果摄像头识别连接摄像头进行实时检测支持检测开关与帧间隔调节检测历史查看、筛选、搜索历史检测记录支持导出 CSV 与清空模型管理加载/切换模型权重配置置信度阈值、IoU 阈值、最大检测数指标展示读取训练结果 CSV以图表展示训练曲线与 mAP、精确率、召回率等指标5.2 检测参数置信度阈值过滤低置信度检测框默认 0.25IoU 阈值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 环境准备pipinstall-rrequirements.txt8.2 启动系统python main.py启动后进入登录界面登录成功后进入主界面可进行图片/视频/摄像头检测、模型管理、历史查看、指标展示等操作。8.3 模型训练python train_yolo.py训练完成后在runs/train/fire_detection_时间戳/weights/下可找到best.pt在模型管理页加载该权重即可使用。九、训练结果示例以 100 轮训练为例最终验证集指标约mAP50~0.85mAP50:95~0.61精确率~0.81召回率~0.78具体数值以实际训练结果为准。本项目为个人原创结构清晰功能完整适合计算机视觉方向课程设计、毕业设计和项目演示使用。有定制化需求可以评论或私信作者。作者原创项目地址michael-jay.pages.dev/projects.html