前言:

comfyui-inpaint-nodes是常用效果较好的图像填充方法,并且有自定义的inpaint节点,库中集合了fooocus模型,对图像的填充以及局部重绘都带了便利和效果提升,本篇文章将对该库中的所有结点进行详细的解释以及示例教学,希望大家活学活用!

目录:

一、VAE Encode & Inpaint Conditioning节点

二、Apply Fooocus Inpaint节点

三、Fill Masked Area节点

四、Blur Masked Area节点

五、Denoise to Compositing Mask节点

六、Load Inpaint Model/ Inpaint (using Model)节点

"抠图并填充背景"示例工作流

安装方法:※※看这里※※

一、VAE Encode & Inpaint Conditioning节点

节点功能:这个节点是ComfyUI原始库中vae encode(for inpainting)的替代方案,并且比原始的inpaint更有效果,它与同时使用VAE Encode(用于 Inpainting)和InpaintModelConditioning相同,但是对硬件资源的消耗更少。image

输入:

positive -> 正向条件信息

negative -> 负面条件信息

vae -> 传入vae模型 ***用于图像重建和潜在向量获取的变分自动编码器***

pixels -> 传入的图像信息 ***需要进行图像修复的像素图像***

mask -> 蒙版信息 ***指示需要修复的像素位置的蒙版***

输出:

positive -> 正向条件信息 ***重构图像时所需的正向条件***

negative -> 负面条件信息 ***重构图像时所需的负向条件***

latent_inpaint -> 修复图像的潜在向量 ***用于修复图像的潜在向量和噪音掩码***

latent_samples -> 潜在样本 ***从变分自动编码器中提取的潜在样本***

注意:如下图所示,使用SDXL的大模型,演示了该节点的使用方法,重点在于latent_inpaint,latent_samples两个地方的连接方式,其次就是要对原图进行蒙版绘制,以此来控制扩散区域。image

image

上面两个图像分别是latent_inpaint和latent_samples的解码后的图像内容,latent_inpaint需要传递给Apply Fooocus Inpaint节点用来将模型转换为inpaint模型,在github地址可以看到作者说"这不允许遮罩区域中存在现有内容",所以说需要对蒙版区域进行内容遮盖,否则会导致生图受原图内容的影响,latent_samples将用于传递给ksampler完成局部重绘保证边缘的融合程度。

二、Apply Fooocus Inpaint节点

节点功能:这个节点用来将Fooocus模型应用到修复过程中。

image

输入:

model -> 大模型的数据流 ***需要修复的模型***

patch -> 修复补丁 ***用于修复的补丁,包括修复头模型和潜变量信息***

latent -> 潜变量 ***潜变量信息,包括样本和噪声掩码,是latent_inpaint连接处***

输出:

MODEL -> 大模型数据流 ***应用修复补丁后的模型***

注意:如下图所示,给出了该结点的参数连接方式,大家可以自行参考使用,或者在每个数据流中加入自己的控制方法。image

该节点用来将SDXL模型转换成inpaint功能更强的重绘模型,可以较大程度保证重回区域和边缘的融合程度,但是需要保证SDXL模型为未经过加速和蒸馏的模型,否则会导致最终重绘区域不受提示词影响。传入的Latent要为上一个节点输出的latent_inpaint。

三、Fill Masked Area节点

节点功能:这个节点是对蒙版区域进行预先填充,使用三种不同的填充方式。image

输入:

image -> 图像 ***待修复的图像***

mask -> 掩码 ***修复区域的掩码***

参数:

fill -> 填充方法 ***填充修复区域的方法:中性、Telea、Navier-Stokes***

falloff -> 衰减 ***用于腐蚀修复区域边缘的距离,类似于羽化***

输出:

IMAGE -> 图像 ***修复后的图像***

注意:如下图所示,这里对三种不同的填充方式进行了实验验证,大家可以根据结果自行选择,这种填充方式的用途可以是提供给WD14等提示词反推词,去进行提示词反推,避免出现比如“蒙版,黑色块”这样的提示词。image

四、Blur Masked Area节点

节点功能:这个节点类似于imageblur节点,将蒙版区域进行模糊操作。image

输入:

image -> 图像 ***待修复的图像***

mask -> 掩码 ***修复区域的掩码***

参数:

blur -> 模糊数值 ***模糊程度***

falloff -> 衰减数值 ***类似于羽化***

输出:

IMAGE -> 图像 ***修复后的图像***

注意:如下图所示,将输入图像的蒙版区域进行模糊操作。image

五、Denoise to Compositing Mask节点

节点功能:这个节点是对蒙版值得范围进行归一化处理(可以不必学)。image

输入:

mask -> 蒙版信息 ***输入的噪声蒙版***

参数:

offset -> 偏移 ***用于调整噪声掩码的偏移量***

threshold -> 阈值 ***用于调整噪声掩码的阈值***

注意:offset的值必须严格小于threshold,不然会报错

输出:

MASK -> 蒙版 ***输出符合条件的蒙版***

六、Load Inpaint Model/ Inpaint (using Model)节点

节点功能:这两个节点,第一个节点是加在inpaint模型,注意选择big_lama,不要选择fooocus模型,inpaint(using Model)节点用来对图像进行填充,使用模型进行像素点计算然后填充。image

输入:

inpaint_model -> 修复模型 ***用于修复图像的模型***

image -> 图像 ***需要进行修复的图像***

optional_upscale_model -> 可选的模型 ***可选的用于修复图像的模型***

参数:

mask -> 蒙版 ***指示修复区域的蒙版***

seed -> 种子 ***随机数生成器的种子***

输出:

IMAGE -> 图像 ***修复后的图像***

注意:如下图所示,使用模型进行蒙版区域的填充。image

"抠图并填充背景"示例工作流:

学习完以上节点,您就可以搭建“抠图并填充背景”示例工作流了

注意:该工作流通过segment节点,对输入的文本对应区域进行抠图,然后输出抠出来的图像,随后对区域进行预先填充,用来通过wd14节点进行提示词反推,随后通过fooocus节点进行蒙版区域的再次填充,该工作流在B站有视频讲解。image

工作流讲解视频:看这里。

孜孜不倦,方能登峰造极。坚持不懈,乃是成功关键。