a3e08a9 只提交了 git mv 的改名,内容修改因 git add 的路径报错没有进入暂存区。
本提交补上:
- 缺省输出 runs/<source>_label_studio/,不再写到 data/;该目录同时是 Label Studio
的 DOCUMENT_ROOT,打印的导入步骤里提醒复核期间不要删除或 --overwrite。
- 总是生成 tasks.json 与 labeling config,去掉 --label-studio 开关。
- 不再写 data.yaml:复核材料不是训练集,没有 data.yaml 就不会被误拿去训练,
原先"train 与 val 相同"的告警也随之移除(detect.py 里的同类告警保留)。
- detect.py、configs/detect/film.yaml、README 里对旧脚本的引用改为新流程。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
58 lines
2.0 KiB
YAML
58 lines
2.0 KiB
YAML
# 在人工修正过的弱监督框上训练 YOLO 检测模型。
|
|
#
|
|
# 前置步骤:
|
|
# uv run python scripts/generate_boxes.py --method shap --out runs/boxes_shap # 生成弱监督框
|
|
# uv run python scripts/prepare_label_studio.py --source runs/boxes_shap # 复核材料
|
|
# 在 Label Studio 里修正标签,导出并划分 train/val 到 data/boxes_shap/
|
|
#
|
|
# 用法:
|
|
# uv run python detect.py --config configs/detect/film.yaml
|
|
# uv run python detect.py --config configs/detect/film.yaml --eval-only \
|
|
# --checkpoint runs/detect/film/weights/best.pt
|
|
|
|
work_dir: runs/detect/film
|
|
seed: 42
|
|
device: auto
|
|
|
|
data:
|
|
yaml: data/boxes_shap/data.yaml
|
|
|
|
model:
|
|
# CLAUDE.md 的"只用 convolution 模型"只约束聚类与数据集生成阶段,检测这一步不受限,
|
|
# 所以用最新的 YOLO26。它是端到端的(NMS-free),推理侧少一道后处理。
|
|
# n 是最小的一档:数据只有 1.1 万张且标签是弱监督的,模型大了容易把标注噪声也学进去。
|
|
weights: yolo26n.pt
|
|
|
|
train:
|
|
epochs: 500
|
|
imgsz: 640
|
|
batch: 16
|
|
workers: 8
|
|
optimizer: auto
|
|
patience: 20 # 20 轮没提升就早停
|
|
cos_lr: true
|
|
fraction: 1.0 # 只取训练集的一部分;冒烟测试时调小,如 0.02
|
|
amp: true # 非 CUDA 后端 ultralytics 会自行退回关闭
|
|
|
|
# 数据增强。翻转按聚类阶段的结论开着(缺陷没有固定朝向);
|
|
# 但 mosaic/mixup 关掉——它们会把四张图拼在一起,而我们每张图只有一个弱监督框,
|
|
# 拼接后小目标被缩得更小,对 blackdot / whitedot 这类本来就只占千分之几面积的类别是伤害。
|
|
fliplr: 0.5
|
|
flipud: 0.5
|
|
degrees: 0.0
|
|
mosaic: 0.0
|
|
mixup: 0.0
|
|
hsv_h: 0.0 # 单色/近单色的薄膜图,色相扰动没有意义
|
|
hsv_s: 0.3
|
|
hsv_v: 0.3
|
|
|
|
plots: true # results.png / PR 曲线 / 混淆矩阵 / val_batch 预测图
|
|
save_period: -1
|
|
|
|
swanlab:
|
|
enabled: true
|
|
project: film-detect
|
|
name: null
|
|
mode: local
|
|
tags: [detect, yolov8s, gradcam-boxes]
|