news 2026/1/23 8:37:52

输出文件在哪?/root/cv_fft_inpainting_lama目录结构说明

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
输出文件在哪?/root/cv_fft_inpainting_lama目录结构说明

输出文件在哪?/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.htmlid="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.pypost_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处(缺一不可)

  1. 修改启动脚本:在start_app.shmkdir -p outputs改为mkdir -p /data/my_results
  2. 修改主程序:在app.py中搜索outputs/,将所有os.path.join("outputs", ...)替换为os.path.join("/data/my_results", ...)
  3. 修改前端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_lama755(drwxr-xr-x)防止其他用户遍历源码
/root/cv_fft_inpainting_lama/outputs755允许 WebUI 进程写入,禁止其他用户删除
/root/cv_fft_inpainting_lama/models750(drwxr-x---)保护模型权重不被未授权读取(尤其含商业模型时)
/root/cv_fft_inpainting_lama/logs755方便运维人员查看,但禁止写入

执行命令:
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),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/23 8:36:31

GPT-OSS镜像更新策略:平滑升级最佳实践

GPT-OSS镜像更新策略&#xff1a;平滑升级最佳实践 1. 引言&#xff1a;为什么需要关注GPT-OSS的升级策略&#xff1f; 你有没有遇到过这种情况&#xff1a;项目正在运行&#xff0c;用户对话不断涌入&#xff0c;突然发现新版本模型支持更长上下文、推理更快、回答更准——但…

作者头像 李华
网站建设 2026/1/23 8:32:28

ACPI!PciConfigSpaceHandlerWorker函数对Device (PE41)设备的处理

ACPI!PciConfigSpaceHandlerWorker函数对Device (PE41)设备的处理 第一部分&#xff1a; 1: kd> g Breakpoint 48 hit eax00000000 ebx00000000 ecx00002000 edx00002707 esi89810008 edi00000000 eipf740d62c espf791ac4c ebpf791acb0 iopl0 nv up ei pl nz na po …

作者头像 李华
网站建设 2026/1/23 8:30:30

AB实验的关键认知(六)分流单元与分析单元

—关注作者&#xff0c;送A/B实验实战工具包 在设计 AB 实验时&#xff0c;我们经常会遇到这样的灵魂拷问&#xff1a; “这个实验是按人 (User) 分流&#xff0c;还是按访问 (Session) 分流&#xff1f;” “我按人分流了&#xff0c;最后能不能算点击率 (CTR) 的 P 值&#x…

作者头像 李华
网站建设 2026/1/23 8:29:53

Paraformer-large团队协作方案:多人共享识别系统的搭建

Paraformer-large团队协作方案&#xff1a;多人共享识别系统的搭建 在实际业务场景中&#xff0c;语音转文字需求往往不是单人、单次的简单任务。比如会议纪要整理、客服录音分析、教学内容归档等&#xff0c;都需要多人协作、批量处理、统一管理。但市面上大多数ASR工具要么是…

作者头像 李华
网站建设 2026/1/23 8:29:10

如何启用128K上下文?IQuest-Coder-V1原生支持配置教程

如何启用128K上下文&#xff1f;IQuest-Coder-V1原生支持配置教程 1. 为什么128K上下文对程序员真正重要&#xff1f; 你有没有遇到过这些场景&#xff1a; 看着一个3000行的Python服务模块&#xff0c;想让AI帮你定位某个异常处理逻辑&#xff0c;却只能分段粘贴、反复提问…

作者头像 李华
网站建设 2026/1/23 8:23:24

电商必备技能:用科哥镜像批量生成商品透明图

电商必备技能&#xff1a;用科哥镜像批量生成商品透明图 1. 为什么电商运营需要“秒级透明图”&#xff1f; 你有没有遇到过这些场景&#xff1a; 大促前夜&#xff0c;运营同事催着要50张新品主图&#xff0c;每张都要换纯白背景&#xff0c;设计师还在加班抠图直播间临时上…

作者头像 李华