feat(scripts): 重训后同时维护 current.pt 与 best.pt

current.pt 指向最新一次训练的结果(后端与 push_predictions 都读它),
best.pt 指向历史上 mAP50 最高的那版,留作回退与对照。

数据集每次重训都在变,这个比较只是粗略参考而非严格的同条件对比,所以只用来
维护 best.pt 这个指针,不拦截 current.pt 的切换。

用服务器上三次真实训练验证过:首次建立、更好时更新、更差时保持不变。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Shaun Zhou
2026-09-23 16:03:00 +08:00
co-authored by Claude Opus 5
parent fad1fe9fbb
commit 6e746b7351
2 changed files with 31 additions and 4 deletions
+6 -3
View File
@@ -83,9 +83,12 @@ Label Studio 里:Settings → **Model** → Connect Model,URL 填 `http://lo
`ANNOTATION_CREATED`,`UPDATED` / `DELETED` 是对已有标注的修改,不该把阈值顶到;
- 已有重训在跑时重复点击会被忽略,不会叠起多个训练。
重训脚本做四件事:导出标注 → `build_yolo_dataset.py` 装配 → `detect.py` 训练 →
把 `runs/detect/current.pt` 软链接指向新权重并重启本服务。启动脚本默认读这个软链接,
所以换模型不用改任何脚本。**权重只在进程启动时加载一次**,这也是重训末尾要重启服务的原因。
重训脚本做五件事:导出标注 → `build_yolo_dataset.py` 装配 → `tile_dataset.py` 切成固定
边长的片 → `detect.py` 训练 → 更新软链接并重启本服务。
两个软链接:**`current.pt`** 指向最新一次训练的结果(本服务与 `push_predictions.py` 都读它),
**`best.pt`** 指向历史上 mAP50 最高的那版,留作回退与对照。换模型不用改任何脚本。
**权重只在进程启动时加载一次**,这也是重训末尾要重启服务的原因。
训练进度看 `$RETRAIN_LOG`(默认 `/tmp/retrain.log`);Label Studio 网页端不显示训练进度。