零基础学图像修复:FFT NPainting LaMa手把手教学
你是否遇到过这样的困扰:一张珍贵的老照片上有划痕,一张产品图里有碍眼的水印,一张旅行照中闯入了不想出现的路人?删不掉、盖不住、修不好——直到现在。
今天这篇教程,不讲傅里叶变换的数学推导,不堆代码参数,也不让你配环境、装依赖。我们直接用科哥二次开发的FFT NPainting LaMa图像修复镜像,在浏览器里点点画画,5分钟内就把图片里的“不想要”彻底抹去,还让周围内容自然融合、毫无痕迹。
它不是Photoshop插件,不是云端付费服务,而是一个开箱即用的本地WebUI系统——背后融合了LaMa(SOTA图像修复模型)、频域增强策略(FFT预处理)与NPainting交互逻辑,专为普通人设计。下面,咱们就从零开始,一步步把它用起来。
1. 什么是FFT NPainting LaMa?它能做什么?
1.1 一句话说清它的本质
这不是一个“又一个AI修图工具”,而是一套面向工程落地的图像修复工作流:
- LaMa负责核心修复能力(基于深度学习,擅长大区域、复杂纹理填充);
- FFT预处理提升高频细节恢复质量(让修复后的边缘更锐利、纹理更真实,尤其对文字、线条、金属反光等效果显著);
- NPainting交互逻辑指的是“所见即所画”的标注方式——你用画笔涂哪,它就修哪,像在纸上作画一样直观。
它不生成新内容,不脑补不存在的物体,而是忠实理解图像上下文,智能填补被遮盖/移除区域。所以它特别适合:去水印、删路人、修划痕、擦文字、补残缺、换背景前清理等“减法型”任务。
1.2 和普通修图工具有什么不同?
| 对比项 | 传统PS内容识别(如“对象选择”) | 在线AI修图(如Remove.bg) | FFT NPainting LaMa |
|---|---|---|---|
| 控制精度 | 依赖自动识别,边界常毛糙 | 完全黑盒,无法调整修复范围 | 你亲手画,想修多大、在哪修,全由你定 |
| 修复质量 | 小区域尚可,大块易失真 | 仅支持人像/简单背景,泛化弱 | 支持任意场景:建筑、文档、手绘、截图、老照片 |
| 本地运行 | 是(但需手动操作) | 否(上传至服务器,隐私风险) | 全程离线,图片不离开你的机器 |
| 二次开发友好 | 不开放底层 | 不开放 | 开源架构,支持自定义模型、参数、UI逻辑 |
它不是替代PS,而是把PS里最耗时的“选区+填充”两步,压缩成一次涂抹+一次点击。
2. 三步启动:5分钟跑通整个流程
别担心命令行、别怕报错、不用查端口。这套镜像已为你预置好所有依赖,只需三步:
2.1 启动服务(只需一条命令)
打开终端(SSH或本地),执行:
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 停止服务 =====================================小贴士:如果你是云服务器用户,把0.0.0.0:7860中的0.0.0.0换成你的服务器公网IP,例如http://123.45.67.89:7860,即可从任意电脑浏览器访问。
2.2 打开界面(无需安装任何软件)
在Chrome/Firefox/Edge中打开地址:http://你的服务器IP:7860(本地测试用http://127.0.0.1:7860)
你会看到一个干净的双栏界面——左边是画布,右边是结果预览,顶部有清晰的功能按钮。没有广告、没有注册、没有试用限制。
2.3 上传一张图,试试手感
支持三种方式任选其一:
- 点击左侧虚线框 → 选择本地图片(PNG/JPG/JPEG/WEBP)
- 直接把图片文件拖进虚线框内
- 复制一张截图(Win:
Win+Shift+S,Mac:Cmd+Shift+4),然后在页面任意位置按Ctrl+V
上传成功后,图像会自动居中显示在左侧画布上。此时,你已经站在了图像修复的起点。
3. 核心操作详解:怎么画,才能修得准?
修复效果好不好,70%取决于这一步——如何标注需要修复的区域。它不是“越细越好”,而是“恰到好处”。
3.1 认清两个关键工具
| 工具 | 图标 | 作用 | 使用时机 |
|---|---|---|---|
| 画笔(Brush) | 🖌 | 涂抹白色区域,告诉系统:“这里我要修” | 默认激活,上传图后直接开画 |
| 橡皮擦(Eraser) | 擦除已涂的白色,修正误标区域 | 画多了、画歪了、想微调时用 |
注意:整个标注过程只产生一个“白色蒙版(mask)”,系统根据这个蒙版+原图,驱动LaMa模型推理修复。
3.2 标注四原则(实测有效)
宁大勿小
白色区域要略微超出目标物体边缘(比如去水印,把水印+周围2~3像素一起涂白)。LaMa会自动羽化过渡,太窄反而容易留边。避开精细结构交界处
如人脸眼睛和皮肤交界、文字和背景交界——这些地方建议用小号画笔(滑块调至20~40),分段轻涂,不要一笔拉过去。大面积用大笔,小瑕疵用小笔
- 移除整张桌子?用大画笔(80~120)快速扫一遍
- 修掉照片上一颗小痣?切到小画笔(10~20),点涂即可
不确定?先少涂,再补
第一次不用追求全覆盖。点“ 开始修复”看效果,不满意就点“ 清除”,重新上传原图,针对性补涂。
实测案例:一张带“样片”水印的服装图,用中号画笔(60)沿水印外缘描一圈(比水印宽约5像素),修复后完全无痕,连布料纹理都自然延续。
3.3 快速上手练习:30秒去除一张截图水印
- 截一张带系统水印的桌面图(如Windows右下角时间、Mac菜单栏图标)
- 上传到WebUI
- 用中号画笔(50),围绕水印外围画一个松散的圈(不用抠字形)
- 点击 ** 开始修复**
- 等待10秒左右,右侧即显示修复图
- 对比原图:水印消失,背景平滑无缝
你刚刚完成了一次完整的AI图像修复闭环——没有一行代码,没有一个参数设置。
4. 进阶技巧:让修复效果从“能用”到“惊艳”
基础操作能解决80%需求,但以下技巧,能帮你应对更复杂的场景,效果提升一个量级。
4.1 分区域多次修复(对付大图/多目标)
一张图里既有水印,又有路人,还有镜头污点?别试图一次涂完。
正确做法:
- 先涂水印区域 → 修复 → 下载结果图(路径:
/root/cv_fft_inpainting_lama/outputs/) - 重新上传这张已修复的图 → 再涂路人区域 → 修复
- 如此循环,每次只聚焦一个目标
优势:避免模型因区域过大而模糊细节,也方便你逐个验收效果。
4.2 边缘生硬?扩大标注+重试
如果修复后物体边缘有“塑料感”或明显分界线:
- 点“ 清除”
- 重新上传原图(不是上次修复图)
- 用比上次更大一号的画笔,把标注区域向外扩展3~5像素
- 再次修复
原理:LaMa的FFT增强模块对边缘信息更敏感,稍宽的mask能让它获取更充分的上下文纹理。
4.3 文字残留?分段+加厚标注
中英文混排、半透明文字、艺术字体容易修不干净。
解决方案:
- 不要整块涂,把文字拆成2~3组(如标题+正文+页脚)
- 每组单独涂白、单独修复
- 对残留笔画,用小画笔(15)加厚涂一次(覆盖原标注层)
实测:PDF截图中的宋体小字,分两次修复后,背景纯色一致,无锯齿无重影。
4.4 修复后颜色偏灰?检查输入格式
LaMa对色彩空间敏感。若发现修复区域整体发灰、发暗:
- 用画图/Preview等基础工具,将原图另存为PNG格式(无损)再上传
- 避免直接上传微信/QQ转发的JPG(已被多次压缩)
- 如必须用JPG,上传前用手机相册“编辑→增强”提亮一下
注:该镜像已内置BGR转RGB自动校正,但源头质量仍是效果上限。
5. 常见问题实战解答(都是踩坑后总结)
我们整理了新手最常卡住的6个问题,附带可立即验证的解决方案:
5.1 Q:点“ 开始修复”没反应,状态栏一直显示“等待上传图像并标注修复区域...”
A:检查两点
- 是否真的上传了图?(左上角应显示缩略图)
- 是否涂了白色?(用鼠标在画布上轻轻划一下,看是否有白色出现)
→ 若都确认,刷新页面重试。极少数情况是浏览器缓存,换Chrome即可。
5.2 Q:修复后整张图变紫/变绿/严重色偏
A:这是输入图含非标准色彩配置文件(ICC Profile)导致。
快速解决:用系统自带“照片”App(Win/Mac)打开原图 → “另存为” → 取消勾选“保留配置文件” → 保存为新PNG再上传。
5.3 Q:处理到一半卡住,进度条不动
A:大概率是图太大(>2500px)。
立即操作:
- 按
Ctrl+C终止当前服务 - 用在线工具(如 TinyPNG)将图压缩至2000px宽以内
- 重启服务,重试
5.4 Q:修复区域出现奇怪的斑点或重复纹理
A:这是模型对局部高频噪声过拟合。
解决:上传前,用手机相册“降噪”功能轻微处理原图(10%强度即可),或用PS“滤镜→杂色→去斑”预处理。
5.5 Q:想批量处理100张图,能自动化吗?
A:可以。该镜像提供Python API接口(位于/root/cv_fft_inpainting_lama/api.py)。
示例脚本(需基础Python):
import requests import base64 def repair_image(image_path): with open(image_path, "rb") as f: img_b64 = base64.b64encode(f.read()).decode() payload = {"image": img_b64, "mask": "auto"} # auto表示自动检测水印区域 r = requests.post("http://127.0.0.1:7860/api/repair", json=payload) with open("output.png", "wb") as f: f.write(base64.b64decode(r.json()["result"])) repair_image("input.jpg")(详细API文档见镜像内api_doc.md)
5.6 Q:修复结果满意,但找不到保存的文件?
A:默认路径是:/root/cv_fft_inpainting_lama/outputs/outputs_YYYYMMDDHHMMSS.png
快速定位:
- 在WebUI右下角状态栏,会明确显示完整路径(如
已保存至: /root/.../outputs_20240520143022.png) - 或直接在终端执行:
ls -lt /root/cv_fft_inpainting_lama/outputs/ | head -5
6. 它适合谁?哪些场景能真正提效?
别被“FFT”“LaMa”这些词吓到。这套工具的价值,不在技术多前沿,而在把专业能力平民化。
6.1 推荐给这5类人
| 用户类型 | 典型需求 | 节省时间 | 效果提升点 |
|---|---|---|---|
| 电商运营 | 每日处理50+商品图去水印、删模特、换背景 | 从2小时→15分钟 | 修复后可直接上架,无须美工复核 |
| 自媒体作者 | 截图带平台Logo、录屏有个人信息 | 单图30秒搞定 | 保护隐私同时保持画面专业感 |
| 教师/学生 | 课件PPT截图去网址、论文插图修瑕疵 | 避免反复返工 | 学术图表修复后仍保持数据可读性 |
| 老照片修复师 | 扫描件划痕、霉斑、折痕 | 修复效率提升3倍 | FFT增强让纸张纹理、墨迹层次更真实 |
| 开发者/产品经理 | 快速生成UI原型图、Mockup去占位符 | 设计评审提速50% | 无需等设计师,自己动手改图 |
6.2 三个真实场景效果对比
场景1:公众号长图去平台水印
- 原图:微信公众号文章长截图,底部有灰色“本文转载自XXX”
- 操作:中号画笔沿文字下方涂一条宽10px白带
- 结果:修复后背景为均匀渐变灰,文字区域完全不可辨,阅读体验无中断
场景2:产品摄影图移除反光板支架
- 原图:静物拍摄,金属反光板支架入镜
- 操作:小号画笔(25)沿支架轮廓精修两遍
- 结果:支架消失,金属表面高光自然延续,无塑料感
场景3:扫描文档去装订孔阴影
- 原图:A4纸扫描件,左侧有2个圆形阴影
- 操作:用圆形选区工具(WebUI未来版本将支持)辅助涂白
- 结果:阴影消除,纸张纹理连续,OCR识别准确率从82%→99%
7. 总结:你真正学会了什么?
回顾这趟零基础之旅,你已掌握:
不是记住一堆概念,而是获得一项可立即使用的技能:上传→涂抹→点击→下载,四步闭环;
不是被工具牵着走,而是掌握了决策权:什么时候该扩大标注、什么时候该分区域、什么格式最稳妥;
不是停留在“能用”,而是理解了“为什么这样更好”:FFT如何帮LaMa守住细节,LaMa为何比传统算法更懂语义;
不是孤立使用,而是打开了延展可能:从手动操作,到批量API,再到二次开发定制。
图像修复的本质,从来不是“让AI替你思考”,而是给你一把更精准的刻刀,让你亲手雕琢视觉表达。而FFT NPainting LaMa,就是那把此刻已握在你手中的刻刀。
下一步,挑一张你最近想处理却一直搁置的图,打开浏览器,开始第一笔涂抹吧。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。