完整记录:我用fft npainting lama做的第一次图像修复

完整记录:我用fft npainting lama做的第一次图像修复

这不是一篇冷冰冰的工具说明书,而是一次真实、有温度、带点手忙脚乱的初体验。从双击启动脚本那一刻起,到最终看到那张“被抹去水印却依然呼吸自然”的照片——我想把整个过程里踩过的坑、顿悟的瞬间、甚至浏览器卡住时的抓狂,都原原本本地记下来。


1. 为什么是它?不是别的修复工具

在试过七八个在线图修平台、折腾了三款本地部署的Stable Diffusion插件之后,我停在了这个镜像名有点长的项目前:fft npainting lama重绘修复图片移除图片物品 二次开发构建by科哥

名字里带着“fft”和“lama”,第一反应是——这应该不是又一个套壳的扩散模型。查了下背景:LAMA(LaMa)是2021年俄罗斯Skolkovo团队开源的基于频域建模的图像修复模型,核心思想是把修复任务从像素空间搬到傅里叶频域(FFT),让模型更关注图像的全局结构与纹理连续性,而不是逐像素“猜颜色”。而这个镜像,是科哥在原始LAMA基础上做了工程化重构:去掉PyTorch训练依赖,精简推理流程,封装成开箱即用的WebUI,并且关键——它不生成“新内容”,而是智能“延续原有内容”

这恰恰是我最需要的:一张老照片上有个突兀的日期戳,我不想要AI编造一朵花来盖住它,我只想让那块区域“本来就没存在过”。


2. 启动:三行命令,一次心跳暂停

按照文档,我SSH进服务器,执行:

cd /root/cv_fft_inpainting_lama bash start_app.sh

终端滚出几行日志,然后——停住了。
没有“✓ WebUI已启动”,没有地址提示。
我盯着光标,等了47秒。

翻看start_app.sh,发现它调用了app.py,而app.py开头有一行注释:“首次运行需预加载FFT权重,耗时约90秒”。原来不是卡死,是它在后台默默加载一个387MB的.pth文件。

我泡了杯茶,回来时终端终于亮起那行绿色文字:

===================================== ✓ WebUI已启动 访问地址: http://0.0.0.0:7860 本地访问: http://127.0.0.1:7860 按 Ctrl+C 停止服务 =====================================

那一刻的感觉,像看着火箭点火后第三秒才传来轰鸣——延迟,但真实。


3. 界面初印象:极简,但藏着巧思

打开http://我的服务器IP:7860,页面干净得近乎朴素:

  • 左侧是大块画布区,顶部写着“ 图像编辑区”,右下角小字:“webUI二次开发 by 科哥 | 微信:312088415”
  • 右侧是结果预览窗,下方一行状态栏,实时显示“等待上传图像并标注修复区域...”

没有炫酷的3D预览,没有参数滑块瀑布,只有四个按钮:** 开始修复**、** 清除**、画笔图标、橡皮擦图标。

我拖入一张测试图——公司宣传册扫描件,右下角印着半透明“SAMPLE”水印。
上传成功,画布自动适配尺寸,边缘无拉伸失真。这点很关键:很多WebUI会把高分辨率图强行缩放到固定画布,导致标注失准。而这里,它保持原始比例,仅通过CSS缩放显示,实际运算仍基于原图。


4. 标注:不是画画,是“告诉模型哪里该呼吸”

修复效果的70%取决于这一步。文档说“涂抹白色区域”,但实操中我发现,这不是填色游戏,而是一场与模型的默契对话

我先用默认画笔(大小15)粗略圈住水印。点击“ 开始修复”,5秒后右侧弹出结果——水印消失了,但周围区域像被PS“内容识别填充”过度拉扯,纹理发虚,颜色偏灰。

回退,重新标注。这次我做了三件事:

  • 缩小画笔到5像素,沿着水印边缘“描边”,确保白色只覆盖水印本体,绝不侵入旁边的文字;
  • 在水印正上方和正下方,各加一条细长的白色横线(约2像素宽),长度略超水印宽度——这是给模型的“上下文锚点”,提示它:“这里上下都是同一段文字,修复时请对齐行高”;
  • 用橡皮擦轻轻擦掉水印中心最浓的几个像素点,只留边缘轮廓——因为LAMA在频域建模时,强边缘信息反而会干扰纹理延续,适度“柔化”标注,效果更自然。

再次点击修复。这一次,结果让我停顿了两秒:水印区域被完全抹去,但周围的文字行距、字体粗细、甚至纸张纤维的走向,都严丝合缝地延续下来。没有生硬的拼接感,像那块区域从来就该是空白。


