docs: sync README layout with new backend/frontend modules, add roadmap

- Expand project layout tree with backend/{storage,events,alerting,main}.py
  and the modular frontend (main.js + modules/ + views/)
- Add docs/roadmap.md with the three-phase development direction and link
  it from the README
- List YOLO_DB_PATH in the settings view environment reference
This commit is contained in:
2026-08-13 16:59:37 +08:00
parent 25fa0c5825
commit 12a75e65d8
3 changed files with 53 additions and 2 deletions

View File

@@ -13,8 +13,13 @@ src/yolo/defaults.py Project defaults
src/yolo/engine.py Train, validate, predict, and export src/yolo/engine.py Train, validate, predict, and export
src/yolo/checkpoints.py Checkpoint discovery and resume support src/yolo/checkpoints.py Checkpoint discovery and resume support
src/yolo/reporting.py Training result reporting src/yolo/reporting.py Training result reporting
backend/ FastAPI inference API and alerting backend/main.py FastAPI app, detect/events/robots endpoints
frontend/ Browser management platform (no build step) backend/alerting.py Consecutive-frame confirmation, WeChat/Feishu delivery
backend/events.py Alert event store (SQLite-backed)
backend/storage.py SQLite database, delivery stats, UTC timestamps
frontend/main.js Browser entry, view switching, boot sequence
frontend/modules/ Shared helpers (dom, api, ui, charts, state)
frontend/views/ Per-view rendering (dashboard, inspection, events, robots)
``` ```
## Setup ## Setup
@@ -100,3 +105,7 @@ Detection requests without a `session_id` share the fixed `single-image` session
- `data/Smoke-Fire-Detection-YOLO/` — main smoke/fire dataset (train/val/test). - `data/Smoke-Fire-Detection-YOLO/` — main smoke/fire dataset (train/val/test).
- `data/fire-dataset/` — incremental hard-negative collection (395 train / 87 val images, Pascal VOC XML plus YOLO labels); not yet wired to a training config. - `data/fire-dataset/` — incremental hard-negative collection (395 train / 87 val images, Pascal VOC XML plus YOLO labels); not yet wired to a training config.
- `runs/audit/` — label audit tooling: `scan_missing_labels.py` finds unlabeled images that the current model detects, `render_missing_label_candidates.py` renders them for review. - `runs/audit/` — label audit tooling: `scan_missing_labels.py` finds unlabeled images that the current model detects, `render_missing_label_candidates.py` renders them for review.
## Roadmap
The development direction (hard-negative fine-tuning, YOLO26n comparison, real-time push, multi-video concurrency, data flywheel, and more) is tracked in [`docs/roadmap.md`](docs/roadmap.md).

41
docs/roadmap.md Normal file
View File

@@ -0,0 +1,41 @@
# 发展路线图
均衡推进:模型能力与平台能力并进,按依赖关系分三阶段。每阶段结束都有可独立验证的增量。
## Phase 1数据与模型闭环 + 实时化
1. **难负样本微调落地**
-`data/fire-dataset`train 395 / val 87Pascal VOC XML + YOLO 标签)编写数据集配置 `configs/datasets/smoke_fire_hard_negative.yaml`VOC XML→YOLO 转换脚本纳入 `src/yolo/data/`
- 执行 `TrainConfig` 已预设的运行名 `smoke_fire_yolo11s_hard_negative_ft_v1`,与 v1-4 对比验证误报下降
2. **YOLO26n 评估补齐**
-`runs/detect/smoke_fire_yolo26n_v2-3/weights/best.pt` 跑一次 `fire-yolo val`,补齐 `args.yaml``results.csv` 与曲线图
- 更新 `docs/model_comparison.md`完成部署选型对比nano 对 CPU/边缘更友好)
3. **SSE 实时推送**
- 后端新增 `GET /api/stream`SSE事件与机器人状态变更时广播
- 前端 `EventSource` 替代总览/告警中心的轮询刷新
## Phase 2并发产能 + 安全加固
4. **多路视频并发巡检**
- 推理锁升级为单 worker 专用执行器 + 请求队列(当前 FastAPI 线程池在锁排队时可能饿死其他端点)
- 前端多路视频格布局,每个视频独立会话
5. **ONNX / TensorRT 导出与加速**
- `fire-yolo export` 已具备,补充部署文档与延迟/吞吐基准对比
6. **事件截图存档**
- 告警触发时截图落盘 `data/screenshots/<event_id>.jpg`(数据库存路径),前端事件详情弹窗展示
7. **鉴权收紧**
- 简单 Bearer token + CORS 白名单;在对外/多用户访问需求出现前完成,避免带病部署
## Phase 3工程化 + 数据飞轮
8. **audit 集成进 CLI**
- `fire-yolo audit` 参数化现有 `runs/audit/scan_missing_labels.py``render_missing_label_candidates.py`,输出保持 CSV/JSON 格式
9. **误报数据飞轮**
- 前端"误报"按钮 → 截图+检测框入库 → 定期导出为增量难负样本 → 再微调
- 依赖 6 与 8形成"数据 → 模型 → 数据"的复利闭环
10. **Docker 化**
- CUDA 基础镜像 + uv + 卷挂载 `data/`,单机部署稳定后再固化
## 排序逻辑
先"数据/模型闭环"(依赖最少、价值最大)→ 再"实时化"(值班体验增益)→ 后"并发/加速/安全"(相互依赖且依赖前两者)→ 最后"工程化与飞轮"(依赖前面所有组件)。

View File

@@ -199,6 +199,7 @@ YOLO_DEVICE=0
YOLO_IMGSZ=768 YOLO_IMGSZ=768
YOLO_CONF=0.40 YOLO_CONF=0.40
YOLO_IOU=0.45 YOLO_IOU=0.45
YOLO_DB_PATH=data/app.db
ALERT_CONFIRM_FRAMES=3 ALERT_CONFIRM_FRAMES=3
ALERT_COOLDOWN_SECONDS=60</code></pre></article> ALERT_COOLDOWN_SECONDS=60</code></pre></article>
</section> </section>