news 2026/2/18 8:12:45

如何用fft npainting lama移除图片物品?详细步骤+代码实例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用fft npainting lama移除图片物品?详细步骤+代码实例

如何用fft npainting lama移除图片物品?详细步骤+代码实例

1. 引言:图像修复技术的应用背景

在数字图像处理领域,图像修复(Image Inpainting)是一项关键任务,旨在通过算法自动填充图像中被遮挡或需要移除的区域,使修复后的图像在视觉上自然连贯。近年来,基于深度学习的图像修复方法取得了显著进展,其中LaMa(Large Mask Inpainting)因其对大范围缺失区域的优秀修复能力而受到广泛关注。

本文将围绕一个基于FFT + npainting + LaMa的二次开发项目展开,详细介绍如何使用该系统实现图像中物品的智能移除。该项目由开发者“科哥”进行WebUI封装与功能优化,极大降低了使用门槛,适合工程落地和快速应用。

本教程属于实践应用类文章,涵盖环境部署、操作流程、核心原理简析及可运行代码示例,帮助读者从零开始掌握图像修复系统的使用与扩展。


2. 系统架构与技术选型

2.1 核心技术栈解析

该项目融合了多种图像处理与深度学习技术:

  • LaMa 模型:基于傅里叶卷积(Fourier Convolution)的生成式修复网络,擅长处理大面积缺失。
  • FFT 预处理机制:利用快速傅里叶变换增强纹理结构信息,提升修复质量。
  • npainting 后处理模块:自定义后处理逻辑,用于边缘平滑与颜色校正。
  • Gradio WebUI:提供可视化交互界面,支持画笔标注、实时预览与一键修复。

2.2 为何选择此方案?

方案优势局限性
OpenCV 基于PatchMatch轻量、无需GPU仅适用于小区域修复
DALL·E 或 Stable Diffusion创造性强易引入不合理内容
LaMa (本方案)结构保持好、边缘自然需要较高算力

结论:LaMa 在保持原始图像结构一致性方面表现优异,特别适合用于水印去除、物体移除等真实场景。


3. 环境部署与服务启动

3.1 准备工作

确保服务器满足以下条件:

  • 操作系统:Linux(Ubuntu/CentOS)
  • Python 版本:3.8+
  • GPU:NVIDIA 显卡(推荐 ≥ 8GB 显存)
  • 安装依赖:CUDA、PyTorch、Gradio、OpenCV

3.2 克隆并配置项目

git clone https://github.com/kege/cv_fft_inpainting_lama.git cd cv_fft_inpainting_lama pip install -r requirements.txt

3.3 启动 WebUI 服务

执行启动脚本:

bash start_app.sh

成功启动后输出如下提示:

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

此时可通过浏览器访问http://<服务器IP>:7860进入图形化操作界面。


4. 图像修复操作全流程

4.1 上传待修复图像

支持三种方式上传图像:

  1. 点击上传区选择文件
  2. 拖拽图像至上传区域
  3. 复制图像后粘贴(Ctrl+V)

支持格式:PNG、JPG、JPEG、WEBP
建议分辨率不超过 2000×2000,以保证处理效率。

4.2 标注修复区域(Mask 绘制)

使用左侧工具栏中的画笔工具进行区域标注:

  • 白色区域表示需要修复的部分
  • 可调节画笔大小以适应不同尺寸目标
  • 若误标,可用橡皮擦工具清除

技巧:为避免边缘残留,建议将标注范围略大于实际需移除区域,系统会自动羽化过渡。

4.3 执行图像修复

点击"🚀 开始修复"按钮,后台将执行以下流程:

  1. 图像预处理(BGR→RGB转换、归一化)
  2. FFT 特征提取(增强频域结构信息)
  3. LaMa 模型推理(生成填补内容)
  4. npainting 后处理(颜色匹配、边缘融合)

处理时间根据图像大小通常为 5–60 秒。

4.4 查看与保存结果

修复完成后,右侧显示修复结果,并在状态栏提示:

完成!已保存至: /root/cv_fft_inpainting_lama/outputs/outputs_20260105142312.png

用户可前往该路径下载图像,或通过前端直接另存为本地文件。


