IOPaint 图像修复指南:本地一键跑通去水印、抹除物体与文字擦除

发布时间:2026/9/9 18:49:09
IOPaint 图像修复指南:本地一键跑通去水印、抹除物体与文字擦除 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/IOPaintIOPaint 是一个免费开源的图像修复inpainting与外扩绘制outpainting工具基于 LaMa、Stable Diffusion、BrushNet 等 SOTA 模型让你在自己机器上去除图片里的水印、路人、划痕和多余文字或按提示词替换画面内容。它完全自托管CPU、GPU、Apple Silicon 都能跑。场景切入它解决什么问题想象你手头有 200 张图库照片每张都盖着半透明水印。传统做法是打开修图软件手动框选水印区域用仿制或修补工具一点点涂一张图十几分钟涂完还得盯着边缘看有没有糊片。更麻烦的是水印位置不固定每张都要重新框。IOPaint 把这个流程压成两步批量提供原图和遮罩图白色区域表示要抹掉的地方命令行一条命令跑完整个文件夹。README.md 中的批量处理命令就是为此设计的iopaint run --modellama --devicecpu \ --image/path/to/image_folder \ --mask/path/to/mask_folder \ --outputoutput_dir--mask指向一张图片时所有原图共用这一张遮罩适合水印位置固定的场景。上手体验从安装到第一个结果最小路径只需要三条命令GPU 用户先装 CUDA 版 PyTorchpip3 install iopaint iopaint start --modellama --devicecpu --port8080打开浏览器访问http://localhost:8080上传原图、用画笔涂出要擦除的区域点击运行即可。常用参数--model切换模型lama只擦不画powerpaint_v2支持按提示词生成新内容--devicecpu/cuda纯 CPU 也能完整使用--portWeb 服务端口--model-dir自定义模型下载目录模型在首次启动时自动拉取--enable-interactive-seg开启 Segment Anything 交互式分割插件框选比手绘遮罩更省事下图是仓库内置素材左图是布满 Shutterstock 水印的原图右图是用 LaMa 擦除后的结果车窗、发丝等细节基本保持完整。实测数据速度、显存与质量先看各模型的定位差异基于代码中的实现方式整理非跑分模型底层结构CPU 可跑典型任务资源门槛lamaLaMa 补全网络是速度快去水印、擦物体极低数 GB 内存即可powerpaint_v2SD1.5 UNet BrushNet否建议 GPU替换、外扩、五种任务模式约 4GB 显存fp16brushnetSD1.5 UNet BrushNet否建议 GPU通用重绘与 powerpaint_v2 同级anytextSD1.5 OCR 识别否建议 GPU文字重绘/生成约 6GB 显存项目自带压测工具 iopaint/benchmark.py固定 512×512 输入、重复 10 轮输出推理延迟、系统内存和显存占用的均值 ± 标准差python -m iopaint.benchmark --name powerpaint_v2 --device cuda参考测试环境PyTorch 2.1.2 CUDA 11.8README 推荐版本单张 RTX 3080 级别显卡。结论很直接LaMa 延迟以几十毫秒计、内存占用小是批量去水印的首选扩散类模型慢数倍但能无中生有适合需要生成新内容的场景。质量层面LaMa 补全纹理自然但无法改变语义扩散模型可按提示词替换物体代价是耗时和显存——选型本质是在擦得快和画得活之间取舍。原理拆解效果是怎么做到的以 PowerPaint V2 为例按三层展开。解决什么问题普通 inpainting 模型只懂把洞填上填出来的内容跟原图无关而用户常需要擦掉这个灯笼补上屋顶木纹——既要理解要删的东西又要生成贴合上下文的新内容。怎么解决PowerPaint V2 把活拆给两个人干。主画师是 SD1.5 的 UNet负责从噪声里生成画面旁边坐着一位顾问BrushNetiopaint/model/power_paint/v2/BrushNet_CA.py 中的BrushNetModel它看原图和遮罩把这里原来长什么样、哪里要重画提炼成多层特征。启动时power_paint_v2.py 通过 monkey patch 替换 UNet 各下采样/上采样块的 forward把 BrushNet 的特征逐级注入 UNet 对应层级——顾问的批注直接写进画师的每一步草稿。打个比方装修时刷墙师傅UNet不用自己勘察装修顾问BrushNet先带他转一圈把这面墙原色是米黄、踢脚线到 15 厘米写成便签贴在每个工位上刷到哪儿照着哪儿来补出的墙色就歪不到哪去。带来什么效果修复区域与周边纹理、光照衔接更自然且同一模型能干五类活。任务由PowerPaintTask枚举定义见 schema.pyobject-remove只擦不留、context-aware纯靠上下文补全、shape-guided按形状约束生成、text-guided按提示词画、outpainting向画外扩展。任务是怎么说给模型听的这里有个巧思powerpaint_tokenizer.py 往词表里注册了三个暗号——P_ctxt用上下文补、P_obj这里有要删的物体、P_shape按形状来每个暗号展开成 10 个占位向量。选object-remove任务时正向提示词带P_ctxt、负向提示词带P_obj等于告诉模型照着周围补别画出物体。另外fitting_degree参数0~1默认 1.0控制生成内容贴合遮罩形状的程度想严丝合缝就调高想自然随意就调低。实践建议不同场景怎么调批量去水印只擦不画直接用lamaCPU 就能跑速度最快。显存紧张是扩散模型的第一道坎按顺序试启动加--no-half关掉 fp16牺牲速度换兼容开--low-mem开启显存优化见 power_paint_v2.py 中enable_low_mem分支开--cpu-offload让 UNet 各层在 CPU/GPU 间轮流上下最省显存但更慢加--sd-cpu-textencoder把文本编码器放 CPUhelper/cpu_text_encoder.py的实现三个常见坑遮罩和原图尺寸不一致批处理时遮罩文件夹里的图要与原图一一对应白要重画黑保留别画反模型首次下载体积大且依赖网络内网部署用--model-dir指向预先下好的目录powerpaint_v2默认任务text-guided需要提示词只想擦东西却填了画一只猫结果就是按提示词画——按任务类型给powerpaint_task选对枚举值社区参与与演进方向贡献入口在 README 的 Development 章节前端在 web_app/ 下npm install npm run build后端pip install -r requirements.txt后python3 main.py start --model lama --port 8080测试在 iopaint/tests/ 下按模型命名。两个值得跟进的方向一是模型层的扩展iopaint/model/ 里每个模型都是独立的DiffusionInpaintModel子类接新模型只需实现init_model和forward二是插件体系iopaint/plugins/ 把分割Segment Anything、背景移除remove_bg、人脸修复GFPGAN做成可开关组件--enable-interactive-seg这类启动参数就是入口。结尾IOPaint 把擦和画两类能力放在同一个命令行里LaMa 负责快SD 加 BrushNet 负责准。本地部署意味着图片不出内网批处理命令让 200 张图的活变成一条命令。装上、启动、开浏览器剩下的交给模型。【免费下载链接】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),仅供参考

相关新闻