feat: add video detection and robot alerts
This commit is contained in:
83
README.md
83
README.md
@@ -0,0 +1,83 @@
|
||||
# Smoke and Fire YOLO
|
||||
|
||||
Ultralytics YOLO training, validation, prediction, and export pipeline for the Smoke-Fire-Detection-YOLO dataset.
|
||||
|
||||
## Project layout
|
||||
|
||||
```text
|
||||
configs/datasets/smoke_fire.yaml Dataset configuration
|
||||
models/pretrained/yolo11s.pt Default pretrained model
|
||||
src/yolo/cli.py Command-line entry point
|
||||
src/yolo/config.py Training configuration
|
||||
src/yolo/defaults.py Project defaults
|
||||
src/yolo/engine.py Train, validate, predict, and export
|
||||
src/yolo/checkpoints.py Checkpoint discovery and resume support
|
||||
src/yolo/reporting.py Training result reporting
|
||||
```
|
||||
|
||||
## Setup
|
||||
|
||||
```bash
|
||||
uv sync
|
||||
```
|
||||
|
||||
## Commands
|
||||
|
||||
Fine-tune from the current best YOLO11s checkpoint:
|
||||
|
||||
```bash
|
||||
uv run fire-yolo train
|
||||
```
|
||||
|
||||
Resume from the newest checkpoint:
|
||||
|
||||
```bash
|
||||
uv run fire-yolo train --resume
|
||||
```
|
||||
|
||||
Validate a trained model:
|
||||
|
||||
```bash
|
||||
uv run fire-yolo val --weights runs/detect/<run-name>/weights/best.pt
|
||||
```
|
||||
|
||||
Run inference:
|
||||
|
||||
```bash
|
||||
uv run fire-yolo predict --weights runs/detect/<run-name>/weights/best.pt --source path/to/image-or-video
|
||||
```
|
||||
|
||||
Export a model:
|
||||
|
||||
```bash
|
||||
uv run fire-yolo export --weights runs/detect/<run-name>/weights/best.pt --format onnx
|
||||
```
|
||||
|
||||
## Default training settings
|
||||
|
||||
- Model: `runs/detect/smoke_fire_yolo11s_v1-4/weights/best.pt`
|
||||
- Dataset: `configs/datasets/smoke_fire.yaml`
|
||||
- Epochs: 80
|
||||
- Image size: 768
|
||||
- Batch: 24
|
||||
- Workers: 0
|
||||
- Optimizer: AdamW
|
||||
- Initial learning rate: 0.0002
|
||||
- Mosaic/MixUp: disabled
|
||||
- Prediction confidence: 0.40
|
||||
- Checkpoint interval: every 5 epochs
|
||||
- Output: `runs/detect`
|
||||
|
||||
Training writes `last.pt`, `best.pt`, periodic checkpoints, and `best_point.json` to the run directory.
|
||||
## Web Detection Service
|
||||
|
||||
After training finishes, install the web dependencies and run the integrated frontend and inference API:
|
||||
|
||||
```bash
|
||||
uv sync
|
||||
uv run uvicorn backend.main:app --host 127.0.0.1 --port 8000
|
||||
```
|
||||
|
||||
Open `http://127.0.0.1:8000`, select a local video, and start continuous detection. The browser plays the video locally and sends sequential JPEG frames to `POST /api/detect`; requests do not overlap.
|
||||
|
||||
The local `.env` file contains optional robot settings. Set `WECHAT_WEBHOOK_URL` for an Enterprise WeChat group robot, `FEISHU_WEBHOOK_URL` for a Feishu custom group robot, or both. If Feishu signature verification is enabled, also set `FEISHU_SECRET`. Alerts require three consecutive positive frames by default and use separate 60-second cooldowns for fire and smoke. `ALERT_CONFIRM_FRAMES` and `ALERT_COOLDOWN_SECONDS` override these settings. Without a webhook, video detection still works and the UI reports that notifications are disabled.
|
||||
|
||||
Reference in New Issue
Block a user