Commit Graph
7 Commits
Author SHA1 Message Date
xzhou d42a89ed13 fix(scripts): update default TILE_SIZE to 128 in retrain_from_label_studio.sh 2026-10-13 07:57:56 +00:00
Shaun ZhouandClaude Opus 5 c2bd5301b4 feat(deploy): 模型归档统一为 film_<边长>_<时间戳>
之前 160 的 OpenVINO 导出直接从 current.pt 导,文件名不带边长也不带时间戳,
同时留着 128 和 160 两套时分不清谁是谁,软链接又会被下次训练改写。

- 新增 scripts/export_openvino.py:把权重归档成 film_<边长>_<时间戳>.pt 并导出
  同名的 OpenVINO 目录。边长从 checkpoint 读、时间戳从训练目录名取,所以同一次
  训练无论何时归档名字都一样,也不会出现文件名与实际输入尺寸对不上。
- 重训脚本第 5 步自动归档;训练目录与切片数据集的名字也带上边长。
- openvino_predict.py 的示例路径跟着更新。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-30 15:11:45 +08:00
Shaun ZhouandClaude Opus 5 6e746b7351 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>
2026-09-23 16:03:00 +08:00
Shaun ZhouandClaude Opus 5 fad1fe9fbb feat(scripts): 重训流程加入切片步骤
产线要求模型输入固定为 TILE_SIZE×TILE_SIZE 且禁止 resize,训练数据必须先切片,
否则训出来的模型与推理侧的输入形态对不上——实测 640 训练的模型在 160 的片上
一个框都出不来。

五步:导出 -> 装配 -> 切片 -> 训练(imgsz 跟着 TILE_SIZE)-> 切权重并重启后端。
重启时把 YOLO_TILE_SIZE / YOLO_TILE_OVERLAP 一并传给后端,保证两侧尺寸一致。
TILE_SIZE=0 可跳过切片,只用于和旧模型对比。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 15:22:58 +08:00
Shaun ZhouandClaude Opus 5 1684fddd7f feat(scripts): 重训脚本可跳过重启 ML backend
手动跑重训时会无条件启动后端——纯手动路线并不想要它常驻占显存。
RESTART_BACKEND=0 可跳过;被后端调用时保持默认 1(权重只在启动时加载一次,
不重启就换不了模型)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 13:36:25 +08:00
Shaun ZhouandClaude Opus 5 8fa7a9d142 fix(ml-backend): 重训后真正切到新权重
重训脚本是 ML backend 的子进程,继承了后端 export 的 YOLO_WEIGHTS。启动脚本里
${YOLO_WEIGHTS:-默认值} 于是让旧值赢了——实测重训完成后后端仍加载旧权重,
current.pt 软链接形同虚设。同样被继承的还有 RETRAIN_EXTRA_SET,会让下次训练
沿用上次的冒烟参数(epochs=1)。

重启时显式传 YOLO_WEIGHTS 并 env -u 清掉 RETRAIN_EXTRA_SET。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 11:03:14 +08:00
Shaun ZhouandClaude Opus 5 e61fd5887c feat(ml-backend): Start Training 按钮真正触发重训,启动/重训脚本进 scripts/
原先点 Label Studio 的 Start Training 只是把计数加一:START_TRAINING 和普通标注事件
走同一条阈值判断,没配 RETRAIN_COMMAND 时更是静默什么都不做。实际使用中用户点了按钮、
以为在训练,其实权重一直没变。

- Start Training 无条件触发重训;攒够 RETRAIN_AFTER 条新标注也自动触发。
- 只数 ANNOTATION_CREATED:UPDATED / DELETED 是对已有标注的修改,不该把阈值顶到。
- 已有重训在跑时重复点击被忽略,不叠加启动。
- 没配 RETRAIN_COMMAND 时打警告说明不会真的训练,并在返回值里说清楚。
- 子进程输出重定向到 RETRAIN_LOG(默认 /tmp/retrain.log),训练进度有地方看。

scripts/start_ml_backend.sh、scripts/retrain_from_label_studio.sh 放进仓库,
可从工作区直接启动。重训末尾把 runs/detect/current.pt 软链接指向新权重,
启动脚本默认读它,换模型不必改脚本。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 11:00:01 +08:00