【ComfyUI插件】 ComfyUI-Advanced-ControlNet核心节点(二)
前言:
ComfyUI-Advanced-ControlNet库包含大量时间插值控制方法,及从时间维度和latent层的维度对图像的生成过程进行控制,主要概念就是__时间步长关键帧__和__潜在关键帧__两个概念。当您学会使用该库,你可以在图片或视频生成过程中加入自己的控制方法,比如在扩散的前50使用权重0.1,在扩散的后50使用0.9的权重,也可以在latent维度,对单个潜空间进行时间步长设置,本文将对节点进行逐个讲解,并且会以尽量详细的过程和配图,尽量通俗易懂的语言进行书写。
__ComfyUI-Advanced-ControlNet核心节点(一): __https://articles.zsxq.com/controlNet/1.html
目录:
先行:安装方法
一、Force Default Weights节点
二、Scaled Soft Weights\Scaled Soft Masked Weights节点
三、SparseCtrl节点
四、Load Advanced ControlNet Model (diff)/Load Advanced ControlNet Model节点
"动画"示例工作流:
安装方法:
在ComfyUI主目录里面输入CMD回车。
在弹出的CMD命令行输入git clone xxx,即可开始下载。
github项目地址:https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet.git
*****特别重要*****
时间步长关键帧:将时间进行分割,设置为你满意的时间尺度,比如0-1s,分割成0-0.1,0.1-0.5,0.5-1。
潜在关键帧: 假如我们Latent的batch设置为10,则每一个latent称为一个关键帧。
模型权重:指模型中的参数,用于调整模型的行为和输出。在控制网络中,权重通常用于调整模型对不同输入特征的关注程度。
控制强度:指定某种影响或调整的程度或强度。在控制网络中,“strength” 可能用于调整某些参数或控制某些操作的强度或影响程度。
注意:在计算机领域,索引或者编号,默认为从0开始。
一、Force Default Weights节点
节点功能:该结点将该时间步长关键帧的强度设置和时间步长设置强制为默认(CN_WEIGHTS该参数我理解并不透彻!!)。
输出:
CN_WEIGHTS -> 强制设置为默认参数 **我没有找到应用的方法**
TK_SHORTCUT -> 强制时间步长关键帧为默认设置
注意:如下图所示我们在0-0.5的时间步长关键帧设置控制强度为1,但是我们加入了Force Default Weights节点之后,该强制总时间域的控制强度为默认值0.1(即Apply Advanced ControlNet节点设置的值),所以最终生成的图像并没有受到深度图的约束。
注意:时间步长关键帧的设置必须从0开始,Apply Advanced ControlNet设置的时间也必须从0开始,Force Default Weights是覆盖整个时间域的强度。
二、Scaled Soft Weights\Scaled Soft Masked Weights节点
节点功能:这两个节点通过给与"乘子"的方式进行权重调节,mask节点可以通过蒙版控制不同区域设置成为不同的控制权重。
输入:
mask -> 使用蒙版信息传递该区域的控制权重 **总体有偏,大体符合**
注意:如下图所示我们设置时间步长关键帧的控制权重为1,则图像应该按照深度图的信息进行扩散,但是我们设置蒙版区域的"乘子为0.1",即设置在蒙版区域的控制权重为0.1,所以最终生成的图像,非蒙版区域基本按照深度图进行扩散,但是蒙版区域并不受深度图的约束。
参数:
base_multiplier -> 基础乘子是多少 **该值与默认权重值相乘来控制权重**
flip_weights -> 是否将权重进行翻转 **先前有传入,此值会一起计算强度**
min_base_multiplier -> 最小乘子值
max_base_multiplier -> 最大乘子值
注意:如下图所示,我们可以通过使用两个时间步长关键帧,两个蒙版表示不同的区域和两个Scaled Soft Masked Weights结点来控制不同区域的不同权重,下图为让0-0.5的时间步长在右下角蒙版中权重为0.1,在0.5-1的时间步长内让窗户的权重为0.1,最终生成的图像这两处模型行为有改变。
重要!!!:至于为什么没蒙版区域的墙壁却不被深度图影响,这我也不了解,因为深度学习模型的可解释性一直是个未解之谜,这里调整的是权重而不是强度,权重指的是存在模型中的参数,控制模型的行为,所以相互之间可能存在作用关系。
输出:
CN_WEIGHTS -> 输出模型权重的更改信息
TK_SHORTCUT -> 输出时间步长设置信息
三、SparseCtrl节点
节点功能:这些是稀疏控制模型使用到的节点,对视频进行处理需要用到。
节点索引:Load Merged SparseCtrl Model/ RGB SparseCtrl/ SparseCtrl Index Method/ SparseCtrl Spread Method/ Load SparseCtrl Model
注意:博主电脑不太行,没有办法跑这些节点,不过可以提供节点的下载方式。等后续有钱了换个好电脑,补上这一块的缺失。
目前SparseCtrl提供了两个模型,分别是RGB image condition和scribble condition两个模型,地址如下:
AnimateDiff库:https://huggingface.co/guoyww/animatediff/tree/main
该库基本包含所有AnimateDiff用到的模型,比如运动lora模型,运动大模型等。
这些节点的使用需要用到AnimateDiff库,后续会合并讲解,敬请期待!!!
下图为参考工作流,其中紫色代表基本文生图工作流,重点在于固定随机数种子和潜空间设置为16图像,最终预览每8帧为1秒。绿色表示AnimateDiff节点,用来设置运动模型和运动lora,其中v3_sd15_adapter模型为域适配器,与普通的lora加载方式一样,主要目的是去除图片中的噪点信息。红色代表SparseCtrl模型的加载和应用,使用ControlNet预处理生成线稿,然后通过稀疏控制模型去影响生图。
开启v3_sd15_adapter域适配器图像:
未开启v3_sd15_adapter域适配器:
**这两张图一共4秒钟,用了我30多分钟**
四、Load Advanced ControlNet Model (diff)/Load Advanced ControlNet Model节点
节点功能:这两个结点用来加载ControlNet模型,并自动转换为Advanced版本。
输入:
model -> 输入允许diff版本的模型 **有些ControlNet是为接收模型而设计的**
timestep_keyframe -> 时间步长关键帧参数
参数:
control_net_name -> 加载的ControlNet模型
print_keyframes -> 是否打印输出的信息 **在命令行会打印相关信息**
输出:
CONTROL_NET -> 输出蕴含控制信息的指定的ControlNet模型
******以下工作流仅为示例,不要求必须会搭建,因为还没有讲AnimateDiff节点*****
"动画"示例工作流:
学习完以上节点,您就可以搭建"动画"示例工作流了
这里使用SD1.5的大模型,使用麦橘V7大模型去生成真实的人物,使用ControlNet模型去控制人物姿势,通过高级ControlNet节点去加载功能:
孜孜不倦,方能登峰造极。坚持不懈,乃是成功关键。
__ComfyUI-Advanced-ControlNet核心节点(一): __https://articles.zsxq.com/controlNet/1.html