news 2026/4/26 17:04:23

fft npainting lama批量处理方案:自动化脚本集成实战案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
fft npainting lama批量处理方案:自动化脚本集成实战案例

fft npainting lama批量处理方案:自动化脚本集成实战案例

1. 引言:从手动修复到批量自动化

你是不是也遇到过这样的情况?手头有一堆图片需要去水印、删文字、移除路人,一张张打开WebUI上传、画笔标注、点击修复……重复操作几十遍,不仅耗时还容易出错。我之前就是这样,直到把fft npainting lama 图像修复系统和自动化脚本结合起来,效率直接起飞。

本文要讲的,不是怎么用这个WebUI界面——那已经有详细手册了。我要带你做的是:在原有系统基础上,开发一套批量处理流程,实现“丢进去一堆图,自动修完再吐出来”的全自动化方案

这套方案基于科哥开发的cv_fft_inpainting_lama项目(GitHub常见开源版本),我们不做模型训练,只做工程落地优化。目标很明确:

  • 保留原WebUI的手动交互能力(方便调试)
  • 新增后台批量处理模块
  • 支持文件夹输入/输出,自动调用修复引擎
  • 可扩展为定时任务或API服务

适合人群:会一点Python、想提升AI图像处理效率的开发者或技术爱好者。


2. 系统架构与二次开发思路

2.1 原有系统结构分析

先来看一眼原始项目的目录结构:

/root/cv_fft_inpainting_lama/ ├── app.py # Gradio WebUI主程序 ├── start_app.sh # 启动脚本 ├── models/ # 模型权重 ├── inputs/ # 输入图像(可选) ├── outputs/ # 输出图像 └── lama_inpaint.py # 核心修复逻辑封装

关键点在于lama_inpaint.py这个文件,它封装了图像加载、mask生成、模型推理和保存结果的完整流程。而app.py是基于Gradio做的可视化包装。

我们的策略是:不动WebUI,只提取核心修复功能,封装成可调用模块

2.2 批量处理设计目标

功能是否支持
单张图像修复(手动)✅ 原生支持
多图批量修复(自动)✅ 本次新增
自定义mask标注方式✅ 支持矩形/全图/外部mask
输出路径自定义✅ 支持
错误跳过与日志记录✅ 支持
并行处理加速❌ 本期简化版

我们先做串行稳定版,后续可升级多进程。


3. 核心脚本开发:批量修复模块实现

3.1 创建批量处理脚本

新建文件batch_inpaint.py,放在项目根目录下:

