feat: 训练与评估入口及 yaml 配置

- train.py: 先过 require_cuda() 守卫再建模型/数据,支持 --resume 与 --set 覆盖
- eval.py: 允许 CPU,输出定位与分类指标并可写 json
- configs: model/dataset/train/eval 四类,通过 `_base_` 组合;
  classes 既可直接写列表,也可指向 YOLO data.yaml 由框架读 names

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Shaun Zhou
2026-09-02 17:55:20 +08:00
co-authored by Claude Opus 5
parent ef64e5bf77
commit b0d0dfffbb
9 changed files with 344 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
_base_:
- ../model/tiny_conv.yaml
- ../dataset/film_defect.yaml
work_dir: runs/baseline
seed: 42
deterministic: false
device: cuda # 训练只允许 Nvidia GPU,见 utils/device.py
train:
epochs: 100
amp: true
clip_grad: 5.0
log_interval: 20
monitor: f1 # 用于挑选 best.pth 的验证指标
optimizer:
name: adamw
lr: 0.001
weight_decay: 0.0001
scheduler:
name: cosine
loss:
heatmap_weight: 1.0
wh_weight: 0.1
offset_weight: 1.0
cls_weight: 1.0
eval:
score_threshold: 0.3
iou_threshold: 0.5
topk: 50
# 训练过程可视化(SwanLab)。未安装或 enabled=false 时自动跳过。
swanlab:
enabled: true
project: film-defect
name: null # 缺省用 work_dir 的目录名
mode: online # online(云端) | local(本地看板) | offline(仅存盘) | disabled
tags: [tiny_conv, center-head]
+12
View File
@@ -0,0 +1,12 @@
_base_:
- ./baseline.yaml
# 单类(互斥)分类示例:一张图只归一个类别,分类头多一维表示"无缺陷"。
label_mode: multiclass
work_dir: runs/multiclass
train:
monitor: cls_f1 # 单类模式下常用分类指标挑选 best.pth
swanlab:
name: multiclass
tags: [tiny_conv, multiclass]
+8
View File
@@ -0,0 +1,8 @@
_base_:
- ./baseline.yaml
- ../model/resnet18.yaml
work_dir: runs/resnet18
train:
optimizer:
lr: 0.0005