IOPaint:基于 SOTA AI 模型的图像修复与扩图工具
IOPaint 是一款免费、开源、可完全自托管的图像修复(inpainting)与扩图(outpainting)工具,由 SOTA AI 模型驱动。它支持 CPU、GPU 与 Apple Silicon,提供 WebUI,并集成分割、去背景、超分辨率、人脸修复等插件,可用于擦除图片中的杂物、瑕疵、水印、人物,或替换物体、绘制文字与扩展画面。
社区作者 · zZz
它解决什么问题
IOPaint 是 Sanster 开源的图像修复与扩图工具,定位为「由 SOTA AI 模型驱动的免费开源 inpainting & outpainting 工具」。
核心功能:
- 擦除(Erase):使用 LaMa 模型移除图片中不需要的物体、瑕疵、水印、人物。
- 替换物体(Replace Object):使用 PowerPaint 进行物体替换与重绘。
- 文字绘制(Draw Text):使用 AnyText 在图像中绘制文字。
- 扩图(Out-painting):使用 PowerPaint 向外扩展画面。
特性(来自 README):
- 完全免费开源、完全自托管,支持 CPU、GPU 与 Apple Silicon。
- 提供 Windows 一键安装器(Windows 1-Click Installer)。
- OptiClean:macOS 与 iOS 的物体擦除 App。
- 支持多种 AI 模型执行擦除、修复或扩图任务。
- 擦除类模型:用于去除图像中不需要的物体、瑕疵、水印、人物。
- 扩散类模型:用于替换物体或执行扩图,常见模型包括 runwayml/stable-diffusion-inpainting、diffusers/stable-diffusion-xl-1.0-inpainting-0.1、andregn/Realistic_Vision_V3.0-inpainting、Lykon/dreamshaper-8-inpainting、Sanster/anything-4.0-inpainting、BrushNet、PowerPaintV2、Sanster/AnyText、Fantasy-Studio/Paint-by-Example。
- 插件体系:
- Segment Anything:准确且快速的交互式物体分割。
- RemoveBG:移除图像背景或为前景物体生成掩码。
- Anime Segmentation:与 RemoveBG 类似,但模型专门针对动漫图像训练。
- RealESRGAN:超分辨率。
- GFPGAN:人脸修复。
- RestoreFormer:人脸修复。
- FileManager:方便地浏览图片,并直接保存到输出目录。
使用形态:提供 WebUI 交互界面;也可通过命令行做批量处理;README 还提供了前端与后端分离的开发流程。
适用对象:需要本地化、隐私可控的图片擦除与重绘工作流的用户,包括修图爱好者、内容创作者、电商与设计人员,以及希望自建图像编辑服务的开发者。
开源模型信息:来源未给出各模型的参数规模、权重文件大小与具体许可证,相关字段均标注为待核验;模型权重在启动时自动下载。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
一、快速开始
启动 WebUI
- 准备环境(取决于硬件,三选一):
- 仅 CPU:直接进入下一步安装。
- NVIDIA GPU(需先安装 CUDA 版 PyTorch):
pip3 install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/cu118- AMD GPU(仅支持 Linux,PyTorch 尚未在 Windows 上支持 ROCm):
pip3 install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/rocm5.6- 安装并启动:
pip3 install iopaintiopaint start --model=lama --device=cpu --port=8080
- 首次运行:在浏览器访问 http://localhost:8080 即可开始使用。
- 模型下载:所有模型都会在启动时自动下载。若需更改下载目录,追加参数 --model-dir。
二、启用插件
iopaint start --enable-interactive-seg --interactive-seg-device=cuda
- 启动服务时可指定要使用的插件,用 iopaint start --help 查看启用插件的命令。
- 示例(交互式分割):
三、命令行批量处理
iopaint run --model=lama --device=cpu \ --image=/path/to/image_folder \ --mask=/path/to/mask_folder \ --output=output_dir
- 执行:
- 参数说明:--image 是输入图片所在文件夹,--mask 是对应的掩码文件夹;当 --mask 指向的是单个掩码文件时,所有图片都会使用该掩码处理。
四、开发环境搭建(前端 + 后端)
- 安装 nodejs,然后安装前端依赖:
git clone https://github.com/Sanster/IOPaint.gitcd IOPaint/web_appnpm installnpm run buildcp -r dist/ ../iopaint/web_app- 在 web_app 中创建 .env.local 文件,填入后端 IP 与端口:
VITE_BACKEND=http://127.0.0.1:8080- 启动前端开发环境:
npm run dev- 安装后端依赖并启动后端服务:
pip install -r requirements.txtpython3 main.py start --model lama --port 8080- 访问 http://localhost:5173/ 进行开发。前端代码修改后会自动更新,后端 Python 代码修改后需要重启服务。
五、常见问题与提示
- 想在 GPU 上运行,必须先安装 CUDA 版 PyTorch,否则会退回 CPU 运行。
- AMD GPU 的 ROCm 安装方式目前只在 Linux 可行,Windows 尚不支持。
- 模型体积较大,首次启动会自动下载,可通过 --model-dir 指定下载目录以管理磁盘位置。
- Windows 用户可使用 README 提到的 Windows 一键安装器(1-Click Installer)。
- macOS / iOS 用户可使用 OptiClean App 做物体擦除。