5. 核心代码实现解析

5.1 图像修复主函数

以下是简化版的核心推理代码片段,位于inference.py中:

import cv2 import numpy as np import torch from models.lama import LaMaModel from utils.fft_processor import apply_fft_enhancement def inpaint_image(image_path, mask_path, output_path): # 读取图像与掩码 image = cv2.imread(image_path) mask = cv2.imread(mask_path, 0) # BGR to RGB image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 归一化 image = image.astype(np.float32) / 255.0 mask = (mask > 128).astype(np.float32) # FFT 增强(保留高频结构) enhanced_image = apply_fft_enhancement(image, mask) # 转换为张量 image_tensor = torch.from_numpy(enhanced_image).permute(2, 0, 1).unsqueeze(0) mask_tensor = torch.from_numpy(mask).unsqueeze(0).unsqueeze(0) # 加载模型并推理 model = LaMaModel(config="config/lama.yaml") model.load_state_dict(torch.load("weights/big-lama.pt")) model.eval() with torch.no_grad(): result_tensor = model(image_tensor, mask_tensor) # 后处理 result = result_tensor.squeeze().permute(1, 2, 0).cpu().numpy() result = np.clip(result * 255, 0, 255).astype(np.uint8) # 保存结果 result_bgr = cv2.cvtColor(result, cv2.COLOR_RGB2BGR) cv2.imwrite(output_path, result_bgr) return output_path
代码说明:
  • 使用apply_fft_enhancement提升纹理连续性
  • 掩码二值化处理确保输入规范
  • 模型输出经 Clip 和类型转换后保存

5.2 FFT 增强模块实现

# utils/fft_processor.py import numpy as np def apply_fft_enhancement(image, mask): """ 利用FFT在频域增强图像结构,辅助修复 """ # 转换到频域 fft_img = np.fft.fft2(image, axes=(0, 1)) fft_shift = np.fft.fftshift(fft_img, axes=(0, 1)) # 构建低通滤波器(保留中心低频) h, w = image.shape[:2] center_h, center_w = h // 2, w // 2 Y, X = np.ogrid[:h, :w] dist_from_center = (X - center_w)**2 + (Y - center_h)**2 mask_freq = dist_from_center <= (min(h, w) // 4)**2 # 应用滤波 fft_shift_filtered = fft_shift * mask_freq[..., None] # 逆变换回空间域 fft_unshift = np.fft.ifftshift(fft_shift_filtered, axes=(0, 1)) filtered_image = np.fft.ifft2(fft_unshift, axes=(0, 1)).real # 融合原图与滤波结果(加强结构) enhanced = image * 0.7 + filtered_image * 0.3 return np.clip(enhanced, 0, 1)

作用:通过保留低频成分并抑制噪声,使修复区域更符合整体图像的频率分布特征。


6. 实际应用场景演示

6.1 场景一:去除水印

操作流程

  1. 上传带有角标水印的图片
  2. 使用中号画笔完整涂抹水印区域
  3. 点击“开始修复”
  4. 观察背景纹理是否自然延续

效果评估:对于纯色或简单纹理背景,修复效果极佳;复杂图案下可能需微调。

6.2 场景二:移除行人或车辆

挑战点

  • 目标占据较大面积
  • 背景存在透视变化

应对策略

  • 分块多次修复
  • 每次修复后重新上传中间结果
  • 结合裁剪功能聚焦局部

6.3 场景三:修复老照片划痕

优势体现

  • 小面积瑕疵可精准定位
  • LaMa 能学习周围像素模式进行合理填充
  • 支持批量处理历史影像资料

7. 使用技巧与性能优化

7.1 提高修复质量的关键技巧

  • 精确标注:避免遗漏边缘,防止出现“半修复”现象
  • 适度扩大mask:让系统有足够上下文进行推断
  • 分步修复:对多个独立区域逐个处理,避免干扰
  • 优先使用PNG:减少压缩伪影影响

7.2 性能优化建议

优化方向措施
内存占用使用FP16精度推理model.half()
推理速度启用TensorRT加速(需额外编译)
多图处理批量加载时限制并发数 ≤ 3
缓存机制对重复风格图像缓存特征

8. 常见问题与解决方案

