news 2026/4/2 11:55:49

fft npainting lama输出目录自定义:修改save路径实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
fft npainting lama输出目录自定义:修改save路径实战

fft npainting lama输出目录自定义:修改save路径实战

1. 背景与目标

你可能已经用过fft npainting lama这个图像修复工具,它基于 FFT(快速傅里叶变换)和深度学习模型实现高质量的图像重绘与物品移除。默认情况下,修复后的图像会保存在固定路径下,比如/root/cv_fft_inpainting_lama/outputs/。但在实际使用中,我们常常希望将结果输出到自定义目录,比如挂载的NAS、外部存储或项目指定文件夹。

本文将带你实战修改fft npainting lama的 save 路径,实现灵活输出,适用于二次开发、自动化流程集成或团队协作场景。整个过程无需复杂代码重构,只需定位关键配置并做安全调整。


2. 系统结构回顾

2.1 项目目录结构

/root/cv_fft_inpainting_lama/ ├── app.py # WebUI主程序 ├── config.yaml # 配置文件(可能包含路径设置) ├── start_app.sh # 启动脚本 ├── models/ # 模型权重存放 ├── inputs/ # 输入图像临时目录 ├── outputs/ # 默认输出目录 ← 我们要改的就是这里 └── utils/inference.py # 推理逻辑核心模块

注意:不同部署版本路径可能略有差异,但整体结构一致。


3. 定位保存路径代码位置

3.1 查找输出写入逻辑

打开项目中的核心推理文件:

nano /root/cv_fft_inpainting_lama/utils/inference.py

搜索关键词"save""output",找到类似如下代码段:

import os from PIL import Image def save_output(image, output_dir="/root/cv_fft_inpainting_lama/outputs"): if not os.path.exists(output_dir): os.makedirs(output_dir) timestamp = datetime.now().strftime("%Y%m%d%H%M%S") filename = f"output_{timestamp}.png" filepath = os.path.join(output_dir, filename) image.save(filepath) return filepath

这就是控制图像保存的核心函数 ——save_output(),其中output_dir是硬编码的默认路径。


4. 修改输出路径的三种方式

4.1 方法一:直接修改默认路径(最简单)

步骤:
  1. 编辑inference.py
  2. 找到save_output函数
  3. 将硬编码路径改为你的目标目录
# 修改前 output_dir="/root/cv_fft_inpainting_lama/outputs" # 修改后(示例) output_dir="/mnt/mydisk/ai_repair_results"
创建目标目录(如未存在):
mkdir -p /mnt/mydisk/ai_repair_results chown -R root:root /mnt/mydisk/ai_repair_results

优点:简单直接,适合固定用途
缺点:不支持动态切换,需重启服务生效


4.2 方法二:通过环境变量传参(推荐)

让路径可配置,提升灵活性。

修改save_output函数:
import os def save_output(image): output_dir = os.getenv("FFT_OUTPUT_DIR", "/root/cv_fft_inpainting_lama/outputs") if not os.path.exists(output_dir): os.makedirs(output_dir) timestamp = datetime.now().strftime("%Y%m%d%H%M%S") filename = f"output_{timestamp}.png" filepath = os.path.join(output_dir, filename) image.save(filepath) return filepath
设置环境变量(两种方式)
方式 A:启动前导出
export FFT_OUTPUT_DIR="/home/user/repair_outputs" cd /root/cv_fft_inpainting_lama bash start_app.sh
方式 B:在start_app.sh中内置

编辑脚本:

nano /root/cv_fft_inpainting_lama/start_app.sh

添加一行:

export FFT_OUTPUT_DIR="/data/ai_images/removed_objects"

然后正常启动即可。

优点:无需改代码,部署时自由切换路径
支持 Docker 化部署时通过-e参数传递
推荐用于生产环境或多人共用系统


4.3 方法三:WebUI 前端传参(高级定制)

如果你正在做二次开发,可以扩展 WebUI 功能,让用户在界面上输入保存路径。

实现思路:
  1. 在前端 HTML/JS 中增加一个输入框:

    <input type="text" id="savePath" placeholder="/custom/output/path" />
  2. 将该值作为参数发送给后端 API

  3. 后端接收并验证路径合法性,再调用save_output(image, custom_path)

示例后端接口修改(app.py):
@app.route('/inpaint', methods=['POST']) def inpaint(): data = request.json image_base64 = data['image'] mask_base64 = data['mask'] custom_output_dir = data.get('output_dir') # 新增字段 # ...处理图像... result_image = model.inpaint(img, mask) # 使用用户指定路径 if custom_output_dir and is_safe_path(custom_output_dir): filepath = save_output(result_image, custom_output_dir) else: filepath = save_output(result_image) return jsonify({"result": "success", "saved_to": filepath})

