# 基于python自动识别货源的毕业设计 **Repository Path**: zhang-bq/FireDetectionSystem ## Basic Information - **Project Name**: 基于python自动识别货源的毕业设计 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-28 - **Last Updated**: 2025-05-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FireDetectionSystem ## 项目简介 FireDetectionSystem 是一个基于计算机视觉和深度学习技术的火灾检测系统。该系统能够实时分析视频流或图像,自动识别出火源,并发出警报。系统采用 YOLOv8 模型进行目标检测,结合多种图像处理技术,提高检测的准确性和鲁棒性。 ## 项目结构 ``` FireDetectionSystem/ ├── app/ # 主应用目录 │ ├── main.py # FastAPI 应用入口,提供 Web API │ ├── detect/ # 检测模块 │ │ └── fire_detector.py # 火源检测核心逻辑 │ ├── train/ # 训练模块 │ │ ├── train_fire_detector.py # 模型训练脚本 │ │ └── dataset/ # 数据集配置 │ │ └── fire_dataset.yaml # 数据集配置文件 │ ├── models/ # 模型文件目录 │ │ └── best.pt # 训练好的模型文件 │ ├── utils/ # 工具函数 │ │ └── plots.py # 绘图工具 │ └── db/ # 数据库模块 │ └── models.py # 数据库模型定义 ├── ui/ # 前端应用目录 │ └── frontend/ # Vue.js 前端项目 │ ├── src/ # 源代码目录 │ ├── public/ # 静态资源目录 │ ├── package.json # 项目依赖配置 │ ├── vue.config.js # Vue 项目配置 │ └── babel.config.js # Babel 配置 ├── dataset/ # 数据集目录 │ ├── images/ # 图像数据 │ │ ├── train/ # 训练集图像 │ │ └── val/ # 验证集图像 │ └── labels/ # 标注数据 ├── requirements.txt # 项目依赖 └── README.md # 项目说明文档 ``` ## 模块说明 ### 1. 主应用模块 (`app/main.py`) - **功能**:提供 Web API 接口,接收图像或视频流,调用检测模块进行分析,并返回检测结果。 - **工作流程**: 1. 接收用户上传的图像或视频。 2. 调用 `fire_detector.py` 中的检测函数。 3. 返回检测结果(是否检测到火源、置信度、边界框等)。 ### 2. 检测模块 (`app/detect/fire_detector.py`) - **功能**:核心检测逻辑,负责分析图像,识别火源。 - **工作流程**: 1. **图像预处理**:调整图像大小,转换为模型输入格式。 2. **模型推理**:使用 YOLOv8 模型进行目标检测。 3. **结果分析**: - 统计置信度大于 0.2 的检测框数量。 - 如果数量大于等于 10,判定为存在火源。 4. **返回结果**:返回检测结果,包括置信度、边界框坐标等。 ### 3. 训练模块 (`app/train/train_fire_detector.py`) - **功能**:训练火源检测模型。 - **工作流程**: 1. **数据准备**:加载训练集和验证集。 2. **模型训练**:使用 YOLOv8 模型进行训练,优化模型参数。 3. **模型评估**:在验证集上评估模型性能。 4. **模型导出**:将训练好的模型导出为 ONNX 格式,方便部署。 ### 4. 数据集配置 (`app/train/dataset/fire_dataset.yaml`) - **功能**:定义数据集的路径和类别信息。 - **内容**: - 训练集和验证集图像路径。 - 类别名称(火源)。 ### 5. 模型文件 (`app/models/best.pt`) - **功能**:存储训练好的模型权重。 - **用途**:在检测模块中加载模型,进行推理。 ### 6. 工具函数 (`app/utils/plots.py`) - **功能**:提供绘图工具,用于可视化检测结果。 - **用途**:在检测到火源时,绘制边界框和警告信息。 ### 7. 数据库模块 (`app/db/models.py`) - **功能**:定义数据库模型,存储检测记录。 - **用途**:记录每次检测的结果,包括是否检测到火源、检测时间等。 ## 前端应用 ### 1. 前端技术栈 - **框架**:Vue.js - **构建工具**:Vue CLI - **包管理器**:Yarn/NPM ### 2. 前端功能 - **实时监控**:显示摄像头实时画面 - **检测结果展示**:展示火源检测结果,包括置信度和位置信息 - **历史记录**:查看历史检测记录 - **系统状态**:显示系统运行状态和性能指标 ### 3. 如何运行前端 ```bash # 进入前端项目目录 cd ui/frontend # 安装依赖 yarn install # 或 npm install # 启动开发服务器 yarn serve # 或 npm run serve ``` ### 4. 前端开发注意事项 - 确保后端 API 服务已启动(默认端口 8000) - 开发时注意跨域配置 - 遵循 Vue.js 项目规范进行开发 ## 如何运行 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 启动 Web 服务 ```bash uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` ### 3. 访问 API - 打开浏览器,访问 `http://localhost:8000/docs`,查看 API 文档。 - 上传图像或视频,进行火源检测。 ## 检测逻辑 - **火源判定条件**:当置信度大于 0.2 的检测框数量大于等于 10 时,判定为存在火源。 - **返回结果**:包括是否检测到火源、最高置信度、边界框坐标等。 ## 注意事项 - 确保在项目根目录下运行命令,避免模块导入错误。 - 确保 `app` 目录下存在 `__init__.py` 文件,使其被识别为 Python 包。 - 如果遇到 `ModuleNotFoundError: No module named 'app'`,请检查当前工作目录或设置 `PYTHONPATH`。 ## 总结 FireDetectionSystem 是一个功能完整的火灾检测系统,通过深度学习技术实现实时火源识别。系统模块化设计,便于扩展和维护。即使不懂代码,也能通过 README 文档快速理解系统的工作原理和使用方法。