前言
本文主要介绍SD1.5和SDXL模型的inpaint局部重绘,当然除此之外还有更好的Flux和QwenImage模型的局部重绘,会比SD1.5等早期模型做得更好。从早期的基础模型开始有助于我们了解跟深层次的原理,小模型对硬件配置要求和时间成本也有更好的优势。对于那些新模型原理基本都是差不多的,当然在后续也会有对应模型的局部重绘教程。
遮罩Mask
遮罩被广泛应用到图形设计和影视剪辑领域,在confyui中局部重绘中,遮罩用于区分重绘区域和非重绘区域。
初识遮罩
1、新建一个空白的工作流,分别加入图像加载节点(load image),和遮罩预览节点(MaskPreview),把加载图像节点的遮罩输出,连接到遮罩预览节点,然后任意上传一张图像,如图所示:
2、在图像节点中,图像任意位置单击鼠标右键,选择在遮罩编辑器中打开(Open in Mask Editor),选择蒙版遮罩选项(一般默认就是),选择一个合适的画笔大小,任意涂抹画面中的内容。涂抹完成后会在涂抹的区域显示半透明的黑色,点击保存。如图所示:
执行工作流后,在遮罩预览节点中,显示了刚刚绘制的遮罩,白色区域为遮罩区域(即需要用于重绘的区域)。
关于蒙版的其他操作
基础局部重绘
接下来以下面图像为例,意在将图中的蛋糕区域重绘为红烧肉(Braised Pork),如图所示:
vae编码局部重绘
1、加载一个默认的工作流,选择一个sd1.5的模型,我这个以sd1.5官方基础模型为例,然后输入合适的提示词,提示词内容为需要重新绘制的内容。例如:Braised Pork。
2、为图像蛋糕区域涂抹遮罩,添加VAE编码(局部重绘)节点VAE Encode (for Inpainting),将图像、遮罩、vae与节点输入相连。latent输出与采样器相连。如图所示:
3、点击执行看一下重绘效果,如图所示:
可以明确的看到重绘后的结果,虽然该区域内容已经完成重新绘制,但是图像效果非常不理想。整个重绘内容就像是生搬硬套的放进去一样,十分突兀。
设置latent噪波遮罩
尝试使用另外一种方式来进行重绘。
1、将刚刚的VAE编码(局部重绘)节点删除,添加另外一个设置latent噪波遮罩节点(Set Latent Noise Mask),该节点输入遮罩和latent数据,所以还需要将图像使用vae编码成latent数据。如图所示:
2、再次点击执行,可以看到边缘过渡还是会有些问题,但这次的重绘效果会比刚刚好不少,至少没有刚刚那么突兀。如图所示:
3、我们尝试把降噪值调低一点,会发现融合得会更好。如图所示:
虽然上述降低重绘幅度会得到一定的改善,但终究无法将新绘制的内容,完美的溶如到原本的图像中,无论如何在边缘过渡处都会有很大的问题。当然这并不能满足我们的要求,这就需要借助模型来解决,不过在这之前应先了解清楚vae编码(局部重绘)与设置latent噪波遮罩的本质区别。
局部重绘inpaint模型
除了类似controlnet这样将模型分离出来的,还有与unet模型融合在一起的inpaint模型。这类型模型无需借助任何低三方模型,可以直接对图像进行重绘。
这里分享两个带有inpaint的模型,分别是sd1.5基础模型和麦橘写实的inpaint模型。
存放路径:ComfyUI\models\checkpoints
网盘下载:https://pan.quark.cn/s/e4b1f4549d82
工作流搭建
使用带有局部重绘的unet模型,搭建工作流与基础模型与前文提到的vae编码局部重绘完全一样,不同的只是unet模型。完整工作流,如图所示:
使用controlnet局部重绘
在上一个小节中我们接触到了controlnet控制,局部重绘也可以通过controlnet来控制,首先得下载inpaint模型。
存放路径:ComfyUI\models\controlnet
网盘下载:https://pan.quark.cn/s/2a8088d09670
工作流搭建
controlnet局部重绘有两种方式,分别是之前接触的controlnet应用节点,和controlnet应用(阿里妈妈局部重绘)。工作流搭建方式就是结合局部重绘与controlnet两者实现。
完整工作流,如图所示:
外补扩图
扩图也是重绘的一种,只需要添加图像区域之外的遮罩即可。
1、添加外补画板节点。节点库→图像→外补画板,如图所示:
2、该节点需要传入一张图像,输出图像与遮罩。遮罩区域通过上、下、左、右进行设置,单位为px。例如将原图上下各增加80px内容。完整工作流如图所示:
说明
案例工作流
第三方局部重绘节点
除了上述的几种重绘方式之外,还可以借助第三方节点进行重绘。
BrushNet局部重绘,传送门:BrushNet节点与randomMask局部重绘操作使用教程















评论(0)