原文地址:https://itxiaozhang.com/iopaint-fixed-mask-batch-inpainting-cpu/
如果您需要远程电脑维修或者编程开发,请加我微信咨询。
一、需求分析
在批量处理图片的实际工作中,常会遇到统一位置的水印(如顶部编号、底部标识等)。手动擦除效率低,借助 AI 图像修复工具如 IOPaint(原 Lama Cleaner)可实现自动化处理。然而其默认使用 Web 界面,不能直接批处理,因此本文目标是:
- 批量处理整目录图片
- 使用一个固定掩膜去除相同水印位置
- 全自动运行,无需交互操作
- 使用 CPU,兼容所有普通电脑
- 输出保持原分辨率与文件名
- 生成完整处理日志
二、解决思路
1. 工具选择
使用开源图像修复工具 IOPaint,支持命令行调用与 AI 修复模型(默认 lama),适合图像 inpainting 任务,兼容 CPU 和 GPU。
2. 执行流程
- 安装 Python 与 IOPaint CLI
- 使用 Lama Cleaner 在线版手动生成统一的掩膜图
- 用 Python 脚本批量执行 CLI 命令
- 支持多进程并发,加速 CPU 处理
三、掩膜文件准备与优化
1. 掩膜制作
打开 Lama Cleaner Hugging Face 页面,加载任意一张图,进行掩膜绘制:
- 勾选「Download Mask」
- 勾选「Manual Inpainting Mode」
- 用画笔框选需要去除的水印区域
- 点击「Download Mask」按钮下载掩膜图
掩膜图与原图尺寸一致,白色区域为需修复部分。
2. 掩膜要求
- 保存为
fixed_mask.jpg,与原图尺寸相同(如 960x8049) - 白色区域表示需要修复,黑色保留不变
- 掩膜应统一应用于所有图像
四、脚本开发与并行优化(仅使用 CPU)
为提升批量处理效率,我们开发了一个支持多进程并发的 Python 脚本。虽然运行在 CPU 上,但并行仍能显著提速。
📁 文件结构
| |
📜 脚本核心内容(简要)
- 遍历
input/目录中的图片 - 为每张图调用 IOPaint CLI 命令行工具
- 使用
multiprocessing.Pool并发处理多个任务 - 日志记录每张图是否成功及处理耗时
🔧 主要命令调用
| |
五、使用说明
1. 环境安装(无 Anaconda,纯 pip)
确保已安装 Python 3.9/3.10,并添加到 PATH:
| |
无需 GPU、CUDA,直接使用 CPU 即可。
2. 执行脚本
将图片放入 input/,掩膜命名为 fixed_mask.jpg,运行命令:
| |
所有图片将自动处理,输出保存在 output/,日志记录写入 process.log。