IOPaint 上手指南:3 个任务搞定去水印、移除物体与清理文字
【免费下载链接】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 模型的开源图像修复(inpainting / outpainting)工具,涂抹标记区域后由 AI 重建背景,本地免费运行,两条命令就能在浏览器里开始处理第一张图。
📌 项目速览:它能做什么
IOPaint 把"擦除类"和"扩散生成类"两类模型整合到同一个 Web 界面里:擦除类模型(LaMa、MAT、manga 等 8 种)只重建被涂抹的区域,速度快、不需要提示词;扩散类模型(PowerPaint、AnyText、BrushNet,以及 HuggingFace 上的各类 SD/SDXL 修复模型)可以按提示词替换、重绘物体,甚至向外扩图。
- 免费开源、完全自托管,支持 CPU、CUDA、Apple Silicon(mps)三种设备
- 内置 8 种擦除模型 + 多种扩散模型,另有 Segment Anything 交互式分割、RemoveBG、RealESRGAN、GFPGAN 等插件
- 支持命令行批量处理,适合成百上千张图统一清理
适合需要批量清理图片的电商运营、摄影师和内容创作者;如果你只是偶尔修一张图,它同样够用。
⚡ 跑起来:2 条命令启动 Web 界面
先装,再启动。NVIDIA 显卡用户建议先安装 CUDA 版 PyTorch(README 中给出的版本为 torch 2.1.2 + cu118),否则默认走 CPU。
pip3 install iopaint iopaint start --model=lama --device=cpu --port=8080启动后的上手顺序:
- 打开浏览器访问
http://localhost:8080 - 上传第一张图片(模型会在首次启动时自动下载)
- 用画笔涂掉水印,点生成按钮查看结果
模型文件默认存在~/.cache下,想换位置可加--model-dir参数。
🖌️ 任务一:去除照片水印(LaMa 路线)
适合场景:产品图、老照片上的固定水印和瑕疵,只需要"抹掉"而不需要"画新东西"。
LaMa 对大尺寸图片默认采用 CROP 策略:长边超过 800 像素时只裁剪涂抹区域附近的局部(默认外扩 128 像素)去做修复,速度比全图快很多。常用参数如下:
| 参数 | 默认值 | 作用与调整建议 |
|---|---|---|
| hd_strategy | CROP | 三种:Original(原图直接跑)、Resize(长边缩到 1280 以内再修复,再放大回原尺寸)、Crop(只修局部,速度最快) |
| hd_strategy_crop_margin | 128 | 裁剪时向涂抹区域外扩的像素,边缘复杂时调大 |
| ldm_steps(仅 ldm 模型) | 20 | 采样步数,越大越精细越慢 |
| cv2_radius(仅 cv2 模型) | 4 | 邻域半径,适合极小瑕疵的快速修补 |
技巧:涂抹范围比水印多盖 2-3 像素,残留边缘会更少;水印压在复杂纹理上时,把策略从 CROP 换成 Resize 试试。
🧹 任务二:移除画面中的多余物体(PowerPaint V2 路线)
适合场景:场景里多了一件家具、一个道具,需要 AI 按周围环境补全,而不只是"填色"。
操作要点:
- 启动时把模型换成扩散类,例如
--model指定 PowerPaint 对应的 HuggingFace 模型 - 涂抹要移除的物体,范围完整盖住它
- 在扩散选项里勾选 PowerPaint V2,任务选 object-remove
- 按界面提示把 guidance scale 设到 10 及以上
- 生成后检查物体边缘的过渡
避坑说明:
fitting_degree(0-1,默认 1.0)控制生成内容与涂抹形状的贴合度,物体残留时保持 1.0 即可,形状对不上时再调低- 扩散模型对显存有要求,显存吃紧时加
--low-mem或--cpu-offload参数,前者启用注意力切片和 VAE tiling,后者把权重挪到内存换显存 - 只换文字提示、不重绘背景时,可把
sd_strength(默认 1.0)调低,结果会更贴近原图
✏️ 任务三:清理游戏截图上的文字(提示词辅助路线)
适合场景:截图上有大段文字,单纯涂抹后背景补全得不够自然,需要 AI 重新生成那块内容。
这一步与任务二的区别是:给模型一个提示词描述"这块区域应该是什么"(例如背景里的游戏场景元素),生成时按提示词重绘。默认参数(步骤 50、guidance 7.5、mask 模糊 11)先跑一版;如果文字残留或生成内容偏离提示,把sd_steps提到 60-70、guidance 提到 8-9 再试。sd_seed填 -1 表示随机,同一张图反复抽卡对比效果时很有用。
🚀 提速与避坑
| 现象 | 优先检查 | 备选动作 |
|---|---|---|
| 扩散模型出图全黑或全绿 | 精度问题,加--no-half用 fp32 | 换模型或更新驱动 |
| 显存不足报错 | --low-mem开启注意力切片 | 加--cpu-offload、--cpu-textencoder进一步省显存 |
| 涂抹边缘有明显接缝 | sd_mask_blur调大(默认 11) | 涂抹范围外扩 2-3 像素后重新生成 |
高频问题:
- CPU 上扩散模型太慢?换回 LaMa 等擦除模型完成"只删不换"的任务,扩散模型留给必须重绘的场景。
- 无网环境能跑吗?加
--local-files-only,只使用本地已下载的模型文件。 - 只想处理固定掩码的成批图片?用批量命令替代 Web 界面(
--mask指向单个文件时,所有图片共用这张掩码):
iopaint run --model=lama --device=cuda \ --image=/path/to/image_folder \ --mask=/path/to/mask_folder \ --output=output_dir📂 仓库路径导航
- README.md:安装、启动、插件与批量处理的完整说明
- iopaint/batch_processing.py:批量修复命令背后的实现,改批量逻辑看这里
- iopaint/plugins/:Segment Anything、RemoveBG、RealESRGAN、GFPGAN 等插件源码
- iopaint/model/power_paint/v2/:PowerPaint V2 模型实现
下一步
先按"跑起来"一节的两条命令把 LaMa 服务启动,用一张带水印的图跑通完整流程,再去试 PowerPaint V2 的物体移除任务。
【免费下载链接】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),仅供参考