问题原因分析解决方法
修复后颜色偏暗BGR/RGB通道错误检查色彩空间转换逻辑
边缘明显痕迹mask边界太硬扩大标注范围,启用羽化
处理卡住无响应显存不足降低图像分辨率或启用CPU fallback
输出文件未生成权限不足检查/outputs目录写权限
WebUI无法访问端口未开放配置防火墙规则放行7860端口

9. 总结

9.1 实践经验总结

本文详细介绍了基于FFT + npainting + LaMa的图像修复系统在实际项目中的部署与使用方法。通过 Gradio 封装的 WebUI 界面,非技术人员也能轻松完成图像去水印、物体移除等任务。

核心价值体现在:

  • 易用性:图形化操作,无需编程基础
  • 高质量修复:LaMa 模型保障结构完整性
  • 可扩展性强:开源代码便于二次开发

9.2 最佳实践建议

  1. 先小试再放大:首次使用建议从小图测试起,验证效果后再处理正式数据。
  2. 保留原始文件:所有操作均为不可逆修改,务必备份源图。
  3. 结合人工校验:自动修复虽强大,仍需人工检查细节合理性。

获取更多AI镜像

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

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

SGLang-v0.5.6性能优化:减少序列化开销的技巧

SGLang-v0.5.6性能优化&#xff1a;减少序列化开销的技巧 SGLang-v0.5.6 是当前大模型推理部署领域中备受关注的一个版本更新。该版本在吞吐量、延迟控制和资源利用率方面进行了多项关键优化&#xff0c;其中减少序列化开销成为提升整体性能的重要突破口。本文将深入剖析 SGLa…

作者头像 李华
网站建设 2026/2/18 4:44:56

Stable Diffusion+ASR双模型对比:云端GPU3小时完成,成本降70%

Stable DiffusionASR双模型对比&#xff1a;云端GPU3小时完成&#xff0c;成本降70% 你是不是也遇到过这种情况&#xff1f;作为一家初创团队的技术负责人&#xff0c;老板让你快速验证两个AI方向&#xff1a;一个是用AI生成产品图做营销素材&#xff0c;另一个是开发方言语音…

作者头像 李华
网站建设 2026/2/16 14:04:18

screen命令开机自启:服务化部署配置教程

如何让screen开机自启&#xff1f;一套真正可用的生产级服务化部署方案你有没有遇到过这样的场景&#xff1a;深夜&#xff0c;服务器重启后&#xff0c;早上一来发现那个跑了三天的数据采集脚本没了——因为没人手动启动&#xff1b;或者你在远程调试一个 Python 爬虫&#xf…

作者头像 李华
网站建设 2026/2/16 12:47:21

Z-Image-Turbo傻瓜式教程:三步搞定,新手必看

Z-Image-Turbo傻瓜式教程&#xff1a;三步搞定&#xff0c;新手必看 你是不是也遇到过这种情况&#xff1a;科技创新比赛马上就要交作品了&#xff0c;项目内容都准备好了&#xff0c;就差几张配图。可学校电脑不让装软件&#xff0c;自己的平板又跑不动AI绘图工具&#xff1f…

作者头像 李华
网站建设 2026/2/4 23:57:11

零基础玩转FunASR|speech_ngram_lm_zh-cn镜像部署全指南

零基础玩转FunASR&#xff5c;speech_ngram_lm_zh-cn镜像部署全指南 1. 引言&#xff1a;为什么选择 FunASR speech_ngram_lm_zh-cn&#xff1f; 随着语音识别技术在智能客服、会议记录、字幕生成等场景的广泛应用&#xff0c;开发者对高精度、低延迟、易部署的中文语音识别…

作者头像 李华
网站建设 2026/2/17 17:00:23

深度剖析工业传感器接口硬件电路原理

工业传感器接口电路&#xff1a;从“信号微弱”到“系统可靠”的硬核实战解析在工业自动化现场&#xff0c;你是否曾遇到这样的问题&#xff1f;一个标称精度0.1%的压力变送器&#xff0c;实际测量却频频漂移&#xff1b;一条屏蔽双绞线传来的信号&#xff0c;在PLC端读数跳动不…

作者头像 李华