IOPaint 命令行批处理指南:一条 run 命令跑通千张图片修复
【免费下载链接】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 是一个基于 SOTA AI 模型的图像修复(inpainting)工具,支持移除图片中不需要的物体、人物、水印等元素,也可通过 Stable Diffusion 擦除并替换图中任意内容。本文聚焦它的命令行批量处理能力:从环境安装到目录级批处理,帮你把"一张张手动修"变成"一条命令全搞定"。
5分钟装好环境,跑通第一张图
开始之前确认两件事:
- 系统已安装 Python 3.8 或更高版本
- 终端可以正常执行 pip 安装命令
git clone https://gitcode.com/GitHub_Trending/io/IOPaint cd IOPaint pip install -r requirements.txt这三行完成仓库克隆与依赖安装。依赖清单见 requirements.txt,核心包含 torch、diffusers、opencv-python 等。安装完成后,python -m iopaint即可调用所有子命令。
最简命令:image、mask、output 三件套
批量修复的最小可运行命令只有三对路径参数:
python -m iopaint run --model lama --device cpu \ --image assets/watermark.jpg --mask assets/unwant_text.jpg \ --output results/watermark_removed.jpg各参数职责:
--image:输入图片,可以是单个文件也可以是目录--mask:掩码图片,标记需要修复的区域(白色=修复区,黑色=保留区)--output:结果保存路径,文件或目录
执行后终端会显示带百分比的进度条,处理完成时在 output 指定位置生成一张 PNG 格式的结果图。
⚠️ 常见坑:如果--image传的是目录,--output也必须是目录,不能写成文件路径,否则程序会直接报错退出(校验逻辑在 batch_processing.py 开头几行)。
目录批量处理:命名即匹配
把--image和--mask都指向文件夹时,程序按文件主名(不含扩展名)自动配对,无需手动对应:
python -m iopaint run --model zits --device cuda \ --image ./photos/ --mask ./masks/ --output ./clean_photos/匹配规则(实现在glob_images函数中):
- 扫描目录下所有
.png/.jpg/.jpeg文件 - 以文件主名为 key 建立映射,
photos/cat.jpg自动匹配masks/cat.png - 找不到对应掩码的图片会被跳过并记录日志,不会中断整批任务
掩码尺寸与原图不一致时,程序自动用最近邻插值缩放到原图尺寸,无需手动对齐。
三个修复模型,各有所长
--model参数决定底层用哪个网络做修复,常见选择:
| 模型 | 擅长场景 | 源码位置 |
|---|---|---|
| lama | 大面积缺失快速填充,水印去除首选 | lama.py |
| zits | 细节纹理还原更精细,适合移除人物后保留背景 | zits.py |
| brushnet | 纹理保持能力强,复杂背景修复 | brushnet/ |
首次运行某个模型时,CLI 自动检测本地缓存(默认~/.cache),不存在则触发下载,无需手动操作。
用配置文件固化参数,告别重复敲命令
参数组合一旦调好,反复手敲容易出错。IOPaint 支持把参数存到 JSON 文件:
python -m iopaint dump-config > config.json生成的config.json包含InpaintRequest的全部默认字段(步数、采样器、高清策略等),你只需修改关心的几项。之后每次运行:
python -m iopaint run --config config.json \ --image ./input/ --mask ./masks/ --output ./output/模型名、设备、高清裁剪阈值等参数全部从配置文件读取,命令行只需给出路径,团队协作时传一份 config 就能复现结果。
显存不够?两个优化开关
处理高分辨率图片或跑扩散类模型时,显存吃紧是常态。两个常用参数:
--low_mem:开启 attention slicing 和 VAE tiling,以少量速度换内存--cpu_offload:把模型权重卸载到 CPU 内存,显著降低显存占用
这两个开关定义在 cli.py 中,适用于启动 Web 服务或调用扩散模型时。批量run命令本身只暴露--model、--device、--concat等核心选项,内存调优主要服务于更重的推理场景。
两个典型场景对比
场景 A:批量去水印
原始图片(右下角有水印文字):
对应掩码(白色区域标记待修复范围):
执行命令:
python -m iopaint run --model lama --device cpu \ --image assets/watermark.jpg --mask assets/unwant_text.jpg \ --output results/watermark_removed.jpg --concat True--concat True会把原图、掩码、修复结果横向拼成一张图,方便肉眼对比效果:
场景 B:批量移除多余人物
使用 zits 模型处理整目录后,背景纹理保留完整,人物区域被自然填充:
跑完之后,两步走向全自动化
- 掩码生成自动化:启用 interactive_seg.py 交互式分割插件,用 Segment Anything 模型快速圈出待修复区域,省去手动画掩码的步骤,实现"标注→处理"一条链路。
- 定时任务接入:把
python -m iopaint run写进 crontab 或 shell 脚本监听特定文件夹,新图片落地即自动修复,搭出"丢进去就出结果"的流水线。
【免费下载链接】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),仅供参考