feat(export): 支持把原父目录名作为文件名前缀

新增 --prefix-parent:复制时把图片原来的父目录名拼到文件名前
(grease/abc.png -> grease_abc.png)。导出后目录只剩簇号,来源信息本来会丢失,
加前缀能留住它,人工核对时一眼看出某张图原本在哪个目录。

- 重名检查改为按**目标文件名**判重:加前缀后原本会撞车的文件可能就不撞了;
  不加前缀而撞车时,报错会提示可以试试这个开关
- manifest.json 记下 prefix_parent,导出的 file 字段也用实际写出的文件名

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Shaun Zhou
2026-09-08 15:26:00 +08:00
co-authored by Claude Opus 5
parent 6e543660ce
commit 9b31473b27
3 changed files with 114 additions and 11 deletions
+12 -1
View File
@@ -277,7 +277,18 @@ data/film_r18_cluster_k4/ # <源目录名>_<骨架标签>_cluster_k<簇数>
└── manifest.json # 来源 run、特征配置、每张图的原始路径
```
**复制真实文件**,不是软链也不改名,所以这个目录可以直接拷走或喂给别的工具。
**复制真实文件**,不是软链,所以这个目录可以直接拷走或喂给别的工具。
默认保持原文件名。加 `--prefix-parent` 会把原父目录名拼到文件名前:
```bash
uv run python scripts/export_clusters.py --work-dir runs/simclr_r18 --prefix-parent
# back-mosquito-G0/5.14_677mmX316.10m_....png -> back-mosquito-G0_5.14_677mmX316.10m_....png
```
导出后目录只剩簇号,原来的来源信息就没了——加前缀能留住它,人工核对时一眼看出
某张图原本在哪个目录;顺带也化解不同子目录同名文件在同一个簇里撞车的情况
(撞车时的报错也会提示可以试试这个开关)。
目录名可用 `--tag r18ss` 换标签、`--out` 完全指定。几个保护:源文件缺失、
同簇内出现重名(保持原名会互相覆盖)都会直接报错;目标目录非空时必须显式 `--overwrite`。