安全提示:必须校验路径合法性,防止路径穿越攻击(如../../../etc/passwd

优点:完全动态,适合企业级应用
缺点:需要前后端协同开发,有一定门槛


5. 权限与路径安全注意事项

5.1 文件系统权限问题

确保运行服务的用户对目标目录有写权限:

# 检查当前用户 whoami # 授予写权限 sudo chown -R $(whoami) /your/custom/output/path sudo chmod -R 755 /your/custom/output/path

5.2 路径合法性校验(防注入)

建议添加基础校验函数:

import os def is_safe_path(path): base_dir = "/mnt" # 允许的根目录 try: real_base = os.path.realpath(base_dir) real_path = os.path.realpath(path) return os.path.commonpath([real_base]) == os.path.commonpath([real_base, real_path]) except: return False

避免恶意路径导致系统文件被覆盖。


6. 测试验证流程

6.1 修改完成后测试步骤

  1. 重启服务:

    cd /root/cv_fft_inpainting_lama bash start_app.sh
  2. 访问 WebUI:http://你的IP:7860

  3. 上传一张图片,涂抹区域,点击“开始修复”

  4. 查看状态栏返回的保存路径是否为新路径

  5. 登录服务器检查文件是否存在:

    ls -l /your/custom/output/path/
  6. 打开图片确认内容正确无误


7. 结合自动化脚本使用(拓展场景)

你可以将这个能力整合进批处理脚本中,例如:

#!/bin/bash # batch_remove_watermark.sh export FFT_OUTPUT_DIR="/data/batch_run_20250405/watermark_removed" cd /root/cv_fft_inpainting_lama nohup python -m flask run --host=0.0.0.0 --port=7860 > app.log 2>&1 & sleep 10 # 等待服务启动 echo "服务已启动,开始推送任务..." # 这里可以用 curl 模拟前端请求自动修复图像

这样就能实现无人值守的批量图像修复流水线。


8. 总结

8.1 三种路径修改方式对比

方法难度灵活性是否推荐适用场景
直接修改代码路径☆☆☆☆初学者固定用途
环境变量控制☆☆☆强烈推荐多环境部署
WebUI 动态传参极高二次开发/产品化

8.2 核心要点回顾

  • 图像保存路径通常位于utils/inference.py或类似模块
  • 推荐使用环境变量控制输出路径,兼顾安全与灵活
  • 修改后务必测试路径可写性和权限问题
  • 若用于生产,请加入路径白名单校验机制
  • 可结合定时任务、Docker、CI/CD 实现自动化图像处理流水线

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/12 15:25:31

是否该选Qwen3-14B?双模式推理适用场景深度解析教程

是否该选Qwen3-14B&#xff1f;双模式推理适用场景深度解析教程 1. 为什么Qwen3-14B正在悄悄改变本地部署的门槛 你有没有过这样的经历&#xff1a;想在自己电脑上跑一个真正好用的大模型&#xff0c;结果发现—— 要么参数太小&#xff0c;写个周报都词不达意&#xff1b; 要…

作者头像 李华
网站建设 2026/3/25 13:17:49

学生党也能玩转!Z-Image-Turbo低成本部署方案

学生党也能玩转&#xff01;Z-Image-Turbo低成本部署方案 你是不是也曾经被那些动辄上万的AI绘画云服务劝退&#xff1f;想自己搭个文生图系统&#xff0c;却发现显存不够、环境难配、下载慢得像蜗牛&#xff1f;别急&#xff0c;今天我要分享一个真正适合学生党和预算有限用户…

作者头像 李华
网站建设 2026/3/30 6:36:01

一分钟学会!科哥UNet抠图工具新手教程

一分钟学会&#xff01;科哥UNet抠图工具新手教程 你是不是还在为复杂的图像抠图烦恼&#xff1f;每次都要打开专业软件&#xff0c;花十几分钟甚至更久才能把一个人像从背景里分离出来。现在&#xff0c;有个更简单的方法——科哥UNet图像抠图WebUI工具&#xff0c;无需代码、…

作者头像 李华
网站建设 2026/4/1 19:45:49

开源模型部署新选择:BERT中文填空镜像免配置上线

开源模型部署新选择&#xff1a;BERT中文填空镜像免配置上线 1. BERT 智能语义填空服务 你有没有遇到过这样的场景&#xff1a;写文章时卡在一个词上&#xff0c;怎么都想不出最合适的表达&#xff1f;或者读古诗时看到一句“疑是地[MASK]霜”&#xff0c;下意识就想补个“上…

作者头像 李华
网站建设 2026/3/28 8:22:19

YOLO26数据集怎么配?data.yaml修改步骤详解

YOLO26数据集怎么配&#xff1f;data.yaml修改步骤详解 最新 YOLO26 官方版训练与推理镜像 本镜像基于 YOLO26 官方代码库 构建&#xff0c;预装了完整的深度学习开发环境&#xff0c;集成了训练、推理及评估所需的所有依赖&#xff0c;开箱即用。 1. 镜像环境说明 核心框架…

作者头像 李华
网站建设 2026/3/14 12:23:00

农业物联网系统如何优化CKEditor的跨平台图片粘贴?

CMS企业官网项目 - 编辑器Word导入功能集成记录 需求分析 作为四川的一名PHP程序员&#xff0c;最近接手的CMS企业官网项目客户提出了一个新需求&#xff1a;在CKEditor 4编辑器中实现Word等文档的一键导入功能。具体要求包括&#xff1a; 支持Word/Excel/PPT/PDF文档导入支…

作者头像 李华