news 2026/5/1 11:10:34

如何用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/4/18 0:04:23

从安装到对话:通义千问3-14B新手入门全攻略

从安装到对话&#xff1a;通义千问3-14B新手入门全攻略 1. 引言&#xff1a;为什么选择 Qwen3-14B&#xff1f; 在当前大模型快速发展的背景下&#xff0c;如何在有限的硬件资源下获得接近高端闭源模型的推理能力&#xff0c;成为开发者和研究者关注的核心问题。通义千问3-14…

作者头像 李华
网站建设 2026/4/22 8:15:02

AI画质增强实战:EDSR模型部署详细步骤

AI画质增强实战&#xff1a;EDSR模型部署详细步骤 1. 引言 1.1 技术背景与业务需求 在数字内容爆炸式增长的今天&#xff0c;图像质量直接影响用户体验。然而&#xff0c;受限于早期拍摄设备、网络传输压缩或存储空间限制&#xff0c;大量历史图片存在分辨率低、细节模糊、噪…

作者头像 李华
网站建设 2026/4/30 10:25:21

BGE-Reranker-v2-m3推理加速:TensorRT集成可行性探讨

BGE-Reranker-v2-m3推理加速&#xff1a;TensorRT集成可行性探讨 1. 引言&#xff1a;BGE-Reranker-v2-m3与RAG系统优化需求 在当前检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;系统的实际部署中&#xff0c;向量数据库的近似最近邻搜索虽然具备…

作者头像 李华
网站建设 2026/4/30 7:05:07

Qwen-Image-2512-ComfyUI部署对比:Kubernetes集群方案评测

Qwen-Image-2512-ComfyUI部署对比&#xff1a;Kubernetes集群方案评测 1. 引言 随着多模态大模型在图像生成领域的持续突破&#xff0c;阿里开源的 Qwen-Image-2512-ComfyUI 凭借其高分辨率生成能力与灵活的工作流编排机制&#xff0c;迅速成为开发者和研究者关注的焦点。该模…

作者头像 李华
网站建设 2026/4/27 21:48:21

Qwen3-0.6B保姆级教程:Jupyter环境部署与API调用完整流程

Qwen3-0.6B保姆级教程&#xff1a;Jupyter环境部署与API调用完整流程 1. 引言 1.1 技术背景与学习目标 Qwen3&#xff08;千问3&#xff09;是阿里巴巴集团于2025年4月29日开源的新一代通义千问大语言模型系列&#xff0c;涵盖6款密集模型和2款混合专家&#xff08;MoE&…

作者头像 李华
网站建设 2026/5/1 13:02:54

Qwen3-0.6B异步调用优化:提升并发处理能力的关键方法

Qwen3-0.6B异步调用优化&#xff1a;提升并发处理能力的关键方法 随着大语言模型在实际业务场景中的广泛应用&#xff0c;如何高效利用模型推理服务、提升系统整体吞吐量成为工程落地过程中的关键挑战。尤其在面对高并发请求时&#xff0c;传统的同步调用方式容易造成资源阻塞…

作者头像 李华