IOPaint 命令行批量去水印:掩码命名对了,几百张图一条命令跑完
【免费下载链接】IOPaintImage inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your pictures or erase and replace(powered by stable diffusion) any thing on your pictures.项目地址: https://gitcode.com/GitHub_Trending/io/IOPaint
两百张商品图,每张右下角都压着同一个水印,点开、涂抹、修复、保存……干到第三十张手就开始抖。换个思路:用 IOPaint 命令行做批量图片处理,一条run命令把整个目录扫一遍,修完自动落盘。把下面几步跟着敲完,你手里就有个能复用的去水印流水线。
先弄懂三个词:模型、掩码、输出
| 术语 | 一句话解释 | 类比 |
|---|---|---|
| 修复模型 | 真正干活、负责"补画面"的算法 | 不同师傅手艺不同:有人快,有人细 |
| 掩码(Mask) | 一张黑白图,告诉模型"只修白处的像素,黑的别碰" | 贴美瞳前贴的轮廓膜,圈住哪儿补哪儿 |
| 输出 | 修好的文件写到的位置,固定保存为原文件名.png | 加工完的成品仓 |
掩码不要求尺寸和原图一致——对不上会自动缩放;灰度也会自动二值化(≥127 算白),不用抠得很精确。
安装并跑通第一条命令
📌 前置条件:Python 3.8 及以上。
git clone https://gitcode.com/GitHub_Trending/io/IOPaint cd IOPaint pip install -r requirements.txt命令行入口在 iopaint/cli.py,批量调度逻辑在 iopaint/batch_processing.py。敲下面这条最小命令,单张试跑:
python -m iopaint run --model lama --device cpu \ --image assets/watermark.jpg --mask assets/unwant_text.jpg \ --output results/watermark_removed.png --concat原图(右下角带水印):
--concat会把"原图+掩码+结果"横向拼成一张对照图,方便肉眼验收:
单张能跑,批量就是同一套逻辑的目录版。
批量目录怎么配对:掩码命名规则
⚠️ 最常见的坑:原图和掩码放两个目录,名字对不上就修不了。规则就一条——掩码目录里,文件名(不含扩展名)必须和原图一致,匹配时只看文件名。
photos/ p001.jpg p002.jpg p003.jpg masks/ p001.png p002.png p003.png命令:
python -m iopaint run --model lama --device cpu \ --image ./photos/ --mask ./masks/ --output ./clean_photos/两个细节决定你批量跑起来顺不顺:
- 原图里某张在掩码目录里找不到同名文件,会直接跳过(日志会提示 mask not found),所以别指望"差不多就行";
--mask传单个文件时,这张掩码会套用到目录里所有原图。同一批图水印位置相同(比如本例的右下角)时最省事——--image ./photos/ --mask assets/unwant_text.jpg即可,不必给每张图单独配掩码。
人物这类目标每张位置都不同,必须逐张配对掩码,效果类似下面这组:
参数速查表
| 参数 | 作用 | 取值 / 说明 |
|---|---|---|
--model | 修复模型 | lama、zits、migan、ldm等,本地没有会自动下载;实现见 iopaint/model/ |
--device | 运行设备 | cpu/cuda |
--image | 原图 | 文件或目录,支持.png/.jpg/.jpeg |
--mask | 掩码 | 文件或目录;目录时按文件名配对,文件时套用到全部原图 |
--output | 输出 | 目录或文件路径;输入是目录时它必须是目录,结果统一为原名.png |
--concat | 拼接对照图 | 原图+掩码+结果横向拼一张 |
模型怎么选:
| 模型 | 特点 | 适配场景 |
|---|---|---|
lama | 快、内存占用低 | 大面积纯色修补、批量去水印,CPU 也能跑 |
zits | 细节还原更好 | 纹理区域、对画质要求高的修复 |
migan | 面向更复杂背景 | 复杂背景区域修复 |
💡 省显存两点:批跑优先选lama这类轻量模型,扩散类模型显存占用明显更高;推理步数等参数可用--config指定一份 JSON 微调(iopaint/web_config.py 可帮你生成参数配置)。另外 Web 服务端还提供--low-mem、--cpu-offload两个开关,显存紧张时值得一看。
跑通之后的三个方向
- 配置固化:常用参数写进 JSON,配合
--config复用,换批次不用记参数。 - 定时任务:用 crontab 定时扫"待处理目录",新图进来自动进流水线。
- 掩码不想手绘:Web 端可开交互式分割自动圈区域,见 interactive_seg.py;单张图精细修图也可以直接用 IOPaint 的 Web 界面。
【免费下载链接】IOPaintImage inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your pictures or erase and replace(powered by stable diffusion) any thing on your pictures.项目地址: https://gitcode.com/GitHub_Trending/io/IOPaint
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考