基于 Electron、FastAPI 与 Ultralytics YOLO 的火焰检测桌面应用,支持单张与批量图片检测、视频和摄像头实时监控、告警汇总、检测报告、历史记录及 YOLO 模型管理。提供完整 Windows CUDA 安装包,适用于本地部署、算法验证与火焰识别测试。
当前版本:v2.0.2
GitHub 仓库简介:FlameDetect Pro 是一款基于 YOLO 的火焰检测桌面应用,支持单张与批量图片检测、视频/摄像头实时监控、告警汇总、检测报告、历史记录与模型管理,并提供 Windows CUDA 安装包。
- 图片检测:上传 JPG、JPEG、PNG、BMP 或 TIFF 图片,查看检测框、火焰数量、置信度和推理耗时。
- 视频监控:读取本地视频或摄像头画面,按可调检测间隔进行实时检测,支持暂停、截图和检测趋势查看。
- 历史记录:保存图片检测结果,支持查看详情、清空记录以及导出 JPG 图片或 JSON 数据。
- 模型管理:扫描、上传和切换 YOLO 模型,支持
.pt、.onnx、.pth和.weights格式。 - 运行状态:查看当前模型、推理次数、设备类型、系统资源和缓存状态。
- 桌面应用体验:Electron 负责窗口和媒体处理,应用启动时自动拉起本地 FastAPI 后端。
- Electron 28
- FastAPI + Uvicorn
- Ultralytics YOLO
- OpenCV、NumPy、PyTorch
- Chart.js
- FFmpeg(由
ffmpeg-static提供)
- Node.js 18 或更高版本
- Python 3.9 或更高版本(仅从 Python 源码启动后端时需要)
- Windows、macOS 或 Linux
- 若使用 CUDA 推理,需要安装与本机驱动匹配的 PyTorch CUDA 版本
在项目根目录执行:
npm install
npm startWindows 也可以双击 start_app.bat 启动。发布时请使用 npm run build:win,Electron 会生成 Windows 安装包。目标电脑需要准备 Python 和后端依赖。
如需将 Electron 主程序和 CUDA 后端放进一个安装包,请执行 npm run build:win:single。该命令使用 Inno Setup 生成 dist/FlameDetect-Pro-CUDA-Setup-2.0.2.exe,后端采用目录模式,避免启动时重复解压大型 CUDA 运行时。目标电脑不需要安装 Python,但需要兼容的 NVIDIA 驱动。
确保已准备好 Python 依赖后执行:
python start_backend.py后端默认地址为 http://localhost:8000,FastAPI 交互式文档为 http://localhost:8000/docs。
仓库当前未提供
requirements.txt。如果使用源码方式运行后端,请根据main.py中的导入安装对应依赖,或使用项目已有的 Python 虚拟环境。直接使用已构建的backend.exe时不需要单独安装 Python。
- 将训练好的模型放入
models/,或在应用的“模型管理”页面上传。 - 支持的模型扩展名:
.pt、.onnx、.pth、.weights。 - 模型文件需要大于 1 MB 才会被扫描为可用模型。
- 首次启动如果没有可用模型,检测接口会提示“模型未加载”,请先上传并加载模型。
默认模型会按以下顺序尝试查找:数据目录中的模型、项目 models/ 目录,以及应用内置的常见模型路径。实际使用时建议将模型放入应用数据目录,或通过界面上传。
后端支持以下环境变量:
| 变量 | 默认值 | 说明 |
|---|---|---|
FLAME_DETECT_DATA_DIR |
./data |
上传文件、模型、报告、日志和历史记录的根目录 |
FLAME_DETECT_PORT |
8000 |
FastAPI 服务端口 |
例如:
set FLAME_DETECT_DATA_DIR=D:\\FlameDetectData
set FLAME_DETECT_PORT=8001
python main.pyElectron 启动的后端会自动使用当前用户数据目录下的 flame-detect-data,不会把运行时数据写入安装包本身。
开发模式下默认目录结构如下:
data/
├─ history/ # 历史检测图片
├─ logs/ # 日志
├─ models/ # 模型文件
├─ reports/ # 检测报告
└─ uploads/ # 上传文件
图片上传大小上限为 50 MB,模型上传大小上限为 500 MB。应用内历史记录还会使用浏览器本地存储保存索引信息。
| 方法 | 路径 | 用途 |
|---|---|---|
GET |
/health |
健康检查和当前运行状态 |
POST |
/predict |
上传图片或视频帧并执行检测 |
GET |
/models/list |
获取可用模型列表 |
POST |
/upload_model |
上传并加载模型 |
POST |
/load_model |
加载指定模型 |
POST |
/load_default |
加载默认模型 |
GET |
/model_info |
获取当前模型信息 |
GET |
/stats |
获取推理统计 |
POST |
/cache/clear |
清空推理缓存 |
GET |
/docs |
查看完整 OpenAPI 文档 |
/predict 支持 conf_threshold(0 到 1,默认 0.25)和 return_image 参数;后者开启时会返回标注后的图片数据。
npm run build按平台构建:
npm run build:win
npm run build:mac
npm run build:linux构建产物输出到 dist/。Windows 安装包使用 NSIS,应用名称为 FlameDetect Pro。
仓库提供 GitHub Actions 工作流,可将 FastAPI/YOLO 后端构建并发布到 GitHub Container Registry(GHCR):
ghcr.io/figure247/flame-detect-app:v2.0.2
- GitHub Releases:推送
v*格式的 Git 标签后,GitHub Actions 会自动创建 Release 并生成更新说明。 - GitHub Packages:推送
v*格式的 Git 标签后,GitHub Actions 会自动构建并发布容器镜像。 - 安装方式:
docker run --rm -p 8000:8000 -v flame-detect-data:/app/data ghcr.io/figure247/flame-detect-app:v2.0.2模型文件请放入挂载数据卷的 models/ 目录,后端启动后可通过 http://localhost:8000/docs 查看 API 文档。首次发布后,如需公开访问,需在 GitHub Packages 页面将该容器包设置为 Public。
main.js # Electron 主进程,负责窗口、后端进程和媒体转换
preload.js # Electron 安全预加载桥接
index.html # 前端界面
main.py # FastAPI 服务和 YOLO 推理逻辑
start_backend.py # 单独启动后端的开发脚本
start_app.bat # Windows 启动脚本
assets/ # 应用图标等资源
models/ # 开发环境模型目录
data/ # 运行时数据目录
本项目使用 MIT License。依赖项的许可证以各自上游项目声明为准。