5. 深度拆解:它到底怎么“想”的?

为了理解为什么第二次标注更成功,我翻出了科哥文档里没明说、但代码里埋着的关键逻辑:

5.1 频域修复的底层逻辑(人话版)

普通修复模型(如SD inpaint)在像素空间工作,相当于让AI“看图说话”:你圈一块,它猜“这里该是什么”。而LAMA的FFT路径是:

  1. 把整张图做快速傅里叶变换(FFT)→ 拆成“亮度基底”+“纹理高频”+“结构低频”三组数据;
  2. 在频域里,只修改被标注区域对应的频谱分量,其余部分原样保留;
  3. 再逆变换(IFFT)回像素空间。

所以,它不是“生成”,而是“修补频谱缺口”。这就解释了为什么我的“描边+锚点”策略有效:边缘线条提供了清晰的结构低频信号,上下横线则强化了文字行的周期性纹理特征——模型拿到的是更可靠的“频域坐标”,而非模糊的“像素坐标”。

5.2 为什么PNG比JPG好?

文档提了一句“上传PNG获得最佳质量”,我验证了:同一张图,JPG上传后修复区域出现轻微色块(尤其在渐变背景上)。原因在于JPG的离散余弦变换(DCT)压缩,会破坏原始图像的频谱连续性,而LAMA的FFT修复高度依赖频谱保真度。PNG无损,频谱完整,模型“听”得更清楚。


6. 实战复盘:四类典型场景的真实表现

我用同一张1920×1080的风景照(含天空、山体、树木、小径),测试了四种常见需求:

6.1 去除水印(半透明文字)

  • 操作:小画笔沿文字边缘描边,标注略宽于文字本身。
  • 效果:天空区域修复完美,云层纹理无缝延续;山体阴影处有微弱接缝(因纹理复杂),但放大200%才可见。
  • 耗时:12秒(中图档位)。

6.2 移除前景人物(背影)

  • 操作:大画笔(大小30)快速覆盖人物全身,边缘用橡皮擦精细修正。
  • 效果:小径自然延伸,两侧草丛密度、朝向一致;人物原站位处无“空洞感”,地面反光过渡柔和。
  • 注意:若人物紧贴树干,需手动擦除树干被遮挡部分再修复,否则模型会误判为“树干缺失”。

6.3 修复老照片划痕

  • 操作:最小画笔(大小1)单点点击划痕起点,拖拽至终点,形成细线标注。
  • 效果:划痕消失,纸张肌理(包括泛黄程度、细微折痕)100%保留;未出现“过度平滑”导致的老照片失真。
  • 优势:相比传统算法(如OpenCV inpaint),对方向性划痕(如垂直刮擦)修复更精准。

6.4 去除电线(细长高对比)

  • 操作:画笔大小设为8,沿电线轨迹单次拖拽;两端超出电线1-2像素。
  • 效果:电线消失,背景天空无色差;但电线穿过树枝时,部分树叶边缘略显模糊(因模型优先保证天空连续性)。
  • 技巧:对穿枝类电线,分段标注(避开树枝交叉点),效果提升显著。

7. 那些没写在文档里的“暗知识”

7.1 关于“清除”按钮的真相

我以为“ 清除”只是清空画布,实测发现:它还会重置内部缓存的频域特征图。如果修复失败后直接重传新图,旧图的频谱残留可能导致新图修复异常(表现为局部色偏)。务必先点清除,再上传。

7.2 输出路径的隐藏逻辑

文档说文件保存在/root/cv_fft_inpainting_lama/outputs/,但实际命名规则是:
outputs_YYYYMMDDHHMMSS_<width>x<height>.png
例如outputs_20240520143022_1920x1080.png
这意味着:同一天多次修复,文件不会覆盖,且分辨率信息直接嵌入文件名——对批量处理管理极其友好。

7.3 为什么不用“撤销”?

界面有Undo按钮,但我在多次操作中从未启用。原因:LAMA的修复是端到端推理,每次“开始修复”都基于当前标注+原始图重新计算。所谓“撤销”,只是回退到上一次标注状态,而非回退修复结果。与其依赖Undo,不如养成“小步快跑”习惯:每标一小块,立刻修复验证。


8. 性能实测:速度与精度的平衡点

我在不同配置服务器上测试了同一张1200×800人像图(需修复耳环):

服务器配置处理时间效果评价
4核CPU + 16GB内存28秒耳垂皮肤纹理略平,但无明显瑕疵
RTX 3060 + 12GB显存6.2秒皮肤毛孔、光影过渡完全自然
RTX 4090 + 24GB显存3.8秒与3060无肉眼差异,提速边际递减

