How to turn any model into an inpainting model
你一共需要 ABC 三个模型
A是 Stable Diffusion 1.5 inpainting 模型 https://huggingface.co/runwayml/stable-diffusion-inpainting/tree/main
B是你需要进行转化的模型,比如NovelAI, Anything
C是 Stable Diffusion 1.5 的普通模型 https://huggingface.co/runwayml/stable-diffusion-v1-5/tree/main
进入WebUI的Checkpoint Merger界面,把ABC分别填进去
下面的Custome Name,给模型起个名字,你自己能找到就好
Multiplier系数,拉到最右边,1。
Interpolation Method选择第三个 Add difference。
格式选safetensors就行,如果你想顺便把vae烤进去,就在bake in vae中选B模型用的vae。
其他的不用动,点Merge就行了。
这样融合过的模型,在进行局部重绘时,融入原画面的能力会大大增强。
原图
AnythingV3
AnythingV3 融合后
原理:Add difference 的公式是 A + (B – C) * M。
当M=1时,相当于 A – C + B。
A – C 就是重绘模型和普通模型的差,也就是重绘模型独特的部分。把它加给B,你自己的模型也就有了重绘能力。
作者:吸管伯爵
我们已经有了非常擅长修复的 sd-1.5-inpainting 模型。
但是,如果我想使用其他模型进行修复,例如 Anything3 或 DreamLike,该怎么办?任何其他模型都不能像 sd-1.5-inpainting 模型那样处理修复,尤其是当您对“蒙版内容”使用“潜在噪点”选项时。
如果只是将 1.5 与另一个模型结合使用,您也不会得到好的结果,您的主模型将失去一半的知识,并且修复是 sd-1.5-inpainting 模型的两倍。所以我尝试了另一种方法。
我决定尝试使用“添加差异”选项,并将 1.5 修复模型和 1.5 修剪模型之间的差异添加到我想教授修复的模型中。而且效果很好!您可以在屏幕截图中看到修复的结果和参数。
如何制作自己的修复模型:
1 转到 webui 中的 Checkpoint Merger AUTOMATIC1111
2 将模型 A 设置为“sd-1.5-inpainting”模型 ( https://huggingface.co/runwayml/stable-diffusion-inpainting )
3 将模型 B 设置为您想要的任何模型
4 将模型 C 设置为“v1.5-pruned”模型(https://huggingface.co/runwayml/stable-diffusion-v1-5 )
5 将乘数设置为 1
6 选择“加差”插值方式
7 确保您的模型在其名称末尾有“-inpainting”部分(Anything3-inpainting、DreamLike-inpainting 等)
8 单击“运行按钮”并等待
9 玩得开心!
我没有检查过,但也许可以在 SDv2.0 中做类似的事情,它也有一个修复模型
如果您不想自己创建 Anything-v3-inpainting 模型,也可以尝试它: https://civitai.com/models/3128/anything-v3-inpainting