图像修复中间结果保存:fft npainting lama阶段性输出
1. 项目背景与核心功能
图像修复技术在数字内容创作、老照片恢复、广告设计等领域有着广泛的应用。传统的图像编辑方式依赖人工操作,耗时且难以保证自然过渡效果。而基于深度学习的图像修复模型,如LaMa(Large Mask Inpainting),结合FFT预处理和non-local painting策略,能够智能填充大范围缺失区域,实现高质量的内容重建。
本项目由科哥进行二次开发,构建了一套完整的 WebUI 系统,集成fft + npainting + lama多阶段修复流程,支持用户通过图形界面完成图像上传、区域标注、自动修复及结果保存等操作。系统不仅提升了易用性,还特别增强了对中间结果保存的支持,便于多轮修复、分步调试和效果对比。
2. 系统架构与运行环境
2.1 技术栈组成
| 组件 | 功能说明 |
|---|---|
| LaMa 模型 | 主干修复网络,擅长处理大面积遮挡 |
| FFT 预处理模块 | 利用频域信息增强边缘连续性和纹理一致性 |
| Non-local Painting 策略 | 引导生成器关注远距离上下文,提升结构合理性 |
| Gradio WebUI | 提供可视化交互界面,支持画笔标注与实时反馈 |
| OpenCV + PyTorch | 图像处理与模型推理底层支撑 |
该系统部署于 Linux 环境,路径位于/root/cv_fft_inpainting_lama,启动脚本为start_app.sh,默认服务端口为7860。
2.2 启动与访问方式
在终端执行以下命令即可启动服务:
cd /root/cv_fft_inpainting_lama bash start_app.sh成功启动后会显示如下提示:
===================================== ✓ WebUI已启动 访问地址: http://0.0.0.0:7860 本地访问: http://127.0.0.1:7860 按 Ctrl+C 停止服务 =====================================随后,在浏览器中输入服务器IP:7860即可进入操作界面。
3. 核心功能详解:图像修复全流程
3.1 界面布局与功能分区
系统主界面采用双栏设计,左侧为编辑区,右侧为结果展示区,整体结构清晰直观。
┌─────────────────────────────────────────────────────┐ │ 🎨 图像修复系统 │ │ webUI二次开发 by 科哥 | 微信:312088415 │ ├──────────────────────┬──────────────────────────────┤ │ │ │ │ 🎨 图像编辑区 │ 📷 修复结果 │ │ │ │ │ [图像上传/编辑] │ [修复后图像显示] │ │ │ │ │ [🚀 开始修复] │ 📊 处理状态 │ │ [🔄 清除] │ [状态信息显示] │ └──────────────────────┴──────────────────────────────┘左侧:图像编辑区
- 支持拖拽上传或点击选择图像
- 内置画笔与橡皮擦工具,用于手动标注待修复区域(mask)
- 可调整画笔大小,精确控制标注范围
右侧:结果展示区
- 实时显示修复后的图像
- 显示处理状态与输出文件路径
- 自动保存结果至指定目录
3.2 使用步骤详解
第一步:上传原始图像
支持以下三种方式:
- 点击上传:点击上传区域选择文件
- 拖拽上传:将图片直接拖入编辑区
- 粘贴上传:复制图像后使用 Ctrl+V 粘贴
支持格式包括:PNG、JPG、JPEG、WEBP。推荐使用 PNG 格式以保留最佳质量。
第二步:绘制修复区域(Mask)
这是决定修复效果的关键步骤。
选择画笔工具
默认状态下已激活画笔,若切换回画笔,请点击工具图标。调整画笔尺寸
使用滑块调节笔触大小:- 小画笔适用于细节修补(如面部瑕疵)
- 大画笔适合快速覆盖大面积区域(如水印、文字)
涂抹需要移除的部分
在目标物体上涂白,白色区域即为模型将要“重绘”的部分。务必确保完全覆盖,避免遗漏。使用橡皮擦修正
若误标或多标,可用橡皮擦工具清除多余部分,精细调整边界。
提示:建议略微扩大标注范围,让系统有更多上下文参考,有助于边缘融合更自然。
第三步:执行图像修复
点击"🚀 开始修复"按钮,系统将依次执行以下流程:
- 对原图进行 FFT 频域分析,提取全局结构特征
- 应用 non-local attention 机制引导生成过程
- 调用 LaMa 模型完成像素级重建
- 输出修复图像并自动保存
处理时间根据图像尺寸而定:
- 小图(<500px)约 5 秒
- 中图(500–1500px)约 10–20 秒
- 大图(>1500px)可能需 30–60 秒
第四步:查看与下载结果
修复完成后,右侧窗口将显示最终图像。同时,状态栏会提示:
完成!已保存至: /root/cv_fft_inpainting_lama/outputs/outputs_YYYYMMDDHHMMSS.png文件按时间戳命名,防止覆盖。可通过 FTP 或本地文件管理器下载。
4. 中间结果保存机制解析
4.1 为什么需要保存中间结果?
在实际应用中,往往需要对同一张图像进行多次、分区域修复。例如:
- 先去除背景中的广告牌
- 再修复人物面部皱纹
- 最后清理角落的文字标签
如果每次修复都从原始图像开始,前一次的成果就会丢失。因此,中间结果的保存与再利用至关重要。
4.2 系统如何实现阶段性输出?
本系统通过以下机制支持中间结果管理:
自动保存每轮输出
每次点击“开始修复”,无论是否为最终成品,系统都会将结果写入outputs/目录,文件名包含完整时间戳。支持修复链式操作
用户可将上一轮的输出图像重新上传,作为下一轮修复的输入基础。这样既能保留已有修复成果,又能继续处理新区域。状态隔离机制
每次“清除”操作仅重置当前会话的标注图层,不影响已保存的文件。历史记录独立存储,便于追溯。非破坏性编辑理念
所有修改均基于副本进行,原始图像始终不受影响,保障数据安全。
4.3 实战案例:分步移除多个物体
假设有一张风景照,包含两个需要去除的元素:电线杆和路标牌。
操作流程如下:
- 上传原始图像
- 用大画笔圈出电线杆区域 → 点击“开始修复”
- 下载输出图像
outputs_20250405102312.png - 重新上传该图像
- 标注路标牌区域 → 再次修复
- 得到最终结果
outputs_20250405102545.png
通过这种方式,实现了渐进式修复,避免一次性处理多个复杂区域导致结构错乱或纹理失真。
5. 高级技巧与优化建议
5.1 分层修复策略
对于结构复杂的图像,建议采用“由粗到细”的分层修复方法:
第一层:大区域填充
快速去除大面积干扰物(如横幅、车辆),使用较大画笔,注重整体连贯性。第二层:细节精修
针对边缘残留、颜色偏差等问题,缩小画笔精细标注,局部微调。第三层:风格统一
若前后修复区域风格不一致,可适当添加噪声或模糊处理,使视觉更协调。
5.2 边缘融合优化技巧
常见问题:修复后边缘出现明显接缝或色差。
解决方案:
- 标注时向外扩展 5–10 像素,给模型留出羽化空间
- 避免紧贴物体边缘画线,应包含部分周围背景
- 如仍有痕迹,可对修复区域轻微高斯模糊处理(外部软件辅助)
5.3 批量处理建议
虽然当前 WebUI 不支持全自动批量处理,但可通过脚本扩展实现:
#!/bin/bash for img in ./input/*.png; do python inference.py \ --input $img \ --output ./output/$(basename $img) \ --mask ./masks/$(basename $img) done未来版本可考虑集成 CLI 模式,支持命令行调用与定时任务调度。
6. 常见应用场景实战
6.1 去除水印与LOGO
适用场景:电商平台商品图、自媒体配图去水印。
操作要点:
- 水印通常位于角落,背景较简单,修复难度低
- 半透明水印建议扩大标注范围,帮助模型推断底层纹理
- 可重复修复 1–2 次,逐步淡化残留痕迹
6.2 移除无关物体
适用场景:摄影后期去路人、建筑摄影去杂物。
优势体现:
- LaMa 模型能根据周围墙面、地面纹理智能补全
- FFT 预处理增强几何结构连续性,减少扭曲变形
- non-local 模块捕捉远处相似纹理,提升真实感
6.3 修复老照片瑕疵
适用场景:划痕、污渍、折痕修复。
注意事项:
- 使用小画笔逐点处理,避免误伤正常区域
- 对人脸区域尤其谨慎,必要时配合专业修图工具
- 可先在副本上试验不同参数,确认效果后再正式修复
6.4 清除图像中的文字
适用场景:文档扫描件去手写笔记、海报去旧标语。
技巧提示:
- 大段文字建议分块处理,避免一次性覆盖过多区域
- 字体边缘锐利,需注意标注完整性
- 若背景为规则图案(如格子、条纹),修复效果更佳
7. 注意事项与问题排查
7.1 关键使用提醒
- ✅确保标注完整:未被白色覆盖的区域不会参与修复
- ✅控制图像尺寸:建议不超过 2000x2000 像素,否则内存占用高、处理慢
- ✅优先使用 PNG:JPG 存在压缩伪影,可能影响修复质量
- ✅合理预期效果:极端复杂场景(如密集人群中间去人)仍具挑战
7.2 常见问题解答
| 问题 | 解决方案 |
|---|---|
| 修复后颜色偏暗或偏色 | 检查是否为 BGR 格式输入,系统已内置转换但仍偶发异常 |
| 边缘有明显拼接痕迹 | 扩大标注范围,让模型有更多上下文参考 |
| 处理卡在“初始化...” | 查看日志是否有 CUDA 内存不足错误,尝试重启服务 |
| 无法访问 WebUI 页面 | 检查防火墙设置、端口占用情况及服务是否正常运行 |
| 输出文件找不到 | 确认路径/root/cv_fft_inpainting_lama/outputs/是否存在且有写权限 |
8. 总结
本文详细介绍了基于fft + npainting + lama的图像修复系统,重点阐述了其在中间结果保存方面的设计思路与实用价值。通过 WebUI 界面,即使是非技术人员也能轻松完成图像去噪、物体移除、水印清除等任务。
系统的最大亮点在于支持阶段性输出与链式修复,使得复杂图像可以分步处理,极大提升了修复精度与可控性。无论是设计师、摄影师还是普通用户,都能从中获得高效、便捷的图像编辑体验。
未来可进一步拓展方向包括:
- 支持更多输入源(视频帧、摄像头流)
- 增加 AI 智能推荐修复区域
- 提供 API 接口供第三方调用
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。