ComfyUI-高级-ControlNet
用于跨时间步长和批量潜伏调度 ControlNet 强度,以及应用自定义权重和注意力掩模的节点。这里的 ControlNet 节点完全支持滑动上下文采样,就像 ComfyUI-AnimateDiff-Evolved 节点中使用的那样。目前支持 ControlNets、T2IAdapters、ControlLoRAs、ControlLLLite、SparseCtrls、SVD-ControlNets 和 Reference。
自定义权重允许通过软权重复制 Auto1111 的 sd-webui ControlNet 扩展的“我的提示更重要”功能,并且可以通过更改相同软权重上的 uncond_multiplier 来精细控制“ControlNet 更重要”功能。
ControlNet 预处理器可通过 comfyui_controlnet_aux 节点使用。
特征
- 时间步长和潜在强度调度
- 注意口罩
- 通过Soft Weights复制 sd-webui-controlnet 扩展中的“我的提示更重要”功能,并允许通过base_multiplier调整柔软度
- 通过软权重上的uncond_multiplier复制 sd-webui-controlnet 扩展中的“ControlNet 更重要”功能
- uncond_multiplier=0.0 给出与 auto1111 功能相同的结果,但可以毫无问题地使用 0.0 和 1.0 之间的值来精细控制设置。
- ControlNet、T2IAdapter 和 ControlLoRA 支持滑动上下文窗口
- ControlLLLite 支持
- SparseCtrl 支持
- SVD-ControlNet 支持
- CiaraRowles训练的稳定视频扩散控制网络:深度、线条
- 参考支持
- 支持
reference_attn
、 reference_adain
和refrence_adain+attn
模式。 style_fidelity
和ref_weight
分别相当于Auto1111中的style_fidelity和control_weight,Apply ControlNet的强度是受ref影响的结果和无ref影响的结果之间的平衡。还有一个参考 ControlNet (Finetune) 节点,允许分别调整 attn 和 adain 的 style_fidelity、权重和强度。
目录:
日程安排说明
调度的两个核心概念是时间步长关键帧和潜在关键帧。
时间步长关键帧保存指导控制网络设置的值,并根据其 start_percent(对应于采样过程的百分比)开始生效。它们可以包含每个潜在的强度、control_net_weights 和 Latent_keyframes(每个潜在的特定强度)的掩码,所有这些都是可选的。
潜在关键帧确定控制网络对特定潜在变量的强度 - 它们包含的只是潜在变量的batch_index,以及控制网络应应用于该潜在变量的强度。作为一个概念,潜在关键帧可实现与具有所选强度值的统一蒙版相同的效果。
节点
此处提供的 ControlNet 节点是应用高级 ControlNet和加载高级 ControlNet 模型(或 diff)节点。普通 ControlNet 节点也是兼容的,并且几乎可以互换使用 - 唯一的区别是这些节点中至少有一个必须用于要使用的 ControlNet 的高级版本(对于滑动上下文采样很重要,例如 AnimateDiff-Evolved) 。
钥匙:
- ? - 所需的输入
- ? - 可选输入
- ? - 作为小部件启动,可以转换为输入
- ? - 可选输入/输出,但除非需要,否则不建议使用
- ? - 输出
应用先进的 ControlNet
与普通应用高级 ControlNet(高级)节点的功能相同,但添加了高级 ControlNet 功能。自动将任何 ControlNet 从 ControlNet 加载程序转换为高级版本。
输入
- ?积极:调理(积极)。
- ?消极:调节(消极)。
- ? control_net :加载controlnet;如果它是受支持的类型,则该节点将自动转换为高级版本。
- ? image :引导控制网络的图像 - 如果加载的控制网络需要它,它们必须预处理图像。如果提供一张图像,将用于所有潜在图像。如果提供更多图像,将为每个潜在图像单独使用每个图像。如果没有足够的图像来满足潜在计数,将从头开始重复图像以匹配普通 ControlNet 功能。
- ? mask_Optional :应用于控制网络的注意掩码;基本上,决定控制网络应用于图像的哪一部分(以及相对强度,如果掩模不是二进制的)。与图像输入相同,如果您提供多个掩模,则每个掩模都可以应用于不同的潜在变量。
- ? timestep_kf :时间步长关键帧,用于在整个采样步骤中引导控制网络效果。
- ? Latent_kf_override :覆盖潜在关键帧,如果不需要时间步长关键帧的其他功能,则非常有用。注意:此潜在关键帧将应用于所有时间步长,无论是否有其他潜在关键帧附加到连接的时间步长关键帧。
- ? Weights_override :覆盖权重,如果不需要时间步长关键帧的其他功能,则非常有用。注意:此权重将应用于所有时间步长,无论是否有其他权重附加到连接的时间步长关键帧。
- ?强度:控制网的强度; 1.0 是完全强度,0.0 是完全没有效果。
- ? start_percent :应开始应用 controlnet 的采样步长百分比 - 无论时间步长关键帧上设置什么 start_percent,在达到此 start_percent 之前它们都不会生效。
- ? stop_percent :controlnet 应停止应用的采样步长百分比 - 无论时间步长关键帧上设置什么 start_percent,一旦达到 end_percent,它们都不会生效。
输出
- ?正:使用控制网进行调节(正)
- ?负:使用控制网进行调节(负)
加载高级 ControlNet 模型
加载 ControlNet 模型并将其转换为支持此存储库中所有功能的高级版本。与“应用高级 ControlNet”节点一起使用时,没有理由在此节点上使用 timestep_keyframe 输入 - 请在“应用”节点上使用 timestep_kf。
输入
- ? timestep_keyframe :可选且可能不必要的输入,以使 ControlNet 使用选定的 timestep_keyframes - 除非需要,否则不应使用。如果此节点未附加到“应用高级 ControlNet”节点,但仍想使用时间步长关键帧,或者在同一场景中使用 ControlWeights 的 TK_SHORTCUT 输出,则非常有用。将被“应用高级 ControlNet”节点上的 timestep_kf 输入覆盖(如果在那里提供了)。
- ? model :插入节点差异版本的模型。有些控制网是为接收模型而设计的;如果您不知道这是做什么的,您可能不想使用节点的 diff 版本。
输出
- ? CONTROL_NET :加载高级 ControlNet
时间步长关键帧
根据设置的 start_percent 跨时间步(采样步)调度节点。链接时间步长关键帧允许 ControlNet 通过时间步长关键帧调度跨采样步骤(按百分比)进行调度。
输入
- ? prev_timestep_kf :用于将时间步长关键帧链接在一起以创建时间表。顺序并不重要 - 时间步长关键帧按其 start_percent 自动排序。 prev_timestep_keyframe 中包含的任何时间步长关键帧(包含与时间步长关键帧相同的 start_percent)都将被覆盖。
- ? cn_weights :在此时间步长关键帧生效时应用于 controlnet 的权重。必须与加载的控制网络兼容,否则会抛出错误,解释哪些权重类型是兼容的。如果inherit_missing为True,并且没有传入control_net_weight,将尝试重用时间步关键帧计划中最后使用的权重。如果应用高级 ControlNet 节点具有weight_override,则采样期间将使用weight_override 而不是control_net_weight。
- ? Latent_keyframe :此时间步长关键帧生效时应用于 controlnet 的潜在关键帧。如果inherit_missing为True,并且没有传入latent_keyframe,则将尝试重用时间步关键帧计划中最后使用的权重。如果应用高级 ControlNet 节点具有 Latent_kf_override,则采样期间将使用 Latent_lf_override 而不是 Latent_keyframe。
- ? mask_Optional :应用于控制网络的注意掩码;基本上,决定控制网络应用于图像的哪一部分(以及相对强度,如果掩模不是二进制的)。与“应用高级 ControlNet”节点上的 mask_Option 相同,可以将一个标记应用于所有潜在变量,也可以为每个潜在变量应用单独的掩码。如果inherit_missing为True,并且没有传入mask_Optional,则将尝试重用时间步关键帧计划中最后使用的mask_Optional。它不会被应用高级 ControlNet 节点上的 mask_option 覆盖;将一起使用。
- ? start_percent :此时间步长关键帧有资格使用的采样步长百分比。充当时间步长关键帧计划中时间步长关键帧的“关键”。
- ?强度:控制网的强度;将 controlnet 乘以该值,基本上与“应用 ControlNet”节点上的强度一起应用。如果设置为 0.0,则在此时间步长关键帧效果的持续时间内不会产生任何效果,并且会通过不执行任何工作来提高采样速度。
- ? null_latent_kf_strength :分配给在传入的 Latent_keyframes 中未说明的潜在变量的强度。如果没有传入 Latent_keyframes,或者在采样过程中 Latent_keyframes 中没有未计入任何 batch_indeces,则不会产生任何影响。
- ?继承_缺失:确定是否应重用先前时间步长关键帧中的值作为未包含在此时间步长关键帧中的可选值(control_net_weights、latent_keyframe 和 mask_option)。要仅继承特定输入,请使用默认输入。
- ? guarantee_steps :当 1 或更大时,即使计划中该时间步长关键帧的 start_percent 更接近当前采样百分比,该时间步长关键帧仍将用于指定的步数,然后再转到下一个选定的时间步长关键帧接下来的步骤。无论是否使用时间步长关键帧,其输入仍将考虑继承缺失的目的。
输出
- ? TIMESTEP_KF :创建的时间步长关键帧,可以链接到另一个或链接到时间步长关键帧输入。
时间步长关键帧插值
允许使用给定百分比范围内的插值强度值创建时间步长关键帧。 (第一个生成的关键帧的guarantee_steps=1,其余的关键帧的guarantee_steps=0)。
输入
- ? prev_timestep_kf :用于将时间步长关键帧链接在一起以创建时间表。顺序并不重要 - 时间步长关键帧按其 start_percent 自动排序。 prev_timestep_keyframe 中包含的任何时间步长关键帧(包含与时间步长关键帧相同的 start_percent)都将被覆盖。
- ? cn_weights :在此时间步长关键帧生效时应用于 controlnet 的权重。必须与加载的控制网络兼容,否则会抛出错误,解释哪些权重类型是兼容的。如果inherit_missing为True,并且没有传入control_net_weight,将尝试重用时间步关键帧计划中最后使用的权重。如果应用高级 ControlNet 节点具有weight_override,则采样期间将使用weight_override 而不是control_net_weight。
- ? Latent_keyframe :此时间步长关键帧生效时应用于 controlnet 的潜在关键帧。如果inherit_missing为True,并且没有传入latent_keyframe,则将尝试重用时间步关键帧计划中最后使用的权重。如果应用高级 ControlNet 节点具有 Latent_kf_override,则采样期间将使用 Latent_lf_override 而不是 Latent_keyframe。
- ? mask_Optional :应用于控制网络的注意掩码;基本上,决定控制网络应用于图像的哪一部分(以及相对强度,如果掩模不是二进制的)。与“应用高级 ControlNet”节点上的 mask_Option 相同,可以将一个标记应用于所有潜在变量,也可以为每个潜在变量应用单独的掩码。如果inherit_missing为True,并且没有传入mask_Optional,则将尝试重用时间步关键帧计划中最后使用的mask_Optional。它不会被应用高级 ControlNet 节点上的 mask_option 覆盖;将一起使用。
- ? start_percent :第一个生成的时间步长关键帧有资格使用的采样步长百分比。
- ? end_percent :最后生成的时间步长关键帧有资格使用的采样步长百分比。
- ? Strength_start :时间步长关键帧在范围开始处的强度。
- ? Strength_end :时间步长关键帧在范围末尾的强度。
- ?插值法:插值法。
- ?间隔:总共生成的关键帧数量 - 第一个的 start_percent 等于 start_percent,最后一个的 start_percent 等于 end_percent。
- ? null_latent_kf_strength :分配给在传入的 Latent_keyframes 中未说明的潜在变量的强度。如果没有传入 Latent_keyframes,或者在采样过程中 Latent_keyframes 中没有未计入任何 batch_indeces,则不会产生任何影响。
- ?继承_缺失:确定是否应重用先前时间步长关键帧中的值作为未包含在此时间步长关键帧中的可选值(control_net_weights、latent_keyframe 和 mask_option)。要仅继承特定输入,请使用默认输入。
- ? print_keyframes :如果为 True,将打印此节点生成的时间步长关键帧以用于调试目的。
输出
- ? TIMESTEP_KF :创建的时间步长关键帧,可以链接到另一个或链接到时间步长关键帧输入。
列表中的时间步长关键帧
允许通过浮点数列表创建时间步长关键帧,例如使用来自 ComfyUI_FizzNodes 节点的批量值计划。 (第一个生成的关键帧的guarantee_steps=1,其余的关键帧的guarantee_steps=0)。
输入
- ? prev_timestep_kf :用于将时间步长关键帧链接在一起以创建时间表。顺序并不重要 - 时间步长关键帧按其 start_percent 自动排序。 prev_timestep_keyframe 中包含的任何时间步长关键帧(包含与时间步长关键帧相同的 start_percent)都将被覆盖。
- ? cn_weights :在此时间步长关键帧生效时应用于 controlnet 的权重。必须与加载的控制网络兼容,否则会抛出错误,解释哪些权重类型是兼容的。如果inherit_missing为True,并且没有传入control_net_weight,将尝试重用时间步关键帧计划中最后使用的权重。如果应用高级 ControlNet 节点具有weight_override,则采样期间将使用weight_override 而不是control_net_weight。
- ? Latent_keyframe :此时间步长关键帧生效时应用于 controlnet 的潜在关键帧。如果inherit_missing为True,并且没有传入latent_keyframe,则将尝试重用时间步关键帧计划中最后使用的权重。如果应用高级 ControlNet 节点具有 Latent_kf_override,则采样期间将使用 Latent_lf_override 而不是 Latent_keyframe。
- ? mask_Optional :应用于控制网络的注意掩码;基本上,决定控制网络应用于图像的哪一部分(以及相对强度,如果掩模不是二进制的)。与“应用高级 ControlNet”节点上的 mask_Option 相同,可以将一个标记应用于所有潜在变量,也可以为每个潜在变量应用单独的掩码。如果inherit_missing为True,并且没有传入mask_Optional,则将尝试重用时间步关键帧计划中最后使用的mask_Optional。它不会被应用高级 ControlNet 节点上的 mask_option 覆盖;将一起使用。
- ? float_strengths :浮点列表,对应于每个时间步长关键帧的强度;第一个将分配给 start_percent,最后一个将分配给 end_percent,其余的在之间线性分布。
- ? start_percent :第一个生成的时间步长关键帧有资格使用的采样步长百分比。
- ? end_percent :最后生成的时间步长关键帧有资格使用的采样步长百分比。
- ? null_latent_kf_strength :分配给在传入的 Latent_keyframes 中未说明的潜在变量的强度。如果没有传入 Latent_keyframes,或者在采样过程中 Latent_keyframes 中没有未计入任何 batch_indeces,则不会产生任何影响。
- ?继承_缺失:确定是否应重用先前时间步长关键帧中的值作为未包含在此时间步长关键帧中的可选值(control_net_weights、latent_keyframe 和 mask_option)。要仅继承特定输入,请使用默认输入。
- ? print_keyframes :如果为 True,将打印此节点生成的时间步长关键帧以用于调试目的。
输出
- ? TIMESTEP_KF :创建的时间步长关键帧,可以链接到另一个或链接到时间步长关键帧输入。
潜在关键帧
单个潜在关键帧选择特定批次索引的强度。如果采样期间不存在batch_index,则不会产生任何效果。可以与任何其他潜在关键帧类型节点链接以创建潜在关键帧计划。
输入
- ? prev_latent_kf :用于将潜在关键帧链接在一起以创建时间表。如果 prev_latent_keyframes 中包含的潜在关键帧与该潜在关键帧具有相同的batch_index,则它们将优先于该节点的值。
- ? batch_index :要应用 controlnet 强度的批次中的潜在索引。充当潜在关键帧计划中潜在关键帧的“关键”。
- ?强度:应用于相应潜伏的控制网强度。
输出
- ? LATENT_KF :创建的潜在关键帧,可以链接到另一个或链接到潜在关键帧输入。
潜在关键帧组
允许通过单独的索引或 python 风格的范围创建潜在关键帧。
输入
- ? prev_latent_kf :用于将潜在关键帧链接在一起以创建时间表。如果 prev_latent_keyframes 中包含的任何潜在关键帧与此潜在关键帧具有相同的batch_index,则它们将优先于该节点的版本。
- ? Latent_Optional :期望传入采样的潜在变量;仅当您希望使用负数时才需要(将自动转换为实数值)。
- ? index_strengths :索引的字符串列表或要为其分配强度的Python风格的索引范围。如果传入 Latent_Optional ,则可以包含负数或包含负数的范围,Python 风格。不同的索引必须用逗号分隔。单个潜在变量可以通过
batch_index=strength
指定,例如0=0.9
。范围可以通过start_index_inclusive:end_index_exclusive=strength
指定,例如0:8=strength
。当 Latents_Optional 具有输入(带有诸如0,-4=0.25
之类的字符串)时,负索引是可能的。 - ? print_keyframes :如果为 True,将打印此节点生成的潜在关键帧以用于调试目的。
输出
- ? LATENT_KF :创建的潜在关键帧,可以链接到另一个或链接到潜在关键帧输入。
潜在关键帧插值
允许使用一定范围内的插值创建潜在关键帧。
输入
- ? prev_latent_kf :用于将潜在关键帧链接在一起以创建时间表。如果 prev_latent_keyframes 中包含的任何潜在关键帧与此潜在关键帧具有相同的batch_index,则它们将优先于该节点的版本。
- ? batch_index_from :范围的起始batch_index,包括在内。
- ? batch_index_to :范围的结束batch_index,排除(python样式范围)。
- ? Strength_from :插值的起始强度。
- ? Strength_to :插值的结束强度。
- ?插值法:插值法。
- ? print_keyframes :如果为 True,将打印此节点生成的潜在关键帧以用于调试目的。
输出
- ? LATENT_KF :创建的潜在关键帧,可以链接到另一个或链接到潜在关键帧输入。
列表中的潜在关键帧
允许通过浮点列表创建潜在关键帧,例如使用来自 ComfyUI_FizzNodes 节点的批量值计划。
输入
- ? prev_latent_kf :用于将潜在关键帧链接在一起以创建时间表。如果 prev_latent_keyframes 中包含的任何潜在关键帧与此潜在关键帧具有相同的batch_index,则它们将优先于该节点的版本。
- ? float_strengths :浮点列表,对应于每个潜在关键帧的强度; batch_index 是列表中每个浮点值的索引。
- ? print_keyframes :如果为 True,将打印此节点生成的潜在关键帧以用于调试目的。
输出
- ? LATENT_KF :创建的潜在关键帧,可以链接到另一个或链接到潜在关键帧输入。
还有更多节点可以记录和显示用法 - 将很快添加!待办事项