从0开始学图像修复:FFT NPainting LaMa实战入门
图像修复听起来很高大上,但其实它解决的是我们每天都会遇到的小问题:照片里多了一根电线、截图里有碍眼的水印、老照片上有划痕、电商图里要移除模特手里的样品……这些看似琐碎的需求,过去只能靠专业修图师花几十分钟处理,而现在,一个轻量级WebUI就能在几秒内完成。本文不讲复杂的数学推导,也不堆砌论文术语,只带你用最直接的方式——上传、涂抹、点击、下载——真正把图像修复用起来。
这不是一个“理论很美,落地很难”的教程。它基于一个已经打包好的、开箱即用的镜像:fft npainting lama重绘修复图片移除图片物品 二次开发构建by科哥。它没有依赖繁杂的Python环境配置,不需手动编译CUDA,更不需要你调参调到怀疑人生。它就是一个安静运行在服务器上的网页工具,点开就能修图。
下面的内容,就是为你准备的“第一张图修复指南”。你会看到:如何启动服务、界面每个按钮是干什么的、怎么画才不会修出奇怪的边缘、为什么有时候修完颜色发灰、以及那些官方文档里没写但实际踩坑时最痛的细节。全程零基础可跟,只要你会用浏览器、会拖拽文件、会点鼠标。
1. 启动服务:三行命令,让修复工具活过来
很多教程一上来就让你装PyTorch、配Conda环境、下载几个G的模型权重……这一步就劝退了80%想试试的人。而这个镜像的好处在于:所有依赖都已预装完毕,你只需要唤醒它。
打开你的终端(SSH连接到服务器或本地Docker环境),依次执行:
cd /root/cv_fft_inpainting_lama bash start_app.sh注意路径必须完全一致——这是镜像内部约定的固定工作目录。如果提示No such file or directory,请确认你是否以 root 用户登录,或镜像是否完整拉取成功。
几秒钟后,你会看到一段清晰的提示:
===================================== ✓ WebUI已启动 访问地址: http://0.0.0.0:7860 本地访问: http://127.0.0.1:7860 按 Ctrl+C 停止服务 =====================================这不是日志,这是“服务已就绪”的明确信号。此时,你不需要做任何额外操作,服务已在后台稳定运行。
1.1 访问方式说明
如果你在云服务器上部署(如阿里云、腾讯云):
在浏览器中输入http://你的服务器公网IP:7860(例如http://47.98.123.45:7860)。确保安全组已放行7860端口。如果你在本地电脑通过Docker运行:
直接访问http://127.0.0.1:7860即可。如果打不开?先别急着重装——绝大多数情况是网络或端口问题:
- 执行
netstat -tuln | grep 7860确认端口确实在监听; - 执行
ps aux | grep app.py确认Python进程正在运行; - 检查浏览器是否拦截了非HTTPS连接(部分新版Chrome对
http://地址有警告,但可点击“高级→继续访问”)。
- 执行
关键提醒:这个WebUI不依赖GPU显存占用监控,也不需要你手动指定设备。它默认使用CPU推理(已针对性能优化),即使在2核4G的入门级服务器上也能稳定运行。如果你有NVIDIA显卡且驱动正常,系统会自动启用CUDA加速,你完全感知不到切换过程——这才是真正“隐形”的工程化封装。
2. 界面初识:看懂这四个区域,你就掌握了80%的操作逻辑
第一次打开页面,别被界面上的图标和按钮吓住。它其实只有两个核心任务:左边画,右边看结果。整个界面被清晰地划分为四大功能区,我们逐一看清它们的真实作用:
2.1 左侧:图像编辑区——你的“数字画布”
这里不是用来P图的,而是用来“告诉AI:这里要修”。
- 上传区域:支持三种方式——点击选择文件、直接拖拽图片进来、甚至Ctrl+V粘贴剪贴板里的截图。实测发现,微信/QQ截图后直接Ctrl+V是最顺滑的工作流。
- 画笔工具:默认激活。涂抹区域会显示为半透明白色,这就是你定义的“待修复区域”。记住一个铁律:白色覆盖越完整,修复越干净;白色漏掉一点,那里就原封不动。
- 橡皮擦工具:不是用来“擦错”,而是用来“精修边界”。比如你画笔太大,把不该修的背景也涂进去了,就用橡皮擦轻轻擦掉边缘。
- 清除按钮():比Ctrl+Z更彻底。它会清空当前所有标注、重置画布,适合试错成本低的快速迭代。
2.2 右侧:修复结果区——你的“实时放映厅”
- 修复后图像显示框:不是预览图,而是最终输出。它会等修复完成才刷新,不闪烁、不跳变,所见即所得。
- 处理状态栏:显示四类关键信息:
等待上传图像并标注修复区域...→ 初始态;初始化...→ 模型加载中(通常<1秒);执行推理...→ 正在计算(时间取决于图大小);完成!已保存至: /root/.../outputs_20240512143022.png→ 成功标志,含精确路径。
为什么右侧不显示“原始图+修复图”对比?
因为这个工具的设计哲学是“专注修复动作本身”。对比图容易分散注意力,而真实工作流中,你更关心“修完能不能直接用”。如果你需要对比,只需在修复前右键另存原始图,修复后再下载新图,用任意看图软件并排打开即可——简单、直接、无冗余。
3. 实战四步法:一张图,从上传到下载的完整闭环
我们用一张带水印的风景照来走一遍全流程。不假设你有任何前置知识,每一步都拆解到“手指该点哪里”。
3.1 第一步:上传图像(3种方式,选最快的那个)
推荐方式:拖拽上传
找到你的待处理图片(比如手机拍的带日期水印的照片),直接用鼠标左键按住图片文件,拖进左侧虚线框内。松手即上传,无需点击确认。注意事项:
支持格式:
.png(首选,无损)、.jpg/.jpeg(通用)、.webp(现代格式);不支持
.bmp、.tiff、.gif(动图);若上传后画面模糊或变色,大概率是原图用了CMYK色彩模式(常见于设计稿),请先用Photoshop或在线工具转为RGB再上传。
3.2 第二步:标注修复区域(画笔不是越细越好)
这是决定效果上限的关键步。很多人以为“画得越细越准”,其实恰恰相反。
正确做法:
- 先用中号画笔(滑块调到中间位置),快速把水印整体涂白;
- 再切到小号画笔(滑块向左),沿着水印边缘“描一圈”,确保白色完全盖住边缘像素;
- 最后用橡皮擦轻轻擦掉水印外1–2像素的多余白色(防止AI误读背景结构)。
❌ 常见错误:
- 只涂水印文字,忽略周围1像素的阴影/描边 → 修复后留黑边;
- 用最大画笔狂涂,把整片天空都涂白 → AI会胡乱“脑补”云朵,结果失真;
- 涂抹太薄、半透明 → 系统识别为无效mask,状态栏报错
未检测到有效的mask标注。
底层原理一句话:LaMa模型本质是“根据mask区域周围的纹理,生成最可能的连续内容”。它不理解“水印是什么”,只认“白色区域+周围像素”。所以你的任务不是教AI,而是给它提供最干净的“填空题”。
3.3 第三步:点击修复(耐心等待,但不用干等)
点击 ** 开始修复** 按钮后:
- 状态栏会立即变为
初始化...→ 表示模型已加载完毕,准备就绪; - 几秒后变为
执行推理...→ 此时CPU/GPU正在全力计算; - 小图(<800px)约5秒,中图(1000–1600px)约12–18秒,大图(>2000px)建议先缩放——这不是性能差,而是高分辨率下需要更多上下文建模。
小技巧:修复过程中别关页面,但可以切到其他标签页。WebUI采用异步通信,不影响后台运算。
3.4 第四步:查看与下载(路径比你想的更友好)
修复完成后,右侧立刻显示高清结果图。此时:
- 查看效果:直接滚动鼠标滚轮缩放,检查边缘是否自然、颜色是否连贯;
- 下载文件:结果已自动保存,路径明确显示在状态栏:
/root/cv_fft_inpainting_lama/outputs/outputs_20240512143022.png
你只需用FTP工具(如FileZilla)或服务器命令cp /root/cv_fft_inpainting_lama/outputs/*.png /home/user/即可取出。
为什么不用WebUI内置下载按钮?
因为镜像定位是“生产环境轻量部署”,避免浏览器下载大文件失败、中断等问题。自动保存到固定路径,既稳定又便于脚本批量处理——这才是工程师思维。
4. 效果优化:三次点击,让修复从“能用”变成“惊艳”
刚上手时,你可能会遇到:修完边缘发虚、颜色偏灰、或者纹理不连贯。别归咎于模型,90%是标注和参数的小调整。
4.1 边缘生硬?扩大标注范围 + 启用羽化
LaMa默认开启边缘羽化(soft mask blending),但前提是你的标注要“略超边界”。
- 正确操作:用画笔时,让白色区域向外多涂2–3像素(肉眼可见的微小扩展);
- ❌ 错误操作:严丝合缝描边,追求“精准”——这反而切断了AI的过渡参考。
实测对比:同一张人像去痣图,标注扩大3像素后,修复边缘完全不可见,而精准描边则留下一圈浅色晕影。
4.2 颜色发灰?检查原始图色彩空间
这是新手最高频的困惑。原因只有一个:你上传的JPG是sRGB,但某些相机直出图自带Adobe RGB或ProPhoto RGB色彩配置文件,浏览器渲染时自动降饱和。
解决方案:
用系统自带“照片”应用(Windows)或“预览”(macOS)打开原图 → “另存为” → 勾选“转换为sRGB” → 保存后重新上传。不要用PS“转换为配置文件”,那会改变色值;要用“转为sRGB并保留外观”,这才是无损转换。
4.3 纹理不连贯?分区域多次修复
面对复杂场景(如:一张图里既有水印又有电线还有划痕),不要试图一次全涂。
- 推荐流程:
- 先只涂水印区域,修复并下载;
- 将这张修复图作为新源图上传;
- 再涂电线区域,修复;
- 如此迭代,直到所有目标清除。
为什么有效?因为LaMa每次修复都基于“当前图像上下文”。第一次修复后,背景已更干净,第二次AI能学到更准确的纹理规律——这比单次大范围mask更鲁棒。
5. 典型场景速查:5类高频需求,对应操作清单
不用死记硬背,遇到问题直接查这一节:
| 场景 | 关键操作 | 注意事项 |
|---|---|---|
| 去除水印 | 用中号画笔整体涂抹,边缘稍扩大 | 半透明水印需重复修复1次,勿强行加大涂抹面积 |
| 移除电线/杆子 | 沿电线走向细长涂抹,宽度=2倍电线直径 | 避免涂抹两侧背景,否则AI会“复制”背景纹理造成重复 |
| 修复老照片划痕 | 小画笔沿划痕轨迹单点点击(非拖拽),形成虚线状mask | 划痕过深时,先用橡皮擦清理周边噪点再修复 |
| 人像去瑕疵(痘、斑) | 超小画笔(滑块最左),单点覆盖瑕疵中心 | 切忌涂抹整片脸颊,会导致肤色不均 |
| 去除文字LOGO | 分块涂抹:先涂文字主体,再涂阴影/描边 | 大段文字建议分2–3次,每次不超过10个字符 |
特别提醒:所有场景都遵循同一原则——标注是“引导”,不是“指令”。你涂的不是“删除区域”,而是“请AI参考周围,生成最合理的替代内容”的请求区域。
6. 总结:图像修复不是魔法,而是一门“提问的艺术”
看到这里,你应该已经完成了人生中第一次AI图像修复。也许你修掉了一个碍眼的水印,也许你清除了老照片上的一道裂痕,也许你只是好奇地点了点按钮——但重要的是,你亲手验证了一个事实:高质量图像修复,真的可以零代码、零配置、零等待,就在浏览器里发生。
这个镜像的价值,不在于它用了LaMa还是FFT,而在于它把前沿算法封装成了一支“傻瓜式画笔”。你不需要知道傅里叶变换如何提升频域重建,也不用理解扩散模型的采样步数,你只需要明白:白色 = 请求,周围 = 上下文,点击 = 信任。
下一步,你可以尝试:
- 用不同尺寸的图测试处理时间;
- 对比PNG和JPG上传后的细节保留度;
- 把修复后的图发到朋友圈,看朋友猜不猜得出哪里被修过。
技术的意义,从来不是让人仰望,而是让人伸手就能触达。而你现在,已经伸出手,并握住了它。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。