 Shaun ZhouandClaude Opus 5
|
6a8941c18a
|
docs: 修正 clusters/ 是软链的说法
默认 link_mode 是 hard(scripts/cluster_unlabeled.py 与 configs/cluster/film.yaml
都是),README 里却有三处说成软链,与同一节上文"放的是硬链接"自相矛盾。
- 产出清单与导出小节改为硬链接。
- "导出的是真实文件(不是软链)"在硬链接下不成立——条目本身就是原图数据,
复制的意义是脱离 runs/ 路径、去掉排序前缀、避免删改牵连原图。
- 跨机器那条注记原本只讲失效软链,补成 SourceResolver 实际处理的三种条目
(硬链接走 inode 反查 assignments.csv / 有效软链 / 失效软链重定位)。
- scripts/export_clusters.py 的 docstring 是同一处错误,一并修正。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-10-09 16:04:01 +08:00 |
|
 Shaun ZhouandClaude Opus 5
|
33d28dcc7c
|
feat(cluster): clusters/ 默认改用硬链接,便于直接在 runs/ 下继续分子类
软链接记的是绝对路径,从服务器拷到本机后全部失效,也不便于直接在 runs/ 下整理。
硬链接不占额外磁盘却表现得和真实文件一样:看图软件能开、可以随意挪动、建子目录
继续分子类,整个目录拷到别的机器也不会断链。
- 新增 link_mode: hard(默认)/ sym / copy;跨文件系统时 hard 自动退回软链并警告
- 落盘后打印各方式的条目数,便于确认实际用的是哪种
- export_clusters.py 适配硬链接:条目本身就是原图,但路径在 runs/ 下、名字还带
0125_ 排序前缀。按 inode 反查 assignments.csv 还原原图路径,这样导出的文件名与
--prefix-parent 才能拿到真正的来源目录;查不到则剥掉前缀后用文件名索引兜底
实测:14,579 张跑聚类后 clusters/ 全为硬链接(nlink=2、可直接打开);
把簇改名、建子目录挪图后再导出,排序前缀已剥除、来源目录正确还原为「反面纵黑点」,
120 张内容与原图逐字节一致。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-09-10 12:04:08 +08:00 |
|
 Shaun ZhouandClaude Opus 5
|
f8654f447b
|
feat(export): 改为按 clusters/ 目录导出,并重定位失效的软链
原来按 assignments.csv 导出,反映的是聚类当时的划分;而 clusters/ 目录会被人工
整理——挪动分错的图、把 cluster_03 改名成 grease。现在以整理后的目录为准。
- 扫描 clusters/ 下的子目录,目录名即类别名并原样保留(不再是数字编号)
- 文件名用原图的名字,去掉 clusters/ 里的 NNNN_ 排序前缀
- 失效软链的重定位:读出链接目标,按其中的 data/ 段落到本机 --source-root 上;
再不行用文件名在源目录里兜底索引(惰性构建,用不到就不扫盘)。
从服务器拷回来的 clusters/ 软链全部指向 /home/deep/... 在本机失效,这是常态
- 解析不到的条目列出并中止,--skip-missing 可忽略
- manifest 记录类别、每张图的原始路径与被跳过的条目
在真实目录上验证:11,212 张、15 个类别,软链 100% 失效但全部重定位成功,
导出后抽查 200 张与原图逐字节一致。跨数据集的数字文件名(blue/113.bmp 与
pearlescent/113.bmp)会被重名检查拦下,--prefix-parent 可化解。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-09-10 11:26:02 +08:00 |
|
 Shaun ZhouandClaude Opus 5
|
9b31473b27
|
feat(export): 支持把原父目录名作为文件名前缀
新增 --prefix-parent:复制时把图片原来的父目录名拼到文件名前
(grease/abc.png -> grease_abc.png)。导出后目录只剩簇号,来源信息本来会丢失,
加前缀能留住它,人工核对时一眼看出某张图原本在哪个目录。
- 重名检查改为按**目标文件名**判重:加前缀后原本会撞车的文件可能就不撞了;
不加前缀而撞车时,报错会提示可以试试这个开关
- manifest.json 记下 prefix_parent,导出的 file 字段也用实际写出的文件名
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-09-08 15:26:00 +08:00 |
|
 Shaun ZhouandClaude Opus 5
|
f8a52c9382
|
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>
|
2026-09-06 13:17:53 +08:00 |
|