Files

74 lines
3.0 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 在人工修正过的弱监督框上训练 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 里修正标签,导出 YOLO 格式
# uv run python scripts/build_yolo_dataset.py --export data/film_yolo_shap.zip \
# --images runs/boxes_shap_label_studio/images --out data/film_yolo
#
# 用法:
# 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:
# 切成固定 128x128 的片:产线要求模型输入固定尺寸且禁止 resize。
# uv run python scripts/tile_dataset.py --data data/film_yolo/data.yaml \
# --out data/film_yolo_128 --size 128
yaml: data/film_yolo_128/data.yaml
model:
# CLAUDE.md 的"只用 convolution 模型"只约束聚类与数据集生成阶段,检测这一步不受限,
# 所以用最新的 YOLO26。它是端到端的(NMS-free),推理侧少一道后处理。
# n 是最小的一档:数据只有 1.1 万张且标签是弱监督的,模型大了容易把标注噪声也学进去。
weights: yolo26n.pt
train:
epochs: 500
# 必须与数据集的片大小一致。数据已经是 128x128,ultralytics 的 letterbox 这时
# 缩放比 r = min(128/128, 128/128) = 1、填充 dw=dh=0,退化成空操作,不会碰像素。
# 改尺寸时:重跑 tile_dataset.py,再同步改这里。
imgsz: 128
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
# 以下几何增强都会重采样像素,全部关掉。
# 注意 scale 与 translate 的 ultralytics 默认值是 0.5 / 0.1(不是 0),
# 不显式写出来就等于一直在做仿射缩放平移。
scale: 0.0
translate: 0.0
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]