feat(detect): 把弱监督框数据集链接到 data/ 并接上 YOLO 训练
第五步产出的框标签按类别分目录,便于人工核对;检测训练要的是 train/val 划分——类别写在标签第一列,不靠目录名。补上两个入口: - scripts/prepare_yolo_dataset.py:拍平类别目录、按类别分层切分、硬链接到 data/。分层是必需的,black 只有 53 张,随机切容易让小类在验证集里挂零。 无框的图默认保留(检测训练里是压低误检的负样本);拍平后的同名冲突直接 报错而不是静默覆盖。 - detect.py + configs/detect/film.yaml:包一层 ultralytics,沿用本仓库的 配置继承、设备解析与 SwanLab 可视化。 选 YOLOv8 而不是 v11/v12:CLAUDE.md 限定只用 convolution 模型,YOLO11 骨架 里有 C2PSA、YOLO12 以注意力为主,只有 v8 的 C2f + SPPF 是纯卷积。 mosaic/mixup 关掉——每张图只有一个弱监督框,拼接后小目标被缩得更小,对 blackdot/whitedot 这类只占千分之几面积的类别是净伤害。 ultralytics 的 project 必须传绝对路径,相对路径会被它再拼到全局 settings 的 runs_dir 上,产出会跑到 runs/detect/runs/detect/<name> 去。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
86c86b105c
commit
8dc2fe6a2e
@@ -0,0 +1,57 @@
|
||||
# 在 Grad-CAM / SHAP 生成的弱监督框上训练 YOLO 检测模型。
|
||||
#
|
||||
# 前置步骤:
|
||||
# uv run python scripts/generate_boxes.py --config ... --method gradcam # 产出 runs/boxes_gradcam
|
||||
# uv run python scripts/prepare_yolo_dataset.py --source runs/boxes_gradcam
|
||||
#
|
||||
# 用法:
|
||||
# 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_gradcam/data.yaml
|
||||
|
||||
model:
|
||||
# 选 v8 而不是 v11/v12:CLAUDE.md 限定只用 convolution 模型,
|
||||
# 而 YOLO11 的骨架里有 C2PSA(position-sensitive attention)、YOLO12 更是以注意力为主。
|
||||
# YOLOv8 的 C2f + SPPF 是纯卷积。
|
||||
# s 是精度/速度的折中;数据只有 1.1 万张且标签是弱监督的,再大容易把标注噪声也学进去。
|
||||
weights: yolov8s.pt
|
||||
|
||||
train:
|
||||
epochs: 100
|
||||
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]
|
||||
Reference in New Issue
Block a user