# batch_inpaint.py import os import cv2 import numpy as np from datetime import datetime from lama_inpaint import inpaint_image # 直接复用原修复函数 def create_mask_from_bbox(image_shape, bbox): """ 根据边界框生成mask bbox: (x, y, w, h) """ mask = np.zeros(image_shape[:2], dtype=np.uint8) x, y, w, h = bbox cv2.rectangle(mask, (x, y), (x+w, y+h), 255, -1) return mask def process_single_image(img_path, output_dir, method='auto_rect'): """ 处理单张图像 method: auto_rect(自动识别人脸区域), full(整图修复), 或传入具体bbox """ try: # 读取图像 image = cv2.imread(img_path) if image is None: print(f"[错误] 无法读取图像: {img_path}") return False # 生成mask if method == 'full': mask = np.ones(image.shape[:2], dtype=np.uint8) * 255 elif isinstance(method, tuple) and len(method) == 4: mask = create_mask_from_bbox(image.shape, method) else: # 默认:自动识别并去除人脸外的物体(示例逻辑) # 实际中可用YOLO等检测模型定位目标 mask = np.ones(image.shape[:2], dtype=np.uint8) * 255 # 这里可以接入目标检测模型,动态生成mask # 调用原修复函数 result = inpaint_image(image, mask) # 生成输出路径 filename = os.path.basename(img_path) name, ext = os.path.splitext(filename) timestamp = datetime.now().strftime("%Y%m%d%H%M%S") output_path = os.path.join(output_dir, f"output_{name}_{timestamp}.png") # 保存结果 cv2.imwrite(output_path, result) print(f"[成功] 已保存: {output_path}") return True except Exception as e: print(f"[失败] 处理 {img_path} 时出错: {str(e)}") return False def batch_process(input_folder, output_folder, method='auto_rect'): """ 批量处理入口 """ if not os.path.exists(output_folder): os.makedirs(output_folder) supported_exts = ('.png', '.jpg', '.jpeg', '.webp') image_files = [f for f in os.listdir(input_folder) if f.lower().endswith(supported_exts)] if not image_files: print(f"警告:{input_folder} 中没有找到支持的图像文件") return print(f"开始批量处理 {len(image_files)} 张图像...") success_count = 0 for img_file in image_files: img_path = os.path.join(input_folder, img_file) if process_single_image(img_path, output_folder, method): success_count += 1 print(f"批量处理完成!成功: {success_count}/{len(image_files)}") if __name__ == "__main__": import argparse parser = argparse.ArgumentParser(description="FFT LaMa 批量图像修复工具") parser.add_argument("--input", type=str, required=True, help="输入图像文件夹路径") parser.add_argument("--output", type=str, default="./batch_outputs", help="输出文件夹路径") parser.add_argument("--method", type=str, default="full", choices=['full', 'auto_rect'], help="修复方法") args = parser.parse_args() batch_process(args.input, args.output, args.method)

3.2 关键代码说明

  • inpaint_image函数是从lama_inpaint.py导出的核心接口,负责调用LaMa模型进行修复。
  • create_mask_from_bbox用于根据坐标生成矩形mask,适用于已知位置的目标移除。
  • process_single_image封装了完整的单图处理流程:读图 → 生成mask → 修复 → 保存。
  • 支持命令行参数传入,便于集成到其他系统。

4. 集成与使用:让自动化跑起来

4.1 添加启动脚本

创建start_batch.sh脚本:

#!/bin/bash # start_batch.sh INPUT_DIR="/root/cv_fft_inpainting_lama/batch_inputs" OUTPUT_DIR="/root/cv_fft_inpainting_lama/batch_outputs" echo "=====================================" echo "🚀 开始批量图像修复任务" echo "输入目录: $INPUT_DIR" echo "输出目录: $OUTPUT_DIR" echo "=====================================" python batch_inpaint.py --input "$INPUT_DIR" --output "$OUTPUT_DIR" --method full echo "✅ 批量处理已完成"

记得给执行权限:

chmod +x start_batch.sh

4.2 使用流程演示

  1. 准备待处理图片,放入batch_inputs/文件夹
  2. 执行批量脚本:
bash start_batch.sh
  1. 查看输出:
[成功] 已保存: /root/cv_fft_inpainting_lama/batch_outputs/output_photo_1_20260105142030.png [成功] 已保存: /root/cv_fft_inpainting_lama/batch_outputs/output_screenshot_20260105142045.png ... 批量处理完成!成功: 5/5
  1. 结果自动保存在batch_outputs/目录,命名带时间戳,避免冲突。

5. 实战案例:电商商品图批量去水印

5.1 场景描述

某电商平台每天收到大量供应商发来的商品图,都带有明显水印。人工一张张处理太慢,我们用这套系统实现全自动去水印。

5.2 解决方案设计

假设水印统一在右下角(300x100像素区域),我们可以固定mask位置:

# 修改调用方式 bbox = (image.shape[1]-320, image.shape[0]-120, 300, 100) # 右下角区域 process_single_image(img_path, output_dir, method=bbox)

这样就不需要AI识别水印位置,直接按坐标切除。

5.3 效果对比

方式处理100张图耗时是否需人工干预准确率
手动WebUI操作~3小时
本方案自动化~12分钟>95%(固定位置)

注:若水印位置不固定,可结合OpenCV模板匹配或轻量级YOLO检测模型提升泛化能力。


