unet人像卡通化输出在哪?outputs目录结构一文详解
1. 这个工具到底在做什么?
你可能已经试过上传一张自拍照,点下“开始转换”,几秒钟后就看到自己变成漫画人物的效果——没错,这就是基于 UNet 架构的人像卡通化工具。它不是简单加滤镜,而是用深度学习模型理解人脸结构、肤色分布、光影关系后,重新“画”出一张风格统一、细节自然的卡通图。
很多人第一次用完,第一反应是:“效果真不错!但生成的图到底存在哪了?”
第二反应是:“我刚处理了20张图,怎么只找到1个文件?”
第三反应是:“批量下载的ZIP里图片命名乱七八糟,怎么对应原图?”
别急,这篇就专门讲清楚:所有输出文件的落脚点在哪、按什么规则组织、怎么快速定位、怎么批量管理。不讲模型原理,不堆参数,只说你真正会打开文件夹去翻的那一部分。
2. outputs 目录在哪?长什么样?
2.1 默认路径与访问方式
工具运行后,所有生成结果默认保存在项目根目录下的outputs/文件夹中。
路径是固定的:
/root/unet-person-cartoon/outputs/注意:这是容器内路径(如果你用 Docker 或星图镜像部署),宿主机映射后通常对应
/var/lib/docker/volumes/...下某处;但你不需要手动找宿主机路径——只要进 WebUI 界面,或执行ls /root/unet-person-cartoon/outputs/就能直接看到。
我们先看一眼这个目录的真实结构(模拟真实运行后的样子):
$ ls -l /root/unet-person-cartoon/outputs/ total 48 drwxr-xr-x 2 root root 4096 Jan 4 15:22 20260104_152233_batch_001 drwxr-xr-x 2 root root 4096 Jan 4 15:23 20260104_152317_batch_002 -rw-r--r-- 1 root root 1245 Jan 4 15:22 outputs_20260104_152211.png -rw-r--r-- 1 root root 1387 Jan 4 15:22 outputs_20260104_152218.png -rw-r--r-- 1 root root 1420 Jan 4 15:22 outputs_20260104_152225.png -rw-r--r-- 1 root root 1503 Jan 4 15:22 outputs_20260104_152231.png -rw-r--r-- 1 root root 1362 Jan 4 15:22 outputs_20260104_152232.png你会发现:既有单个.png文件,也有以YYYYMMDD_HHMMSS_batch_XXX命名的文件夹。这正是区分“单图”和“批量”输出的关键。
2.2 单图转换 → 输出到根 outputs/ 下
每次你在「单图转换」页点击“开始转换”,系统会立刻生成一个独立文件,存入outputs/根目录,命名格式为:
outputs_年月日时分秒.格式例如:
outputs_20260104_152211.pngoutputs_20260104_152218.jpgoutputs_20260104_152225.webp
特点:
- 文件名自带精确时间戳,避免覆盖
- 不依赖原图文件名(上传
myface.jpg也会变成outputs_XXXX.png) - 每次转换都新建一个文件,历史结果全保留
注意:WebUI 界面右上角的「下载结果」按钮,下载的就是这个刚生成的文件——它和outputs/里的文件是同一个,只是帮你省了一步手动复制。
2.3 批量转换 → 输出到子文件夹,结构清晰可追溯
当你在「批量转换」页上传 5 张、12 张甚至 20 张图,系统不会把它们全塞进根目录。而是创建一个专属批次文件夹,例如:
20260104_152233_batch_001/ ├── input_list.txt ├── result_001_张三.jpg.png ├── result_002_李四证件照.png.jpg ├── result_003_全家福_缩略版.webp └── summary.json文件夹名20260104_152233_batch_001的含义是:
| 部分 | 含义 | 示例 |
|---|---|---|
20260104 | 批次启动日期(年月日) | 2026年1月4日 |
_152233 | 启动时间(时分秒) | 15:22:33 |
_batch_001 | 批次序号,自动递增 | 第1批 |
子文件夹内包含:
input_list.txt:纯文本,记录你上传的每张图原始文件名(含扩展名),按上传顺序排列result_XXX_原文件名.格式:生成图,XXX是序号(001/002…),原文件名是你上传时的名字(自动截断过长部分,保留关键信息)summary.json:结构化记录,含每张图的处理耗时、输入尺寸、输出尺寸、风格强度等元数据,方便程序读取
小技巧:想快速知道某张生成图对应哪张原图?直接打开
input_list.txt,第3行就是result_003_XXX的来源。
3. 为什么这样设计?背后有啥讲究?
你可能会问:为什么不全用outputs_时间戳.png?或者干脆按原图名保存?
答案是:兼顾确定性、可追溯性、工程友好性。
| 场景 | 纯时间戳命名(单图) | 批次文件夹(批量) | 为什么这么选? |
|---|---|---|---|
| 单图调试 | 快速验证、无冲突、易清理 | ❌ 太重,没必要建文件夹 | 单次操作,轻量优先 |
| 批量生产 | ❌ 20个outputs_XXXX.png完全无法区分来源 | 一目了然、可归档、支持重跑 | 避免混淆,降低人工核对成本 |
| 脚本调用 | ❌ 无法关联输入 | input_list.txt+summary.json支持自动化解析 | 为后续集成留接口 |
| 用户自查 | 只能靠时间猜 | 打开文件夹即见原图名 | 减少认知负担,小白友好 |
科哥在构建时特别强调一点:工具要让人“不用查文档也能猜对路径”。所以outputs/是唯一出口,batch_XXX是唯一批量载体,没有隐藏路径,没有二级嵌套,没有临时缓存区。
4. 实操指南:3 种高频需求,手把手解决
4.1 需求一:我刚转了1张图,但没点下载,文件在哪?
步骤:
- 打开终端(或进入容器命令行)
- 输入:
ls -t /root/unet-person-cartoon/outputs/ | head -n 5
(-t按修改时间倒序,head -n 5只看最新的5个) - 找到最新那个
outputs_YYYYMMDD_HHMMSS.xxx文件 - 用
cp复制出来,或用cat查看内容(如果是 PNG,可用file命令确认类型)
提示:WebUI 界面右上角的「下载结果」本质就是读取这个最新文件并返回 HTTP 响应,所以它永远和你看到的最新文件一致。
4.2 需求二:我批量处理了15张图,ZIP 下载后发现名字乱,怎么还原原图顺序?
正确做法(不用猜):
- 进入对应批次文件夹,例如
20260104_152233_batch_001/ cat input_list.txt,你会看到:
IMG_20251228_101233.jpg portrait_lihua.png family_group_2025.jpg ...ls result_*.png列出生成文件,按字母序就是处理顺序:result_001_IMG_20251228_101233.jpg.png→ 对应第1行result_002_portrait_lihua.png.jpg→ 对应第2行
进阶技巧:用 Python 一行重命名(在批次文件夹内执行):
# 重命名为 "原文件名_cartoon.格式" import os, re for f in os.listdir('.'): if f.startswith('result_') and '.' in f: m = re.match(r'result_\d+_(.+?)\.(jpg|png|webp)\.(\w+)', f) if m: orig_name, orig_ext, out_ext = m.groups() new_name = f"{orig_name}_cartoon.{out_ext}" os.rename(f, new_name)4.3 需求三:我想清空所有输出,但又怕删错重要文件?
安全清理三步法:
- 只删 outputs/ 下的内容,不删 outputs 文件夹本身
rm -rf /root/unet-person-cartoon/outputs/* - 验证是否清空:
ls -A /root/unet-person-cartoon/outputs/ # 应该无输出 - (可选)保留最近3次批量记录:
ls -t /root/unet-person-cartoon/outputs/ | grep batch_ | tail -n +4 | xargs -r rm -rf
绝对禁止:rm -rf /root/unet-person-cartoon/outputs(少斜杠会删掉整个项目目录!)
5. 高级玩家必看:如何自定义输出位置?
虽然默认路径固定,但你完全可以通过修改启动脚本实现路径重定向。
5.1 修改 run.sh,指定 outputs 目录
打开/root/run.sh,找到类似这行(实际可能略有不同):
python app.py --output_dir /root/unet-person-cartoon/outputs把它改成你想要的路径,例如:
python app.py --output_dir /data/cartoon_outputs然后确保目标目录存在且有写权限:
mkdir -p /data/cartoon_outputs chmod 755 /data/cartoon_outputs重启应用即可:
/bin/bash /root/run.sh效果:所有新生成文件将写入/data/cartoon_outputs/,原outputs/不再产生新文件。
5.2 挂载宿主机目录(Docker 用户)
如果你用 Docker 运行,可在docker run时添加:
-v /your/host/path:/root/unet-person-cartoon/outputs这样容器内的outputs/就实时同步到你的电脑指定文件夹,双击就能打开查看,无需进命令行。
6. 常见误区与避坑提醒
❌ 误区1:“outputs目录是空的,是不是没生成成功?”
→ 实际原因:你可能在浏览器里点了「下载」,但没注意文件被浏览器自动保存到「下载」文件夹(如~/Downloads/outputs_20260104_152211.png),而outputs/目录确实有同名文件。两者是同一份,只是路径不同。
正解:始终以outputs/目录为准,它是唯一权威存储区。
❌ 误区2:“批量处理后,outputs/里多了几个单独的 outputs_XXX.png,是不是重复生成了?”
→ 实际原因:你在批量处理过程中,又切到「单图转换」页试了一张图——它会独立生成一个outputs_XXX.png,和批量文件夹无关。
正解:outputs/根目录下所有outputs_XXX.*都是单图任务;所有batch_XXX文件夹都是批量任务。互不干扰。
❌ 误区3:“我改了输出格式为 JPG,但生成的还是 PNG?”
→ 实际原因:WebUI 参数设置后,必须点击「开始转换」或「批量转换」才会生效。仅修改下拉框不触发保存逻辑。
正解:每次调参后,务必点执行按钮。界面右上角的「处理信息」栏会显示当前使用的格式,可实时验证。
7. 总结:记住这 3 句话,永不出错
1. 所有输出,只进一个门:outputs/目录
2. 单图直出根目录,批量独占子文件夹
3. 找不到文件?先看input_list.txt,再查时间戳,最后ls -t排序
这套结构不是为了炫技,而是让每一次转换都“可审计、可回溯、可批量”。你不需要记住模型怎么训练,也不用搞懂 UNet 的跳跃连接,只要清楚文件在哪、怎么命名、怎么管理,就能把这个人像卡通化工具真正用起来、用得稳、用得久。
科哥的设计哲学很简单:技术藏在背后,体验摆在前面。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。