news 2026/4/3 5:44:16

如何用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/3 5:32:46

Cute_Animal_For_Kids_Qwen_Image实测分享,打造专属儿童动物图库

Cute_Animal_For_Kids_Qwen_Image实测分享&#xff0c;打造专属儿童动物图库 1. 引言&#xff1a;为儿童内容创作注入AI动力 在数字教育和亲子互动日益普及的今天&#xff0c;高质量、安全且富有童趣的视觉内容成为家长和教育工作者的核心需求。传统的图片素材库虽然丰富&…

作者头像 李华
网站建设 2026/3/27 21:52:27

Speech Seaco Paraformer多语言潜力分析:能否扩展至粤语识别?

Speech Seaco Paraformer多语言潜力分析&#xff1a;能否扩展至粤语识别&#xff1f; 1. 技术背景与问题提出 随着语音识别技术在中文场景中的广泛应用&#xff0c;阿里基于 FunASR 框架推出的 Speech Seaco Paraformer 模型凭借其高精度、低延迟和热词定制能力&#xff0c;在…

作者头像 李华
网站建设 2026/3/13 6:55:22

用Glyph做智能客服预研,效果令人惊喜

用Glyph做智能客服预研&#xff0c;效果令人惊喜 1. 引言&#xff1a;长文本理解的挑战与新思路 在智能客服系统中&#xff0c;上下文长度限制一直是影响用户体验的关键瓶颈。传统语言模型通常受限于固定的token窗口&#xff08;如8k、32k&#xff09;&#xff0c;当对话历史…

作者头像 李华
网站建设 2026/3/28 19:35:14

实测YOLOv13性能:轻量模型跑出高精度检测结果

实测YOLOv13性能&#xff1a;轻量模型跑出高精度检测结果 在智能安防、工业质检与自动驾驶等实时视觉任务中&#xff0c;目标检测模型需要在有限算力下实现高精度与低延迟的双重目标。传统方案往往在“快”与“准”之间做取舍&#xff0c;而最新发布的 YOLOv13 官版镜像 正在打…

作者头像 李华
网站建设 2026/3/31 0:33:02

5个开源大模型镜像推荐:DeepSeek-R1免配置一键部署实战测评

5个开源大模型镜像推荐&#xff1a;DeepSeek-R1免配置一键部署实战测评 1. 引言&#xff1a;本地化大模型的实践需求与选型背景 随着大语言模型在推理、编程、数学等复杂任务中的表现不断提升&#xff0c;越来越多开发者和企业开始关注本地化部署的可能性。然而&#xff0c;主…

作者头像 李华
网站建设 2026/3/21 11:07:37

如何验证微调效果?Qwen2.5-7B推理测试这样做

如何验证微调效果&#xff1f;Qwen2.5-7B推理测试这样做 1. 引言&#xff1a;为什么需要系统化验证微调效果 在大语言模型的定制化开发中&#xff0c;微调&#xff08;Fine-tuning&#xff09;是实现特定任务适配和身份认知注入的关键步骤。然而&#xff0c;完成训练仅是第一…

作者头像 李华