Skip to content

Latest commit

 

History

History

README.md

Python YOLOv8 工厂 AI 火灾防控代码包

这是一个面向项目展示、课程设计和二次开发的完整代码骨架。工程以 Ultralytics YOLOv8 完成目标检测,再通过连续帧、目标关联和固定区域规则识别火情、吸烟、违规动火、消防通道占用及灭火器缺失。

本仓库不包含真实训练数据、训练好的模型权重、摄像头凭据或生产告警密钥,因此不承诺下载后直接运行。源码模块、配置、调用入口和模拟测试均保持相互对应。

识别类别

编号 英文名称 中文含义
0 flame 明火
1 smoke 烟雾
2 cigarette 香烟
3 welding 焊接
4 spark 火花
5 person 人员
6 vehicle 车辆
7 material_stack 物料堆
8 fire_extinguisher 灭火器
9 exit_sign 安全出口标志

主要功能

  • YOLOv8 模型加载和统一 Detection 输出。
  • 通过 Ultralytics 官方 model.track 接入 ByteTrack 目标轨迹编号。
  • 数据集结构、标签字段、类别编号和归一化坐标检查。
  • 训练、验证、断点续训配置和 ONNX 等格式导出。
  • 图片、视频、本地摄像头及 RTSP 流推理入口。
  • 火焰/烟雾持续检测、人员/香烟关联、禁火区和时段判断。
  • 消防通道与安全出口占用、固定灭火器点位缺失判断。
  • 告警冷却、事件截图、JSONL、CSV 和模拟 Webhook。
  • 模型类别、规则阈值、摄像头区域和视频参数的严格校验。
  • 不依赖模型权重的五场景 Mock 演示、规则测试和端到端测试。
  • D-Fire 两类预训练配置和 Pyronear 时序烟雾 AI 可选适配器。

工程目录

.
├─ configs/                 YAML 配置
├─ data/                    YOLO 数据占位目录
├─ docs/                    中文专项说明
├─ outputs/                 训练、推理和告警输出
├─ scripts/                 命令行入口
├─ src/factory_fire_ai/
│  ├─ alerts.py             告警冷却、日志、截图和 Webhook
│  ├─ config.py             配置加载
│  ├─ dataset.py            数据集检查
│  ├─ detector.py           YOLOv8 检测器
│  ├─ external_temporal.py  外部时序 AI 模型适配器
│  ├─ demo.py               无权重五场景演示
│  ├─ geometry.py           区域与关联判断
│  ├─ media.py              图片/视频输入输出
│  ├─ models.py             公共数据类型
│  ├─ pipeline.py           主处理流水线
│  ├─ rules.py              业务规则引擎
│  ├─ training.py           训练、验证、导出
│  └─ visualization.py      画框和区域绘制
├─ tests/                   模拟测试
└─ weights/                 模型权重占位目录

示例使用方法

如需实际尝试代码,应先准备 Python 3.10+,然后在项目根目录安装:

python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e ".[test]"

不准备模型和数据时,优先运行完整 Mock 演示:

python scripts/demo_mock.py

命令会在 outputs/mock_demo 下建立独立会话目录,生成带框视频、五类事件截图、JSONL、CSV 和 summary.json。添加 --no-video 可以只检查业务链路。

检查数据集:

python scripts/check_dataset.py --data configs/dataset.yaml

训练和验证:

python scripts/train.py --config configs/train.yaml
python scripts/validate.py --weights weights/best.pt
python scripts/export.py --weights weights/best.pt --format onnx

使用 D-Fire 公开数据进行火焰/烟雾第一阶段预训练:

python scripts/train.py --config configs/train_dfire.yaml

图片、视频和摄像头识别:

python scripts/infer_image.py --source samples/factory.jpg
python scripts/infer_video.py --source samples/factory.mp4
python scripts/infer_camera.py --source 0 --display

输出说明

  • outputs/image_result.jpg:图片识别结果。
  • outputs/video_result.mp4:视频识别结果。
  • outputs/camera_result.mp4:摄像头录像结果。
  • outputs/alerts/incidents.jsonl:完整结构化事件。
  • outputs/alerts/incidents.csv:便于表格查看的事件清单。
  • outputs/alerts/snapshots/:通过冷却检查的告警截图。
  • outputs/mock_demo/:无需权重的五场景模拟演示。

重要说明

本工程属于视觉识别示例,不能替代消防报警主机、烟感探测器、人工巡检或依法要求的消防设施。生产使用前必须重新采集本厂数据、评估误报漏报、配置权限和网络安全,并由消防安全责任人确认告警处置流程。

详细内容参见 docs 目录,外部参考仓库及许可证注意事项见 docs/reference-projects.md。

AI 代码来源

本工程没有声称自行实现 YOLO 神经网络。训练、推理、验证和导出调用 Ultralytics 官方代码;图像与视频处理调用 OpenCV。D-Fire 数据集、火灾时序研究代码、ByteTrack 和 Pyronear 时序模型作为数据或算法依据。各部分的来源、许可证以及本仓库自行实现范围见 THIRD_PARTY_NOTICES.mddocs/reference-projects.md

为便于课程审查和复现实验,configs/upstream_sources.yaml 进一步记录了核对过的上游版本、Git 提交哈希及许可证;Python 依赖固定为对应的 Ultralytics 版本。