
IOPaint
用 IOPaint 本地部署并完成图片去水印与物体擦除
IOPaint 是一款开源的 AI 图像修复工具,能在本地把水印、路人、瑕疵从图片里擦掉,也能做超分辨率、人脸修复和抠图。本文从环境准备讲到 pip 安装、服务启动、Web 界面涂抹蒙版、模型选择与常见故障处理,给出可直接复制的命令和一条完整跑通的示例。
IOPaint 是一款开源的 AI 图像修复与编辑工具,核心能力是「擦除」:在图片上涂抹出要处理的区域,由模型把这块区域重新生成,从而去掉水印、路人、杂物、文字或皮肤瑕疵。它同时集成了若干可插拔的增强功能,包括超分辨率、人脸修复和背景移除。适合需要在本地处理图片、不希望把素材上传到第三方服务的人,也适合想按自己的模型和硬件配置做二次开发的开发者。本文按「装好 → 启动 → 在界面里擦掉一块内容 → 换模型处理更复杂的场景」的顺序讲,命令都可以直接复制。站内还有 IOPaint 的工具条目,可以先看一眼它支持的能力范围再决定是否本地部署。
准备工作
硬件与系统
IOPaint 可以纯 CPU 运行,也可以在有 NVIDIA GPU 且 CUDA 环境配置正确时用 GPU 加速。CPU 模式对机器要求低,但处理速度慢;GPU 模式快很多,前提是驱动和 CUDA 已经装好。素材没有给出具体的显存门槛,实际能跑多大的图、能同时开几个插件,取决于所选模型和显卡,建议先用小图试跑再上大图。
Python 与依赖版本
IOPaint 通过 pip 分发,需要 Python 环境。素材列出的依赖版本要求如下,安装时如果遇到版本冲突,可以对照这张表排查:
| 依赖包 | 版本要求 |
|---|---|
| torch | >=2.0.0 |
| opencv-python | 未限定 |
| diffusers | ==0.27.2 |
| huggingface_hub | ==0.25.2 |
| accelerate | 未限定 |
| peft | ==0.7.1 |
| transformers | >=4.39.1 |
| safetensors | 未限定 |
| controlnet-aux | ==0.0.3 |
| fastapi | ==0.108.0 |
| uvicorn | 未限定 |
| python-multipart | 未限定 |
| python-socketio | ==5.7.2 |
| typer | 未限定 |
| pydantic | >=2.5.2 |
| rich | 未限定 |
| loguru | 未限定 |
| yacs | 未限定 |
| piexif | ==1.1.3 |
| omegaconf | 未限定 |
| easydict | 未限定 |
| gradio | ==4.21.0 |
| typer-config | ==1.4.0 |
| Pillow | ==9.5.0 |
这些版本号来自素材记录的某个发布版本,后续版本可能调整依赖约束,安装前建议以项目当前发布信息为准。
两种安装路线怎么选
- pip 直接安装:适合想快速体验、不需要改前端或深度定制的人。一条命令装完就能启动。
- 源码克隆安装:适合开发者,需要自定义前端界面,或者想用尚未发布到包管理器的开发版功能。代价是要额外装 Node.js 并自己构建前端。
如果只是想把水印擦掉,走第一条路线即可。
操作步骤
第一步:创建并激活虚拟环境
虚拟环境不是必须的,但能避免 IOPaint 的依赖和你机器上已有的 Python 包互相覆盖。命令按平台区分:
python -m venv iopaint_env
# Linux / macOS
source iopaint_env/bin/activate
# Windows
iopaint_env\Scripts\activate
激活后命令行提示符前通常会出现环境名,确认当前 pip 指向的是这个环境再继续。
第二步:安装 IOPaint
pip install iopaint
如果下载速度慢,可以指定一个就近的 PyPI 镜像源来装,例如:
pip install iopaint -i <镜像源地址>
镜像源地址请使用你所在网络环境下可用的那一个,本文不指定具体站点。安装过程会拉取 torch 等体积较大的包,耗时取决于网络。
第三步:启动 Web 服务
最基础的启动命令如下:
iopaint start --model=lama --device=cpu --port=8080
三个参数的含义:
- --model:指定默认使用的模型。
lama是一个高效的擦除模型,速度快、效果自然,适合作为默认选择。 - --device:计算设备。
cpu表示用 CPU;如果机器有 NVIDIA GPU 且 CUDA 配置正确,换成cuda会快很多。 - --port:服务端口,默认 8080。端口被占用时改成别的值即可。
启动成功后,在浏览器访问 http://localhost:8080 就能打开操作界面。
第四步:按需启用插件
除了擦除,IOPaint 把超分辨率、人脸修复、抠图、交互式分割做成了插件,启动时显式打开才会出现在界面里:
iopaint start \
--model=lama \
--device=cuda \
--port=8080 \
--enable-interactive-seg \
--enable-remove-bg \
--enable-realesrgan \
--enable-gfpgan
各开关对应的能力:
- --enable-interactive-seg:交互式分割,用点选的方式快速圈出要处理的对象,省去手动涂抹。
- --enable-remove-bg:移除背景,一键抠图。
- --enable-realesrgan:超分辨率,放大图片的同时补充细节。
- --enable-gfpgan:人脸修复,针对老照片或模糊人脸做高清还原。
插件开得越多,启动时加载的东西越多,首次使用还会触发模型下载。只开当前需要的即可。
第五步:在 Web 界面里完成一次擦除
界面操作的核心流程只有四步:
- 上传图片:点击 Upload,或者直接把图片拖进工作区。
- 涂抹蒙版:用左侧的画笔工具,在要去掉的水印、物体或瑕疵上涂满。被涂到的区域会以高亮色显示,方便确认范围。画笔大小可以用键盘上的
[和]快速缩放。 - 选模型并执行:在右侧面板选择模型,点击 Run 开始处理。
- 保存结果:处理完成后点击 Save 下载修复后的图片。
涂抹范围要略大于目标本身,边缘留一点余量,模型才有足够上下文把这块区域补得自然;但也不要涂到不该改的地方,否则那部分也会被重新生成。
第六步:按场景选模型
IOPaint 集成了多种模型,选错模型是效果不理想最常见的原因。对应关系如下:
| 要解决的问题 | 推荐模型 / 插件 | 说明 |
|---|---|---|
| 去水印、去物体、去人物、修瑕疵 | LaMa | 速度快,补全结果自然,是最通用的擦除选择 |
| 在指定区域用文字描述生成或替换内容 | PowerPaint、Stable Diffusion Inpainting | 属于「智能内容替换」,需要输入文本提示 |
| 放大图片并提升清晰度 | RealESRGAN(插件) | 启动时加 --enable-realesrgan |
| 修复老旧照片、模糊人脸 | GFPGAN(插件) | 启动时加 --enable-gfpgan |
| 一键移除背景 | RemoveBG(插件) | 启动时加 --enable-remove-bg |
如果只是去水印,LaMa 就够用;需要「把这块换成一只猫」这类生成式替换,才切到 PowerPaint 或 Stable Diffusion Inpainting。
第七步(可选):从源码安装
需要改前端或跟进开发版时,走源码路线。先装好 Node.js 和 Python,然后:
git clone <仓库地址>
cd IOPaint
pip install -r requirements.txt
cd web_app
npm install
npm run build
后端依赖装完后,前端资源需要单独构建,构建产物会被后端服务读取。仓库地址请以项目当前公布的信息为准,本文不给出具体链接。
一个完整示例
下面从零开始,把一个带水印的图片处理干净,全程使用 CPU 和 LaMa,不启用任何插件,是最小可跑通的路径。
1. 建环境并安装
python -m venv iopaint_env
source iopaint_env/bin/activate
pip install iopaint
Windows 下把第二行换成 iopaint_env\Scripts\activate。
2. 启动服务
iopaint start --model=lama --device=cpu --port=8080
终端不再输出新的日志、并提示服务已在监听时,说明启动完成。首次启动可能会下载模型权重,需要等待。
3. 打开界面
浏览器访问 http://localhost:8080。
4. 处理图片
- 把带水印的图片拖进工作区。
- 用画笔把水印完整涂一遍,涂的时候按
[或]调整笔刷,让笔刷略大于水印笔画宽度。 - 确认右侧模型是 LaMa,点击 Run。
- 观察结果,满意就点 Save 保存。
5. 效果不理想时
如果水印位置留下了明显的模糊块或颜色断层,先检查涂抹范围:范围太小时模型缺少上下文,范围过大时又会把周围正常内容一起重绘。调整后重新 Run。仍然不行,再换模型试。
6. 需要放大或修脸时
停掉服务,换成带插件的启动命令:
iopaint start --model=lama --device=cpu --port=8080 --enable-realesrgan --enable-gfpgan
重新打开界面,就能看到超分辨率与人脸修复的入口。
注意事项
模型下载与手动放置
首次使用某些模型时,IOPaint 会自动联网下载权重。如果下载缓慢或失败,可以手动下载模型文件,放到模型目录下,通常是 models\torch\hub\checkpoints。放好之后重启服务再试。
速度慢怎么办
- 有 NVIDIA GPU 且 CUDA 配置正确时,把
--device=cpu改成--device=cuda,这是最直接的提速手段。 - 配置较低的机器保持 CPU 模式,并选用
lama这类轻量模型,可以减少内存占用。 - 不需要的插件不要开,插件会额外占用内存和显存。
GFPGAN 插件的依赖冲突
安装人脸修复插件时可能遇到依赖冲突。可以拆开逐个安装它的依赖:
pip install facexlib
pip install tb-nightly
pip install gfpgan
如果某一步下载慢,同样可以指定就近的镜像源。
修复效果不佳的排查顺序
- 先看涂抹范围是否准确,边缘是否留了余量。
- 再换模型,去水印类问题优先试 LaMa,生成式替换再试 PowerPaint 或 Stable Diffusion Inpainting。
- 最后考虑图片本身分辨率是否过低,必要时先用超分辨率插件放大再处理。
版本与信息时效
本文涉及的依赖版本、模型名称、插件开关均以素材记录的发布版本为准。IOPaint 迭代较快,参数名、默认端口、可用模型和插件列表都可能变化,安装与使用前请以项目当前发布的信息为准。价格、算力配额等商业信息不在本文范围内,如需使用云 GPU 请自行核对服务商当前的计费规则。