6. 进阶优化建议

6.1 加入日志系统

替换print语句,使用logging模块记录详细信息:

import logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler('batch_inpaint.log'), logging.StreamHandler() ] )

6.2 支持配置文件

创建config.yaml

input_folder: ./batch_inputs output_folder: ./batch_outputs repair_method: full log_level: INFO

让非技术人员也能轻松修改参数。

6.3 扩展为API服务

用Flask封装成HTTP接口:

from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/inpaint', methods=['POST']) def api_inpaint(): # 接收上传文件,调用batch_inpaint中的逻辑 pass

未来可对接企业内部系统,实现“上传即修复”。


7. 总结:构建属于你的AI流水线

通过这次二次开发,我们完成了三件事:

  1. 解耦了WebUI与核心功能:把图像修复能力从界面中剥离出来,变成可编程模块;
  2. 实现了批量自动化处理:只需放图进文件夹,脚本自动完成全部修复;
  3. 验证了实际业务价值:在电商去水印场景中,效率提升15倍以上。

这套方案的优势在于:

  • 不改动原项目结构,兼容性强
  • 易于维护和升级
  • 可快速适配新需求(换mask策略、加检测模型等)

下一步你可以尝试:

  • 接入目标检测模型自动识别要删除的物体
  • 增加图像预处理(缩放、裁剪)
  • 做成Docker镜像,一键部署

记住,AI工具的价值不在“能不能用”,而在“能不能规模化使用”。当你能把一个手动操作变成自动流水线,才是真正释放了它的潜力。


获取更多AI镜像

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

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

惠普OMEN终极性能掌控:OmenSuperHub完全免费调优指南

惠普OMEN终极性能掌控:OmenSuperHub完全免费调优指南 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 厌倦了官方OMEN Gaming Hub的臃肿体积和频繁弹窗干扰?OmenSuperHub这款开源纯净硬件控制工具将彻…

作者头像 李华
网站建设 2026/4/25 20:11:28

创意岛屿设计:个性化梦想空间的高效实现方案

创意岛屿设计:个性化梦想空间的高效实现方案 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)",是一个在线工具,它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友会》(Animal Crossing)启发而创建…

作者头像 李华
网站建设 2026/4/18 8:32:16

Z-Image-Turbo部署全流程:测试脚本运行到自定义生成教程

Z-Image-Turbo部署全流程:测试脚本运行到自定义生成教程 你是否还在为文生图模型下载慢、配置复杂、显存不足而烦恼?本文将带你从零开始,完整走通 Z-Image-Turbo 的部署与使用流程。无需手动下载权重,无需折腾环境依赖&#xff0…

作者头像 李华
网站建设 2026/4/17 21:52:29

手绘风技术难点:unet后续版本可行性分析

手绘风技术难点:unet后续版本可行性分析 1. 功能概述与项目背景 本项目基于阿里达摩院 ModelScope 平台的 DCT-Net 模型,构建了一个名为“人像卡通化”的 AI 工具。该工具由开发者“科哥”主导开发,核心目标是将真实人物照片高效、自然地转…

作者头像 李华
网站建设 2026/4/17 18:08:45

不用大模型!这个1.5B小模型专攻数学题

不用大模型!这个1.5B小模型专攻数学题 在AI领域,参数规模似乎成了衡量能力的唯一标准——百亿、千亿参数的大模型层出不穷,训练成本动辄上千万美元。然而,一个仅用不到八千美元训练、参数量只有1.5B的小模型,却在数学…

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

Mac鼠标滚动终极优化:告别卡顿的深度调校指南

Mac鼠标滚动终极优化:告别卡顿的深度调校指南 【免费下载链接】Mos 一个用于在 macOS 上平滑你的鼠标滚动效果或单独设置滚动方向的小工具, 让你的滚轮爽如触控板 | A lightweight tool used to smooth scrolling and set scroll direction independently for your …

作者头像 李华