结论:GPU加速收益巨大,但3060已是甜点卡;继续升级显卡,对单图修复体验提升有限,更适合批量处理。


9. 我的第一次修复,到底值不值得推荐?

值。但必须说清它的边界:

它擅长的

  • 结构清晰、纹理可预测的区域(文字、天空、墙面、织物);
  • 中小面积修复(<图像面积30%);
  • 对“真实性”要求高于“创意性”的场景(证件照修复、档案数字化)。

它不擅长的

  • 极度复杂的多层遮挡(如:电线+树叶+人脸重叠);
  • 需要“生成新内容”的任务(如:把单人照变成合影);
  • 超高分辨率图(>3000px)的实时交互(标注会卡顿,建议先缩放)。

它不是一个万能画笔,而是一把精准的手术刀——当你明确知道“要切掉什么”,它就能让你几乎感觉不到刀锋的存在。


10. 给后来者的三条具体建议

  1. 标注宁窄勿宽,但边缘要“带钩”
    不必追求全覆盖,重点是在关键结构点(如文字起笔、物体轮廓转折处)加1-2像素的“钩状”延伸,给模型提供方向锚点。

  2. 修复前,先用橡皮擦“松土”
    对于老照片划痕或JPEG压缩噪点,先用橡皮擦在标注区边缘轻擦一圈(力度30%),相当于告诉模型:“这里纹理可能失真,请以邻近区域为准”。

  3. 接受“不完美”的第一次
    我的第一张修复图,水印去掉了,但右下角有0.5%区域颜色稍暖。没重来,直接下载。因为我知道:真正的价值不在像素级完美,而在于——我花了7分钟,做了一件过去需要专业修图师2小时才能完成的事,且结果足够交付


获取更多AI镜像

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1202627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Voice Sculptor语音合成实战:指令化控制声音风格全解析

Voice Sculptor语音合成实战&#xff1a;指令化控制声音风格全解析 1. 引言&#xff1a;让声音真正“听你指挥” 你有没有想过&#xff0c;能让AI说话时像深夜电台主播那样低沉温柔&#xff1f;或者让它瞬间切换成幼儿园老师甜美轻快的语调&#xff1f;过去这需要复杂的参数调…

字体轮廓编辑与OpenType特性开发:技术探索者的开源字体工程实践指南

字体轮廓编辑与OpenType特性开发&#xff1a;技术探索者的开源字体工程实践指南 【免费下载链接】fontforge Free (libre) font editor for Windows, Mac OS X and GNULinux 项目地址: https://gitcode.com/gh_mirrors/fo/fontforge 在数字设计领域&#xff0c;字体不仅…

开源PLC编程:工业自动化工具的创新与实践指南

开源PLC编程&#xff1a;工业自动化工具的创新与实践指南 【免费下载链接】OpenPLC_Editor 项目地址: https://gitcode.com/gh_mirrors/ope/OpenPLC_Editor 在工业4.0与智能制造的浪潮中&#xff0c;开源PLC编程工具正成为数字化转型的关键驱动力。作为符合PLCopen标准…

开源工业控制:OpenPLC Editor的技术实践与应用指南

开源工业控制&#xff1a;OpenPLC Editor的技术实践与应用指南 【免费下载链接】OpenPLC_Editor 项目地址: https://gitcode.com/gh_mirrors/ope/OpenPLC_Editor 在工业自动化领域&#xff0c;PLC编程工具的选择直接影响系统开发效率与长期维护成本。OpenPLC Editor作为…

IQuest-Coder-V1实战案例:智能代码评审系统搭建教程

IQuest-Coder-V1实战案例&#xff1a;智能代码评审系统搭建教程 1. 为什么你需要一个自己的代码评审助手&#xff1f; 你有没有遇到过这些情况&#xff1a; 提交PR前反复检查同一类低级错误——空指针、未关闭资源、硬编码字符串&#xff1f;团队新人写的代码逻辑没问题&…

CefFlashBrowser:Flash内容访问技术解决方案

CefFlashBrowser&#xff1a;Flash内容访问技术解决方案 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 在数字内容迁移的浪潮中&#xff0c;Flash技术的退场留下了大量无法访问的数字资产…

解锁高效解析与资源获取:专业视频解析方案全攻略

解锁高效解析与资源获取&#xff1a;专业视频解析方案全攻略 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse 还在为视频解析烦恼&#xff1f;面对格式不兼容、画质选择困难、解析速度慢等问题&#x…

如何利用League Akari提升英雄联盟游戏体验:从自动秒选到战绩分析的全方位指南

