输出文件在哪?/root/cv_fft_inpainting_lama目录结构说明
本文不是讲傅里叶变换原理,也不是教你怎么写FFT代码——而是帮你搞清楚:你点下“ 开始修复”之后,图片到底被存到哪了?整个项目文件夹里哪些是关键目录、哪些可以删、哪些千万别动?尤其适合刚部署完镜像、对着终端发呆、不知道下一步该进哪个文件夹的新手。
1. 先说结论:输出文件默认路径
1.1 核心答案
你修复完成的每一张图,自动保存在以下路径:
/root/cv_fft_inpainting_lama/outputs/- 文件名格式:
outputs_YYYYMMDDHHMMSS.png(例如outputs_20240520143218.png) - 保存时机:点击“ 开始修复” → 后端处理完成 → 立即写入磁盘 → WebUI右侧状态栏同步显示完整路径
- 无需手动下载:浏览器中点击右上角“💾 下载”按钮,即可直接获取最新生成图
- 注意:该目录不保留历史版本——每次修复都会生成新文件,旧文件不会被覆盖,但也不会自动归档或压缩
1.2 验证方法(三步确认)
如果你不确定文件是否真存在,或想用命令行批量处理,可按以下步骤验证:
# 1. 进入项目根目录 cd /root/cv_fft_inpainting_lama # 2. 查看 outputs 目录是否存在且有内容 ls -la outputs/ # 3. 查看最近生成的5个文件(按时间倒序) ls -lt outputs/ | head -n 6正常输出类似:
-rw-r--r-- 1 root root 1245892 May 20 14:32 outputs_20240520143218.png -rw-r--r-- 1 root root 987234 May 20 14:28 outputs_20240520142805.png -rw-r--r-- 1 root root 2103456 May 20 14:15 outputs_20240520141533.png ...小技巧:
ls -lt按修改时间排序,-t表示 newest first;head -n 6显示前6行(含表头),一眼锁定最新结果。
2. 全目录结构逐层解析(/root/cv_fft_inpainting_lama)
2.1 整体结构概览
执行tree -L 2 -d /root/cv_fft_inpainting_lama(如未安装 tree,可用find . -maxdepth 2 -type d | sort替代),你会看到如下骨架:
/root/cv_fft_inpainting_lama ├── app.py # WebUI主程序入口(Flask服务) ├── start_app.sh # 启动脚本(核心!必须用它启动) ├── requirements.txt # Python依赖清单(pip install -r 安装用) ├── models/ # 模型权重存放目录(含 Lama 主干模型) ├── inputs/ # 【可选】用户上传原始图的临时缓存区(WebUI内部使用,非必需) ├── outputs/ # 修复结果唯一出口(本文重点!) ├── static/ # 前端静态资源(CSS/JS/图标) ├── templates/ # HTML模板(index.html 等) ├── utils/ # 工具函数(图像预处理、mask生成、后处理等) └── logs/ # 运行日志(debug.log, error.log,排错必查)提示:
inputs/和outputs/是唯二与用户数据强相关的目录;其余均为系统运行所需,切勿随意删除或改名。
2.2 关键目录详解(按重要性排序)
2.2.1/outputs—— 你的成果仓库(只读+可清理)
- 作用:所有修复完成图的最终落盘位置,WebUI前端“下载”按钮即从此目录读取。
- 权限:
drwxr-xr-x(root可写,其他用户仅可读) - 安全操作建议:
- 可随时
rm outputs/*.png清空(不影响服务运行) - 可
mkdir outputs/archive && mv outputs/outputs_2024* archive/归档旧图 - ❌ 不要
rm -rf outputs(会导致后续修复失败,WebUI报错“无法写入输出目录”)
- 可随时
- 扩展用途:若需对接自动化流程(如定时清理、FTP同步),只需监控此目录新增文件即可。
2.2.2/models—— 模型心脏(严禁改动)
- 作用:存放 Lama 模型权重文件(
.pth)、配置文件(config.yaml)及 FFT 相关预训练模块。 - 典型内容:
models/ ├── lama/ │ ├── best.ckpt # 主模型权重(约1.2GB) │ └── config.yaml # 推理参数(分辨率、batch size等) └── fft/ └── fft_enhance.pth # 科哥二次开发的频域增强模块 - 为什么不能动?
删除best.ckpt→ 启动时报FileNotFoundError: [Errno 2] No such file...
修改config.yaml→ 可能导致图像变形、色彩失真或推理卡死 - 升级提示:如需更新模型,应由开发者提供新版
.ckpt文件,并严格按文档替换,而非自行训练。
2.2.3/logs—— 排错第一现场(建议定期查看)
- 作用:记录服务启动、请求处理、异常报错的完整流水。
- 关键日志文件:
debug.log:详细请求链路(含输入图尺寸、mask大小、耗时统计)error.log:仅记录ERROR级别错误(如CUDA内存不足、OpenCV解码失败)
- 实用排查场景:
- 修复后页面空白?→
tail -n 20 logs/error.log查 GPU 内存溢出 - 上传图片失败?→
grep "upload" logs/debug.log | tail -n 5看 MIME 类型校验结果 - 处理时间超长?→
grep "inference time" logs/debug.log | tail -n 10统计平均延迟
- 修复后页面空白?→
2.2.4/static与/templates—— 前端皮肤(定制化入口)
- 作用:控制 WebUI 界面外观。科哥已在此集成微信二维码、版权声明等二次开发元素。
- 可安全修改项:
static/css/style.css:调整按钮颜色、字体大小、布局间距templates/index.html:修改标题文字、添加自定义说明(如公司水印)
- 禁止修改项:
static/js/app.js中的sendInpaintRequest()函数(负责调用后端API)templates/index.html中id="output-image"等关键DOM ID(前端JS依赖)
- 生效方式:修改后需重启服务(
Ctrl+C+bash start_app.sh),无需重新构建镜像。
2.2.5/utils—— 功能引擎(深度定制基础)
- 作用:封装所有图像处理逻辑,是科哥二次开发的核心区域。
- 关键模块说明:
utils/inpainting.py:主修复函数,调用 Lama 模型 + FFT 增强模块utils/mask_processing.py:将画笔标注(白色mask)转为模型可读格式,并做边缘羽化utils/io.py:统一读写接口,强制转换 BGR↔RGB、处理 Alpha 通道、自动适配 WEBP/PNG
- 为什么值得了解?
若你想:
→ 改变默认保存格式(如强制输出 JPG)→ 修改io.save_image()中的cv2.imwrite(..., '.jpg')
→ 调整羽化强度(让边缘更自然)→ 修改mask_processing.apply_gaussian_blur()的 sigma 参数
→ 添加自定义后处理(如锐化)→ 在inpainting.py的post_process()函数末尾插入cv2.filter2D()
3. 启动脚本start_app.sh深度拆解
3.1 脚本内容还原(精简版)
#!/bin/bash # /root/cv_fft_inpainting_lama/start_app.sh # 1. 切换到项目目录(避免路径错误) cd /root/cv_fft_inpainting_lama # 2. 激活Python环境(假设使用系统Python3.10) source /opt/conda/bin/activate base # 3. 安装缺失依赖(首次运行时触发) if [ ! -f ".deps_installed" ]; then pip install -r requirements.txt --quiet touch .deps_installed fi # 4. 创建必要目录(防首次运行失败) mkdir -p outputs logs inputs # 5. 启动Flask服务(关键参数!) python app.py \ --host 0.0.0.0 \ --port 7860 \ --debug False \ --log-level info \ > logs/debug.log 2>&1 & # 6. 记录进程PID echo $! > logs/app.pid # 7. 打印成功提示 echo "=====================================" echo "✓ WebUI已启动" echo "访问地址: http://0.0.0.0:7860" echo "本地访问: http://127.0.0.1:7860" echo "按 Ctrl+C 停止服务" echo "====================================="3.2 你必须知道的3个隐藏机制
| 机制 | 说明 | 你能做什么 |
|---|---|---|
| 自动目录创建 | mkdir -p outputs logs inputs确保即使你手动删了outputs/,重启后也会重建 | 放心清理outputs/,不必担心服务崩溃 |
| 静默依赖安装 | touch .deps_installed防止每次启动都重装 pip 包(节省时间) | 若更新requirements.txt,先rm .deps_installed再重启 |
| 后台进程守护 | > logs/debug.log 2>&1 &将所有输出重定向到日志,避免终端刷屏 | 查看实时日志:tail -f logs/debug.log |
4. 常见路径问题实战解答
4.1 Q:为什么我ls /root/cv_fft_inpainting_lama/outputs/是空的,但WebUI显示“已保存至xxx.png”?
A:路径显示的是相对路径,实际保存路径 = 当前工作目录 + 相对路径
- WebUI前端显示的
outputs_2024...png是相对于 WebUI 服务根目录的路径 - 但你的终端当前可能在
/home/user/,所以ls outputs/找不到
正确做法:先cd /root/cv_fft_inpainting_lama,再ls outputs/
4.2 Q:能否把输出目录改成/data/my_results?需要改哪些地方?
A:可以,但需改3处(缺一不可)
- 修改启动脚本:在
start_app.sh中mkdir -p outputs改为mkdir -p /data/my_results - 修改主程序:在
app.py中搜索outputs/,将所有os.path.join("outputs", ...)替换为os.path.join("/data/my_results", ...) - 修改前端JS:在
static/js/app.js中搜索outputs/,更新下载链接拼接逻辑
注意:/data目录需提前mkdir -p /data && chown -R root:root /data
4.3 Q:inputs/目录里的文件是上传的原图吗?能删吗?
A:是临时缓存,可安全删除
inputs/存放用户上传后、尚未开始修复的原始图(带时间戳命名)- 一旦点击“ 开始修复”,该文件会被立即读取并加载进内存,随后自动删除
建议:每天find /root/cv_fft_inpainting_lama/inputs -mmin +60 -delete清理1小时前的残留
4.4 Q:日志文件越来越大,会占满磁盘吗?如何轮转?
A:默认不轮转,但可快速启用 logrotate
# 创建 logrotate 配置 cat > /etc/logrotate.d/cv_fft_inpainting << 'EOF' /root/cv_fft_inpainting_lama/logs/*.log { daily missingok rotate 30 compress delaycompress notifempty create 644 root root sharedscripts } EOF # 手动触发一次轮转测试 logrotate -f /etc/logrotate.d/cv_fft_inpainting效果:每天切割日志,保留30天,自动压缩(debug.log.1.gz,debug.log.2.gz...)
5. 安全运维建议(生产环境必读)
5.1 目录权限黄金法则
| 目录 | 推荐权限 | 原因 |
|---|---|---|
/root/cv_fft_inpainting_lama | 755(drwxr-xr-x) | 防止其他用户遍历源码 |
/root/cv_fft_inpainting_lama/outputs | 755 | 允许 WebUI 进程写入,禁止其他用户删除 |
/root/cv_fft_inpainting_lama/models | 750(drwxr-x---) | 保护模型权重不被未授权读取(尤其含商业模型时) |
/root/cv_fft_inpainting_lama/logs | 755 | 方便运维人员查看,但禁止写入 |
执行命令:
chmod 755 /root/cv_fft_inpainting_lama /root/cv_fft_inpainting_lama/{outputs,logs}chmod 750 /root/cv_fft_inpainting_lama/models
5.2 磁盘空间监控(防意外占满)
# 创建监控脚本 /usr/local/bin/check_cv_disk.sh cat > /usr/local/bin/check_cv_disk.sh << 'EOF' #!/bin/bash THRESHOLD=85 CURRENT=$(df /root | grep '/root' | awk '{print $5}' | sed 's/%//') if [ "$CURRENT" -gt "$THRESHOLD" ]; then echo "$(date): /root usage $CURRENT% > $THRESHOLD%" | mail -s "ALERT: cv_fft disk full" admin@example.com # 自动清理 outputs 超过7天的文件 find /root/cv_fft_inpainting_lama/outputs -mtime +7 -name "*.png" -delete fi EOF chmod +x /usr/local/bin/check_cv_disk.sh # 加入定时任务(每天上午9点检查) (crontab -l 2>/dev/null; echo "0 9 * * * /usr/local/bin/check_cv_disk.sh") | crontab -6. 总结:一句话记住关键路径
所有你亲手修复的图片,都在
/root/cv_fft_inpainting_lama/outputs/里安安静静地躺着;而/root/cv_fft_inpainting_lama/models/是它的心脏,/root/cv_fft_inpainting_lama/logs/是它的脉搏,/root/cv_fft_inpainting_lama/start_app.sh是它的开关——弄清这四者,你就真正掌控了这个镜像。
--- > **获取更多AI镜像** > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场](https://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。