feat(scripts): 按聚类结果导出数据集
新增 scripts/export_clusters.py:读聚类产出的 assignments.csv,把原图复制成 data/<源目录名>_<骨架标签>_cluster_k<簇数>/,子目录用从 0 开始的数字编号。 - 复制真实文件(copy2 保留修改时间),不建软链、不改名 - 目录名自动推导:源目录名取各路径的公共父目录,骨架标签取自 summary.json 的 feature_source;--tag / --out 可覆盖 - manifest.json 记录来源 run、特征配置与每张图的原始路径,便于追溯 - 保护:源文件缺失、同簇内重名(保持原名会互相覆盖)直接报错; 目标目录非空需显式 --overwrite;--dry-run 只打印计划 - 聚类产出的 summary.json 新增 feature_source 字段(method / backbone / feature_stages),供上面的自动命名与日后追溯 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
7f13ec5d18
commit
f8a52c9382
@@ -247,6 +247,30 @@ scatter:
|
||||
> 完整的数学推导、算法流程图与全部消融数据见
|
||||
> **[docs/unsupervised-clustering.md](docs/unsupervised-clustering.md)**。
|
||||
|
||||
### 按聚类结果导出数据集
|
||||
|
||||
人工核对完分组后,把结果落成一个可以直接使用的数据集目录:
|
||||
|
||||
```bash
|
||||
uv run python scripts/export_clusters.py --work-dir runs/simclr_r18 # 先看计划加 --dry-run
|
||||
```
|
||||
|
||||
```
|
||||
data/film_r18_cluster_k4/ # <源目录名>_<骨架标签>_cluster_k<簇数>,自动推导
|
||||
├── 0/ # 簇 0 的图,文件名保持原样
|
||||
├── 1/
|
||||
├── 2/
|
||||
├── 3/
|
||||
└── manifest.json # 来源 run、特征配置、每张图的原始路径
|
||||
```
|
||||
|
||||
**复制真实文件**,不是软链也不改名,所以这个目录可以直接拷走或喂给别的工具。
|
||||
目录名可用 `--tag r18ss` 换标签、`--out` 完全指定。几个保护:源文件缺失、
|
||||
同簇内出现重名(保持原名会互相覆盖)都会直接报错;目标目录非空时必须显式 `--overwrite`。
|
||||
|
||||
> 标签只反映骨架,不区分 pretrained 与 simclr——同一骨架的两种跑法会推出同名目录,
|
||||
> 需要并存时用 `--tag` 手动区分。无论目录叫什么,`manifest.json` 都记着这批图来自哪次 run。
|
||||
|
||||
### 自监督预训练(SimCLR)
|
||||
|
||||
`method: pretrained`(默认)用 ImageNet 权重直接抽特征,不训练;`method: simclr` 则在
|
||||
|
||||
Reference in New Issue
Block a user