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 是一款开源 AI 图片修复工具,它的命令行run子命令可以整目录批量修图:把图片目录、掩码目录、输出目录指给它,剩下的它自己干。下面从跑通一条命令开始,讲到整个目录的批处理。
先跑通:最短的那条命令
先装环境。拉代码、装依赖,模型权重会在首次运行时自动下载,不用单独操作:
git clone https://gitcode.com/GitHub_Trending/io/IOPaint cd IOPaint pip install -r requirements.txt装好后,处理单张图只需要这条命令:
python -m iopaint run --model lama --device cpu \ --image assets/watermark.jpg --mask masks/watermark.png \ --output out/ --concat其中masks/watermark.png是你自己画的掩码图——灰色底上,白色部分就是要擦掉的区域。掩码是整篇的主角,先认一下这张待处理的素材(仓库自带示例):
--concat会把"原图 + 掩码 + 结果"横向拼成一张图存出来,核对效果一眼就能看出来。这是它生成的同款去水印效果:
参数不多,逐个说:
--model:修复模型,默认lama,可换zits、manga或任意扩散模型--device:cpu或cuda--image/--mask:文件或目录,规则见下一节--output:输出文件或目录,会自动创建--concat:拼对比图,可选
命令入口在 iopaint/cli.py,模型找不到时会自动去下载,不用手动准备。
掩码难画吗?其实就两条命名规则
批量处理能不能跑起来,八成看掩码怎么放。规则就两条:
--mask传目录:掩码必须和原图同名(如001.jpg配001.png),程序按文件名前缀一一配对;缺掩码的图片会跳过并在日志里打印,不会中断整批。--mask传单个文件:同一张掩码套用到所有原图。商品图水印位置固定时,画一次就够。
掩码尺寸不用操心,大小不一致会自动缩放到原图尺寸;灰度值以 127 为界二值化,白色即修复区。也就是说,用任何画图工具涂出来的灰度图都能直接当掩码用。这套配对逻辑在 iopaint/batch_processing.py 里,百来行,值得扫一眼。
输入换成目录,命令几乎不用改
单图跑通后,把--image和--mask换成两个目录就行:
python -m iopaint run --model lama --device cuda \ --image ./input/ --mask ./masks/ --output ./out/输出目录里每张图按原名保存为.png。进度条会实时显示"第几张/共几张",中途不中断。
以"批量移除照片里的路人"为例,原图背景里站着一位过路人:
跑完批量任务后,同一位置的结果:
两个目录的文件一一对齐,整批就自动对齐了——这就是"整千张图"场景下的核心心法:把命名统一,剩下交给命令。
图片太大?用一个 JSON 文件收住所有参数
高分辨率图直接喂给修复模型,显存和耗时都会难看。run命令的调优入口不是命令行参数,而是--config指向的 JSON 文件。先导出默认配置:
python -c "import json; from iopaint.schema import InpaintRequest; \ print(json.dumps(InpaintRequest().model_dump(), indent=2, ensure_ascii=False))" > config.json然后按需改两个键,跑批时加--config config.json:
hd_strategy:擦除类模型(lama 等)处理大图的前置策略,默认CROP分块裁切,也可改RESIZE配合hd_strategy_resize_limit先缩小再修ldm_steps:ldm模型的推理步数,步数越多质量越高、越慢
字段全表在 iopaint/schema.py 的InpaintRequest里。另外注意:--low-mem、--cpu-offload这类省显存开关属于start(Web 界面)命令,run批处理走的是配置文件,别在批处理命令里白找。
按场景挑模型,别拍脑袋
- 去水印、去杂物(默认选它):
lama,速度快、大面积遮盖效果好,实现见 iopaint/model/lama.py - 需要保留更多纹理细节:
zits,修复更精细但更慢,见 iopaint/model/zits.py - 动漫、插画类素材:
manga,对线稿和色块的还原更稳:
- 要"替换"而不只是"擦掉":把
--model换成任意扩散模型名(如runwayml/stable-diffusion-inpainting),配合配置里的prompt字段即可。
今晚就能做的一步
挑一小组最头疼的图(十张以内),把原图丢进input/、同名的掩码丢进masks/,然后跑上面那条目录命令。十分钟内你会得到整个out/目录的结果——跑通了,再往里面倒进几百张。
【免费下载链接】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),仅供参考