【ComfyUI插件】KJnodes插件 (一)
前言:
在ComfyUI领域的插件撰写中,有很多优秀的开源插件创作者,KIjai佬即为其中一个,著名的LivePortairt,SUPIR,CCSR等插件均为该作者提供的源码,这是其github主页,近期我将通过多篇文章对该作者的KJnodes插件库进行节点的注释撰写,其中包含很多功能性插件节点以及文本图像等各种处理节点。
__KJnodes插件(二): __https://articles.zsxq.com/kjnodes/2.html
__KJnodes插件(三): __https://articles.zsxq.com/kjnodes/3.html
目录:
先行:安装方法
一、DownloadAndLoadCLIPSeg\BatchCLiPSeg节点
二、ConditioningMultiCombine节点
三、ConditioningSetMaskAndCombine节点
四、ColorToMask节点
五、GetMaskSizeAndCount节点
六、GrowMaskWithBlur节点
七、OffsetMask节点
安装方法:
在ComfyUI主目录里面输入CMD回车。
在弹出的CMD命令行输入git clone xxx,即可开始下载。
github项目地址:https://github.com/kijai/ComfyUI-KJNodes.git
一、DownloadAndLoadCLIPSeg\BatchCLiPSeg节点
节点功能:这两个节点为配套使用节点,在保证网络没问题的情况下可通过Download节点进行模型下载,并保存在ComfyUI\models\clip_seg文件夹下,后通过Batch节点继续图像的分割识别。
参数:
images -> 输入的图像 ***处理的图像或图像批次,类型为"IMAGE"***
text -> 输入要分割的主体 ***用于图像分割的文本提示,类型为"STRING",不支持多行***
opt_model -> 可选的预训练模型 ***提供的CLIPSeg模型和处理器,类型为"CLIPSEGMODEL"***
prev_mask -> 先前的蒙版 ***用于与当前蒙版合并的先前蒙版,类型为"MASK",默认值为None***
threshold -> 分割阈值,影响分割结果,可通过该值调整蒙版的精细程度 ***用于调整分割结果的阈值,类型为"FLOAT",默认值为0.5,范围0.0到10.0,步长0.001***
binary_mask -> 是否生成二值蒙版 ***如果为True,则生成二值化蒙版,类型为"BOOLEAN",默认值为True***
combine_mask -> 是否合并蒙版 ***如果为True,则合并多个蒙版,类型为"BOOLEAN",默认值为False***
use_cuda -> 是否使用CUDA加速 ***如果为True,则使用CUDA进行计算加速,类型为"BOOLEAN",默认值为True***
blur_sigma -> 高斯模糊的标准差 ***用于对蒙版进行高斯模糊处理,类型为"FLOAT",默认值为0.0,范围0.0到100.0,步长0.1***
image_bg_level -> 图像背景层次水平 ***图像的背景层次,类型为"FLOAT",默认值为0.5,范围0.0到1.0,步长0.01***
invert -> 是否反转蒙版 ***如果为True,则反转生成的蒙版,类型为"BOOLEAN",默认值为False***
注意:二值蒙版指的是蒙版只有黑和白两种情况,所以边缘不存在过度,假如是灰度值蒙版,则蒙版值为0-1之间的过度值,存在黑到白的灰色过度。
如下图所示我们输入文本为“moon”(月亮),然后根据我们输入的模型去进行图像的分割最终输出分割的蒙版,因为选择的是二值化蒙版,所以边缘存在明显的锯齿。
如下图当我们选择不是二值化蒙版的时候,生成的蒙版边缘有明显的灰度过度值,如果再增加模糊度则边缘会更加柔软,大家可以自行尝试对比不同蒙版对生图结果的影响。
二、ConditioningMultiCombine节点
节点功能:该结点将多个条件信息进行合并操作,类似与Conditioning concat,该节点可通过设置inputcount来增加输入的条件信息数量。
输入:
inputcount -> 要输入的条件信息数量
Update inputs -> 设置完数量点击此处更新节点
注意:如下图所示我们设置相同的大模型,随机数种子,相同的CFG和采样步数,将其中一个流的提示词进行分割,通过两个文本框进行提示词的编码,然后通过该节点进行条件信息的合并,随后使用两个tensor debug节点去获取条件信息在模型当中的尺寸,从结果来看这两个条件信息合并后类似于并联进行扩散过程的引导,扩散时间8s,而未分离的提示词扩散时间为2秒,通过提示词的分离最终生图语义理解相对较为精准,但是会损失部分画面的饱和度,相对来说条件信息分离有利于模型更好的理解提示词,更好的生成高质量图像。
三、ConditioningSetMaskAndCombine节点
节点功能:该节点可以将两个条件信息进行合并,并且通过设置每个条件信息对应的蒙版来控制生图的效果,比如针对人物使用一套提示词,针对背景使用一套提示词。
参数:
set_cond_area -> 选择蒙版的默认模式,可以为边界框或者输入的形状
注意:如下图所示我们设置两套文本信息,其中蓝色为正向提示词,红色为第二套提示词,编码后传入ConditioningSetMaskAndCombine节点然后通过ksampler采样器进行生图,最终出图各个区域按照不同的提示词进行生成。
四、ColorToMask节点
节点功能:这个节点是将上传图片的指定颜色范围变为蒙版区域,比如设置红色区域为蒙版,则提取原图中红色区域对应的位置作为蒙版输出。
参数:
invert -> 是否反转蒙版
注意:如下图所示我们上传原图,通过设置对应的颜色区域(255,0,0)表示红色,然后设置一定的threshold就可以识别到原图中颜色对应的范围进行蒙版的输出。
五、GetMaskSizeAndCount节点
节点功能:该节点可以获得蒙版的数量以及蒙版的尺寸,然后进行输出。
注意:如下图所示我我们传入两张蒙版,该节点可以在输出位置输出蒙版的尺寸以及蒙版对应的数量。
六、GrowMaskWithBlur节点
节点功能:该节点可以将输入的蒙版进行扩展,也可进行缩小,可以将输入的蒙版增加边缘模糊,还可将二进制蒙版转换为灰度值蒙版增加边缘的过度等。
参数:
mask -> 输入的蒙版 ***处理的单个蒙版或蒙版批次,类型为"MASK"***
expand -> 蒙版的扩展或收缩量 ***正值扩展蒙版,负值收缩蒙版,类型为"INT",默认值为0,范围-最大分辨率到最大分辨率,步长1***
incremental_expandrate -> 每帧的递增扩展率,影响的是掩码在每一帧的扩展或收缩量的增量 ***每帧递增的扩展率,类型为"FLOAT",默认值为0.0,范围0.0到100.0,步长0.1***
tapered_corners -> 是否使用渐缩的角,开启边缘就会变为灰度值 ***如果为True,则使用渐缩的角,类型为"BOOLEAN",默认值为True***
flip_input -> 是否翻转输入蒙版 ***如果为True,则翻转输入蒙版,类型为"BOOLEAN",默认值为False***
blur_radius -> 模糊半径 ***大于0的值将对蒙版进行模糊处理,类型为"FLOAT",默认值为0.0,范围0.0到100.0,步长0.1***
lerp_alpha -> 帧间插值的α值 ***用于帧间插值的α值,类型为"FLOAT",默认值为1.0,范围0.0到1.0,步长0.01***
decay_factor -> 帧间插值的衰减因子 ***用于帧间插值的衰减因子,类型为"FLOAT",默认值为1.0,范围0.0到1.0,步长0.01***
fill_holes -> 是否填充掩码中的孔洞 ***如果为True,则填充掩码中的孔洞,类型为"BOOLEAN",默认值为False***
注意:如下图所示我们对输入的蒙版进行3像素的扩展,然后打开柔化边角,并设置一定的模糊比例,最终节点输出蒙版有增长并且边缘变为灰度值蒙版有0-1的过度,同时会输出反转后的蒙版,!!!假如识别到的蒙版中间有空洞,我们可以打开fill_holes参数,进行孔洞的填充。
七、OffsetMask节点
节点功能:这个节点可以将蒙版进行移动并且不改变蒙版的大小,并且可以通过设置一定的策略对蒙版进行复制或者旋转等。
参数:
mask -> 输入的蒙版或蒙版批次 ***输入的蒙版图像或一批蒙版图像***
x -> 水平偏移量 ***水平偏移的像素数,可为负值或正值***
y -> 垂直偏移量 ***垂直偏移的像素数,可为负值或正值***
angle -> 旋转角度 ***掩码旋转的角度,以度为单位,范围从 -360 到 360***
duplication_factor -> 蒙版重复因子 ***蒙版批次的数量,即蒙版重复多少次***
roll -> 边缘环绕 ***是否将蒙版边缘滚动到另一边,类似于无缝平铺***
incremental -> 增量变化 ***是否启用增量偏移和旋转,批次索引的倍数决定偏移和旋转的增量***
padding_mode -> 边界填充模式 ***蒙版边界的填充模式,可选值为 ‘empty’(空白填充)、‘border’(边界填充)、‘reflection’(反射填充)***
注意:如下图所示设置蒙版不做扩展,设置x,y的偏移位置,然后输出蒙版,最终的位置进行了移动(在ComfyUI中图像的坐标原点为左上角)
如下图所示设置设置复制为3,角度变化为15度,并且打开incremental增量变化,最终输出蒙版为三张,并且会逐步进行角度的变化。
孜孜不倦,方能登峰造极。坚持不懈,乃是成功关键。
__KJnodes插件(二): __https://articles.zsxq.com/kjnodes/2.html
__KJnodes插件(三): __https://articles.zsxq.com/kjnodes/3.html