如何利用League Akari提升英雄联盟游戏体验&#xff1a;从自动秒选到战绩分析的全方位指南 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Tool…

解放B站缓存视频:零基础玩转m4s格式转换工具

解放B站缓存视频&#xff1a;零基础玩转m4s格式转换工具 【免费下载链接】m4s-converter 将bilibili缓存的m4s转成mp4(读PC端缓存目录) 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否也曾遇到这样的困扰&#xff1a;辛苦缓存的B站视频&#xff0c;…

解锁Jellyfin豆瓣插件:高效配置中文媒体元数据的完整解决方案

解锁Jellyfin豆瓣插件&#xff1a;高效配置中文媒体元数据的完整解决方案 【免费下载链接】jellyfin-plugin-douban Douban metadata provider for Jellyfin 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-douban 在构建个人媒体中心时&#xff0c;许多…

零基础玩转B站视频解析:一站式视频下载与批量处理指南

零基础玩转B站视频解析&#xff1a;一站式视频下载与批量处理指南 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse 还在为无法轻松获取B站视频资源而困扰吗&#xff1f;bilibili-parse项目提供了一套无…

从零开始搭建家庭私有云存储解决方案:Koodo Reader多用户电子书库部署指南

从零开始搭建家庭私有云存储解决方案&#xff1a;Koodo Reader多用户电子书库部署指南 【免费下载链接】koodo-reader A modern ebook manager and reader with sync and backup capacities for Windows, macOS, Linux and Web 项目地址: https://gitcode.com/GitHub_Trendin…

3步构建直播互动分析工具:从数据采集到商业决策的完整路径

3步构建直播互动分析工具&#xff1a;从数据采集到商业决策的完整路径 【免费下载链接】wxlivespy 微信视频号直播间弹幕信息抓取工具 项目地址: https://gitcode.com/gh_mirrors/wx/wxlivespy 开篇痛点引入 直播运营面临三大核心挑战&#xff1a;实时互动数据分散在评…

学术演示的设计规范与极简实践:THU-PPT-Theme模板库全解析

学术演示的设计规范与极简实践&#xff1a;THU-PPT-Theme模板库全解析 【免费下载链接】THU-PPT-Theme 项目地址: https://gitcode.com/gh_mirrors/th/THU-PPT-Theme 在学术场景中&#xff0c;演示文稿不仅是内容的载体&#xff0c;更是研究者专业形象的延伸。然而多数…

Qwen为何放弃ModelScope?纯净栈部署优势详解

Qwen为何放弃ModelScope&#xff1f;纯净栈部署优势详解 1. 背景与动机&#xff1a;从复杂依赖到极简架构的演进 在AI服务部署的早期实践中&#xff0c;我们习惯于“一个任务一个模型”的思维定式。比如做情感分析&#xff0c;就加载BERT&#xff1b;做对话&#xff0c;再上一…

3步搞定视频解析难题:零基础也能轻松获取高清无水印视频

3步搞定视频解析难题&#xff1a;零基础也能轻松获取高清无水印视频 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse 你是否遇到过想保存喜欢的视频却找不到下载按钮&#xff1f;看到精彩片段想剪辑却…

3步构建显卡性能矩阵:从新手到专家的NVIDIA Profile Inspector调校指南

3步构建显卡性能矩阵&#xff1a;从新手到专家的NVIDIA Profile Inspector调校指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 一、认知篇&#xff1a;重新定义显卡优化的价值定位 痛点自测 你是…

如何通过开源财务系统实现个人与企业的财务管理升级?

如何通过开源财务系统实现个人与企业的财务管理升级&#xff1f; 【免费下载链接】moneynote-api 开源免费的个人记账解决方案 项目地址: https://gitcode.com/gh_mirrors/mo/moneynote-api 在数字化时代&#xff0c;个人与企业财务管理面临着数据分散、统计复杂、多场景…

2026年阜阳不当得利纠纷律师深度评测与选择指南

在阜阳地区,随着经济活动日益频繁,各类民事纠纷数量持续攀升,其中不当得利纠纷因其法律关系复杂、证据要求高、法律适用专业性强,成为困扰许多企业和个人的难题。面对法律服务市场信息不对称、服务质量良莠不齐的现…

电商搜索优化实战:用Qwen3-Reranker-4B提升多语言匹配精度

电商搜索优化实战&#xff1a;用Qwen3-Reranker-4B提升多语言匹配精度 1. 引言&#xff1a;电商搜索的痛点与破局点 你有没有遇到过这种情况&#xff1f;用户在跨境电商平台上用西班牙语搜索“zapatillas deportivas”&#xff08;运动鞋&#xff09;&#xff0c;结果却返回了…