|
|
há 3 dias atrás | |
|---|---|---|
| auto_training | há 3 dias atrás | |
| config | há 3 dias atrás | |
| core | há 3 dias atrás | |
| data | há 3 dias atrás | |
| models | há 3 dias atrás | |
| predictor | há 3 dias atrás | |
| tool | há 3 dias atrás | |
| .gitignore | há 3 dias atrás | |
| README.md | há 3 dias atrás | |
| requirements.txt | há 3 dias atrás | |
| run_pickup_monitor.py | há 3 dias atrás | |
| start.sh | há 3 dias atrás |
水泵/设备异响实时检测系统。通过 RTSP 拾音器采集音频,基于 AutoEncoder 模型进行异常检测。
# 方式一:从已有 YAML 导入(推荐首次部署)
python tool/migrate_yaml_to_db.py --yaml 你的配置.yaml --force
# 方式二:通过 API 配置(系统运行后)
# 见下方「配置管理 API」章节
导入后可检查 DB 信息:
python -c "
import sys; sys.path.insert(0,'.')
from config.config_manager import ConfigManager
mgr = ConfigManager()
cfg = mgr.get_full_config()
for p in cfg['plants']:
print(f\"水厂: {p['name']} (project_id={p['project_id']}, enabled={p['enabled']})\")
for s in p.get('rtsp_streams', []):
print(f\" 设备: {s['device_code']} | {s['name']} | model={s.get('model_subdir','')} | url={s['url'][:50]}...\")
mgr.close()
"
python auto_training/standalone_train.py --data-dir /你的音频数据目录
就这一条命令。 训练结果自动保存到 models/{设备编码}/ 目录。
数据目录要求:
你的音频数据目录/
├── LT-2/ ← 子文件夹名 = 设备编码(与 DB 中 device_code 一致)
│ ├── xxx.wav
│ └── 2025-01-01/
│ └── yyy.wav
└── LT-5/
└── ...
可选参数:
--devices LT-2 LT-5 # 只训练指定设备
--epochs 100 # 训练轮数
--lr 0.00005 # 学习率
./start.sh # 前台运行(调试用)
./start.sh -d # 后台运行(生产用)
./start.sh stop # 停止
./start.sh restart # 重启
./start.sh status # 查看状态
| 方式 | 操作 |
|---|---|
| 自动热加载 | 替换 models/{设备编码}/ 下的文件,60 秒内自动生效 |
| API 上传 | curl -X POST http://IP:8080/api/model/upload/LT-2 -F "model_file=@ae_model.pth" |
| API 触发重载 | curl -X POST http://IP:8080/api/model/reload/LT-2 |
| 查看状态 | curl http://IP:8080/api/model/status |
系统启动后在 :8080 自动提供,支持 Web 端实时修改配置。
| 接口 | 方法 | 说明 |
|---|---|---|
/api/config |
GET | 获取全量配置 |
/api/config/plants |
GET/POST | 水厂列表 / 创建 |
/api/config/plants/{id} |
GET/PUT/DELETE | 单个水厂 CRUD |
/api/config/streams |
GET/POST | RTSP 流列表 / 创建 |
/api/config/streams/{id} |
PUT/DELETE | 单个流更新 / 删除 |
/api/config/{section} |
GET/PUT | 系统配置读写(audio/prediction/push 等) |
/api/model/status |
GET | 模型加载状态 |
/api/model/reload/{code} |
POST | 重载指定设备模型 |
/api/model/reload-all |
POST | 重载所有模型 |
/api/model/upload/{code} |
POST | 上传模型文件并自动重载 |
可热更新(30 秒自动生效):推送开关、告警阈值、投票参数、人体检测开关等。
需重启生效:新增/删除 RTSP 流、修改采样率。
每个水厂独立部署一个实例,各自拥有独立的 pickup_config.db。
服务器A: deploy_pickup/ + pickup_config.db(锡山) + models/(锡山设备模型)
服务器B: deploy_pickup/ + pickup_config.db(龙亭) + models/(龙亭设备模型)
deploy_pickup/
├── run_pickup_monitor.py # 主入口(采集 + 检测 + 推送)
├── start.sh # 启动/停止/重启脚本
├── requirements.txt
│
├── config/ # 配置
│ ├── pickup_config.db # 运行时配置数据库
│ ├── config_manager.py # 配置读写
│ ├── config_api.py # REST API(:8080)
│ ├── db_models.py # 表定义
│ └── auto_training.yaml # 训练参数
│
├── predictor/ # 推理
│ ├── model_def.py # ConvAutoencoder(base_ch=16)
│ ├── multi_model_predictor.py # 多设备模型管理 + 热加载
│ ├── config.py / datasets.py / utils.py
│
├── core/ # 运行时辅助
│ ├── alert_aggregator.py # 跨设备告警聚合
│ ├── anomaly_classifier.py # 异常类型分类
│ ├── pump_state_monitor.py # 泵状态 PLC 查询
│ ├── energy_baseline.py # 泵启停判断
│ └── human_detection_reader.py # 人体检测抑制
│
├── auto_training/ # 训练(可独立运行)
│ ├── standalone_train.py # ← 训练入口(就用这个)
│ ├── incremental_trainer.py # 训练器核心
│ └── data_cleanup.py # 过期音频/日志清理(可选,手动运行)
│
├── models/{设备编码}/ # 模型(训练自动产出)
├── tool/migrate_yaml_to_db.py # YAML → DB 迁移
└── data/ # 运行时音频