chore: 数据迁到 data/raw/ 后同步所有路径引用

原始数据从 data/<数据集> 移到了 data/raw/<数据集>。

- 聚类配置的 dataset.root:film / pearlescent 均改为 data/raw/ 下
- 检测配置的 img_dir 与 label_dir 注释同步
- README、data/README、算法文档、流程图(含重新渲染的 PNG)与各脚本
  docstring 里的路径示例一并更新
- data/README 补充目录约定:原始数据只读放 data/raw/,
  export_clusters.py 的派生数据集放在 data/ 下与 raw/ 平级
- 顺手把 unlabeled 数据集加进 datasets/__init__.py:此前它没在包初始化时注册,
  build_dataset({"name": "unlabeled"}) 只有在别处先 import 过该模块时才可用

迁移后重跑全量聚类,结果与迁移前逐项一致(轮廓 0.3255、稳定性 0.9641、
簇大小 [4507, 3795, 4849, 1428])。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Shaun Zhou
2026-09-07 11:19:42 +08:00
co-authored by Claude Opus 5
parent 5f31ed0a92
commit 5d395b7c25
15 changed files with 56 additions and 46 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
# 未分类样本的无监督聚类。
#
# 预处理决策(针对 data/film 的实际情况:14.5k 张已裁好的缺陷小图,
# 预处理决策(针对 data/raw/film 的实际情况:14.5k 张已裁好的缺陷小图,
# 中位尺寸 152x113,宽高比 0.24~39.9,尺寸几乎每张都不同):
#
# 前提:图片的尺寸和宽高比是上游 ROI 裁剪环节的产物,不是缺陷属性。
@@ -63,7 +63,7 @@ fit_max_samples: 0
dataset:
name: unlabeled
root: data/film
root: data/raw/film
gray: false
exclude: [images, labels] # 跳过已经整理成 YOLO 结构的部分
transforms:
+1 -1
View File
@@ -1,7 +1,7 @@
# 用 resnet18 做域内自监督(SimCLR)再聚类。
#
# 与默认配置的区别只有骨架:configs/cluster/film.yaml 的 method=pretrained 用的也是
# resnet18,但那是 ImageNet 权重、不训练;这里是在 data/film 上自监督训练它。
# resnet18,但那是 ImageNet 权重、不训练;这里是在 data/raw/film 上自监督训练它。
#
# 用法:
# uv run python scripts/cluster_unlabeled.py --config configs/cluster/film_simclr_resnet18.yaml \
+2 -2
View File
@@ -1,6 +1,6 @@
# 未分类样本的无监督聚类。
#
# 预处理决策(针对 data/film 的实际情况:14.5k 张已裁好的缺陷小图,
# 预处理决策(针对 data/raw/film 的实际情况:14.5k 张已裁好的缺陷小图,
# 中位尺寸 152x113,宽高比 0.24~39.9,尺寸几乎每张都不同):
#
# 前提:图片的尺寸和宽高比是上游 ROI 裁剪环节的产物,不是缺陷属性。
@@ -63,7 +63,7 @@ fit_max_samples: 0
dataset:
name: unlabeled
root: data/pearlescent
root: data/raw/pearlescent
gray: false
exclude: [images, labels] # 跳过已经整理成 YOLO 结构的部分
transforms:
+4 -4
View File
@@ -1,6 +1,6 @@
# 薄膜缺陷数据集(YOLO 风格标注:labels/*.txt,每行 `class_id cx cy w h`,归一化坐标)。
# 类别顺序即标注里的 class_id,改动顺序等于改变标签含义,必须重新训练。
# 也可以写成 data.yaml 的路径,从其中的 names 读类别:classes: data/film/data.yaml
# 也可以写成 data.yaml 的路径,从其中的 names 读类别:classes: data/raw/film/data.yaml
classes: [scratch, bubble, particle, crease, stain]
# 图像级标签形式;模型的分类头、分类损失、分类指标都跟随它。
@@ -18,8 +18,8 @@ data:
train:
dataset:
name: film_defect
img_dir: data/film/images/train
label_dir: null # 缺省按 YOLO 约定取 data/film/labels/train
img_dir: data/raw/film/images/train
label_dir: null # 缺省按 YOLO 约定取 data/raw/film/labels/train
gray: false
max_objects: 64
transforms:
@@ -38,7 +38,7 @@ data:
val:
dataset:
name: film_defect
img_dir: data/film/images/val
img_dir: data/raw/film/images/val
label_dir: null
gray: false
transforms: