【ComfyUI插件】comfyui-inpaint-nodes插件
前言:
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相同,但是对硬件资源的消耗更少。
输入:
positive -> 正向条件信息
negative -> 负面条件信息
vae -> 传入vae模型 ***用于图像重建和潜在向量获取的变分自动编码器***
pixels -> 传入的图像信息 ***需要进行图像修复的像素图像***
mask -> 蒙版信息 ***指示需要修复的像素位置的蒙版***
输出:
positive -> 正向条件信息 ***重构图像时所需的正向条件***
negative -> 负面条件信息 ***重构图像时所需的负向条件***
latent_inpaint -> 修复图像的潜在向量 ***用于修复图像的潜在向量和噪音掩码***
latent_samples -> 潜在样本 ***从变分自动编码器中提取的潜在样本***
注意:如下图所示,使用SDXL的大模型,演示了该节点的使用方法,重点在于latent_inpaint,latent_samples两个地方的连接方式,其次就是要对原图进行蒙版绘制,以此来控制扩散区域。
上面两个图像分别是latent_inpaint和latent_samples的解码后的图像内容,latent_inpaint需要传递给Apply Fooocus Inpaint节点用来将模型转换为inpaint模型,在github地址可以看到作者说"这不允许遮罩区域中存在现有内容",所以说需要对蒙版区域进行内容遮盖,否则会导致生图受原图内容的影响,latent_samples将用于传递给ksampler完成局部重绘保证边缘的融合程度。
二、Apply Fooocus Inpaint节点
节点功能:这个节点用来将Fooocus模型应用到修复过程中。
输入:
model -> 大模型的数据流 ***需要修复的模型***
patch -> 修复补丁 ***用于修复的补丁,包括修复头模型和潜变量信息***
latent -> 潜变量 ***潜变量信息,包括样本和噪声掩码,是latent_inpaint连接处***
输出:
MODEL -> 大模型数据流 ***应用修复补丁后的模型***
注意:如下图所示,给出了该结点的参数连接方式,大家可以自行参考使用,或者在每个数据流中加入自己的控制方法。
该节点用来将SDXL模型转换成inpaint功能更强的重绘模型,可以较大程度保证重回区域和边缘的融合程度,但是需要保证SDXL模型为未经过加速和蒸馏的模型,否则会导致最终重绘区域不受提示词影响。传入的Latent要为上一个节点输出的latent_inpaint。
三、Fill Masked Area节点
节点功能:这个节点是对蒙版区域进行预先填充,使用三种不同的填充方式。
输入:
image -> 图像 ***待修复的图像***
mask -> 掩码 ***修复区域的掩码***
参数:
fill -> 填充方法 ***填充修复区域的方法:中性、Telea、Navier-Stokes***
falloff -> 衰减 ***用于腐蚀修复区域边缘的距离,类似于羽化***
输出:
IMAGE -> 图像 ***修复后的图像***
注意:如下图所示,这里对三种不同的填充方式进行了实验验证,大家可以根据结果自行选择,这种填充方式的用途可以是提供给WD14等提示词反推词,去进行提示词反推,避免出现比如“蒙版,黑色块”这样的提示词。
四、Blur Masked Area节点
节点功能:这个节点类似于imageblur节点,将蒙版区域进行模糊操作。
输入:
image -> 图像 ***待修复的图像***
mask -> 掩码 ***修复区域的掩码***
参数:
blur -> 模糊数值 ***模糊程度***
falloff -> 衰减数值 ***类似于羽化***
输出:
IMAGE -> 图像 ***修复后的图像***
注意:如下图所示,将输入图像的蒙版区域进行模糊操作。
五、Denoise to Compositing Mask节点
节点功能:这个节点是对蒙版值得范围进行归一化处理(可以不必学)。
输入:
mask -> 蒙版信息 ***输入的噪声蒙版***
参数:
offset -> 偏移 ***用于调整噪声掩码的偏移量***
threshold -> 阈值 ***用于调整噪声掩码的阈值***
注意:offset的值必须严格小于threshold,不然会报错
输出:
MASK -> 蒙版 ***输出符合条件的蒙版***
六、Load Inpaint Model/ Inpaint (using Model)节点
节点功能:这两个节点,第一个节点是加在inpaint模型,注意选择big_lama,不要选择fooocus模型,inpaint(using Model)节点用来对图像进行填充,使用模型进行像素点计算然后填充。
输入:
inpaint_model -> 修复模型 ***用于修复图像的模型***
image -> 图像 ***需要进行修复的图像***
optional_upscale_model -> 可选的模型 ***可选的用于修复图像的模型***
参数:
mask -> 蒙版 ***指示修复区域的蒙版***
seed -> 种子 ***随机数生成器的种子***
输出:
IMAGE -> 图像 ***修复后的图像***
注意:如下图所示,使用模型进行蒙版区域的填充。
"抠图并填充背景"示例工作流:
学习完以上节点,您就可以搭建“抠图并填充背景”示例工作流了
注意:该工作流通过segment节点,对输入的文本对应区域进行抠图,然后输出抠出来的图像,随后对区域进行预先填充,用来通过wd14节点进行提示词反推,随后通过fooocus节点进行蒙版区域的再次填充,该工作流在B站有视频讲解。
工作流讲解视频:看这里。
孜孜不倦,方能登峰造极。坚持不懈,乃是成功关键。