ComfyUI-Advanced-ControlNet 插件完全教程
1. 插件简介
插件地址: https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet
这个插件就像是给 ComfyUI 的 ControlNet 功能装上了一个超级强化包!它能让你:
- 时间控制:就像调节音响的音量一样,可以在生成图片的不同阶段调节 ControlNet 的强度
- 批量处理:一次性处理多张图片,每张图片都能设置不同的控制强度
- 精细权重:就像调音台一样,可以精确控制每个部分的影响力
- 多种模式:支持普通 ControlNet、T2I-Adapter、ControlLoRA 等多种控制方式
简单说,这个插件让你对图片生成的控制更加精准,就像从粗糙的画笔升级到了精密的雕刻刀!
2. 如何安装
- 打开 ComfyUI 的
custom_nodes文件夹 - 在命令行中运行:
git clone https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet.git - 重启 ComfyUI
- 在节点菜单中找到带有 🛂🅐🅒🅝 标记的节点
3. 节点详细解析
3.1 Apply Advanced ControlNet - 高级控制网络应用器
这个节点就像一个智能的图片控制中心,它能把你的提示词和控制图片完美结合起来。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| positive | positive | CONDITIONING | 必填 | 正面提示词,告诉AI你想要什么 | 正向条件输入 | 连接正面提示词编码器 |
| negative | negative | CONDITIONING | 必填 | 负面提示词,告诉AI你不想要什么 | 负向条件输入 | 连接负面提示词编码器 |
| control_net | control_net | CONTROL_NET | 必填 | 控制网络模型,像是给AI的参考图纸 | ControlNet模型输入 | 连接ControlNet加载器 |
| image | image | IMAGE | 必填 | 控制图片,告诉AI按什么样子生成 | 控制图像输入 | 连接预处理后的控制图 |
| strength | strength | 0.0-10.0 | 1.0 | 控制强度,就像调节音量大小 | ControlNet整体强度 | 1.0是标准强度,0.5是一半强度 |
| start_percent | start_percent | 0.0-1.0 | 0.0 | 开始时机,什么时候开始起作用 | 采样开始百分比 | 0.0从头开始,0.3从30%开始 |
| end_percent | end_percent | 0.0-1.0 | 1.0 | 结束时机,什么时候停止作用 | 采样结束百分比 | 1.0到最后,0.8到80%停止 |
| mask_optional | mask_optional | MASK | 可选 | 遮罩,控制哪些区域受影响 | 注意力遮罩 | 黑色区域不受影响,白色区域受影响 |
| timestep_kf | timestep_kf | TIMESTEP_KEYFRAME | 可选 | 时间关键帧,精确控制不同时间的强度 | 时间步关键帧 | 连接时间关键帧节点 |
| latent_kf_override | latent_kf_override | LATENT_KEYFRAME | 可选 | 批次控制,给不同图片设置不同强度 | 潜在空间关键帧覆盖 | 连接潜在关键帧节点 |
| weights_override | weights_override | CONTROL_NET_WEIGHTS | 可选 | 权重覆盖,精细调节各层影响力 | 权重覆盖 | 连接权重节点 |
| vae_optional | vae_optional | VAE | 可选 | VAE编码器,某些特殊模型需要 | VAE编码器 | 连接VAE加载器 |
3.2 Load Advanced ControlNet Model - 高级控制网络模型加载器
这个节点就像一个模型仓库管理员,负责加载和准备各种 ControlNet 模型。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| cnet | cnet | 文件列表 | 必选 | 选择要加载的ControlNet模型文件 | ControlNet模型文件路径 | 选择canny、depth等模型文件 |
| _tk_opt | _tk_opt | TIMESTEP_KEYFRAME | 可选 | 时间关键帧,预设时间控制 | 时间步关键帧可选输入 | 一般不用,在Apply节点设置 |
3.3 Timestep Keyframe - 时间关键帧
这个节点就像一个时间控制器,让你可以在生成过程的不同阶段设置不同的控制强度。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| start_percent | start_percent | 0.0-1.0 | 0.0 | 这个设置从什么时候开始生效 | 关键帧开始百分比 | 0.0从头开始,0.5从中间开始 |
| prev_timestep_kf | prev_timestep_kf | TIMESTEP_KEYFRAME | 可选 | 连接上一个时间关键帧,形成时间链 | 前置时间关键帧 | 连接其他时间关键帧节点 |
| strength | strength | 0.0-10.0 | 1.0 | 在这个时间段的控制强度 | 关键帧强度值 | 1.0标准强度,2.0双倍强度 |
| cn_weights | cn_weights | CONTROL_NET_WEIGHTS | 可选 | 精细权重设置 | ControlNet权重 | 连接权重节点 |
| latent_keyframe | latent_keyframe | LATENT_KEYFRAME | 可选 | 批次图片的个别控制 | 潜在关键帧 | 连接潜在关键帧节点 |
| null_latent_kf_strength | null_latent_kf_strength | 0.0-10.0 | 0.0 | 没有特别设置的图片用这个强度 | 默认潜在强度 | 0.5表示其他图片用一半强度 |
| inherit_missing | inherit_missing | True/False | True | 是否继承上个时间点的设置 | 继承缺失值 | True会复用之前的设置 |
| guarantee_steps | guarantee_steps | 整数 | 1 | 强制使用这个设置多少步 | 保证步数 | 1表示至少用1步 |
| mask_optional | mask_optional | MASK | 可选 | 这个时间段的专用遮罩 | 时间关键帧遮罩 | 连接遮罩图片 |
3.4 Latent Keyframe - 潜在关键帧
这个节点就像给每张图片贴标签,让你可以给批次中的每张图片设置不同的控制强度。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| batch_index | batch_index | 整数 | 0 | 第几张图片,从0开始数 | 批次索引 | 0是第1张,1是第2张 |
| strength | strength | 0.0-10.0 | 1.0 | 这张图片的控制强度 | 该索引的强度值 | 1.0标准强度,0.5一半强度 |
| prev_latent_kf | prev_latent_kf | LATENT_KEYFRAME | 可选 | 连接上一个潜在关键帧 | 前置潜在关键帧 | 连接其他潜在关键帧节点 |
3.5 Scaled Soft Weights - 缩放软权重
这个节点就像一个智能调音台,可以让你的提示词和ControlNet之间找到完美的平衡。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| base_multiplier | base_multiplier | 0.0-1.0 | 0.825 | 基础倍数,控制提示词的重要性 | 基础乘数 | 0.825让提示词更重要 |
| uncond_multiplier | uncond_multiplier | 0.0-1.0 | 1.0 | 负面提示词的控制强度 | 无条件乘数 | 1.0标准,0.0忽略负面提示 |
| cn_extras | cn_extras | CN_WEIGHTS_EXTRAS | 可选 | 额外的权重设置 | 权重额外参数 | 连接权重额外节点 |
3.6 ControlNet Soft Weights [SD1.5] - SD1.5软权重
这个节点专门为SD1.5模型设计,就像一个专业的混音器,有13个精确的控制旋钮。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| output_0 | output_0 | 0.0-10.0 | 0.099 | 第1层输出的权重 | 输出层0权重 | 控制最浅层特征的影响 |
| output_1 | output_1 | 0.0-10.0 | 0.121 | 第2层输出的权重 | 输出层1权重 | 控制浅层特征的影响 |
| output_2 | output_2 | 0.0-10.0 | 0.146 | 第3层输出的权重 | 输出层2权重 | 控制中浅层特征的影响 |
| output_3 | output_3 | 0.0-10.0 | 0.177 | 第4层输出的权重 | 输出层3权重 | 控制中层特征的影响 |
| output_4 | output_4 | 0.0-10.0 | 0.215 | 第5层输出的权重 | 输出层4权重 | 控制中层特征的影响 |
| output_5 | output_5 | 0.0-10.0 | 0.260 | 第6层输出的权重 | 输出层5权重 | 控制中深层特征的影响 |
| output_6 | output_6 | 0.0-10.0 | 0.315 | 第7层输出的权重 | 输出层6权重 | 控制中深层特征的影响 |
| output_7 | output_7 | 0.0-10.0 | 0.382 | 第8层输出的权重 | 输出层7权重 | 控制深层特征的影响 |
| output_8 | output_8 | 0.0-10.0 | 0.463 | 第9层输出的权重 | 输出层8权重 | 控制深层特征的影响 |
| output_9 | output_9 | 0.0-10.0 | 0.562 | 第10层输出的权重 | 输出层9权重 | 控制更深层特征的影响 |
| output_10 | output_10 | 0.0-10.0 | 0.681 | 第11层输出的权重 | 输出层10权重 | 控制更深层特征的影响 |
| output_11 | output_11 | 0.0-10.0 | 0.825 | 第12层输出的权重 | 输出层11权重 | 控制最深层特征的影响 |
| middle_0 | middle_0 | 0.0-10.0 | 1.0 | 中间层的权重 | 中间层权重 | 控制核心特征的影响 |
| uncond_multiplier | uncond_multiplier | 0.0-1.0 | 1.0 | 负面提示词控制强度 | 无条件乘数 | 1.0标准,0.0忽略负面 |
| cn_extras | cn_extras | CN_WEIGHTS_EXTRAS | 可选 | 额外权重设置 | 权重额外参数 | 连接权重额外节点 |
3.7 T2I-Adapter Soft Weights - T2I适配器软权重
这个节点专门为T2I-Adapter设计,就像一个简化版的调音台,只有4个关键控制。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| input_0 | input_0 | 0.0-10.0 | 0.25 | 第1个输入层权重 | 输入层0权重 | 控制最初特征的影响 |
| input_1 | input_1 | 0.0-10.0 | 0.62 | 第2个输入层权重 | 输入层1权重 | 控制中层特征的影响 |
| input_2 | input_2 | 0.0-10.0 | 0.825 | 第3个输入层权重 | 输入层2权重 | 控制深层特征的影响 |
| input_3 | input_3 | 0.0-10.0 | 1.0 | 第4个输入层权重 | 输入层3权重 | 控制最深层特征的影响 |
| uncond_multiplier | uncond_multiplier | 0.0-1.0 | 1.0 | 负面提示词控制强度 | 无条件乘数 | 1.0标准,0.0忽略负面 |
| cn_extras | cn_extras | CN_WEIGHTS_EXTRAS | 可选 | 额外权重设置 | 权重额外参数 | 连接权重额外节点 |
3.8 SparseCtrl Loader - 稀疏控制加载器
这个节点专门加载SparseCtrl模型,就像一个专业的动作控制器,特别适合视频生成。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| sparsectrl_name | sparsectrl_name | 文件列表 | 必选 | 选择SparseCtrl模型文件 | SparseCtrl模型路径 | 选择sparse相关的模型文件 |
| use_motion | use_motion | True/False | True | 是否使用动作控制 | 启用运动控制 | True开启动作,False静态 |
| motion_strength | motion_strength | 0.0-10.0 | 1.0 | 动作控制的强度 | 运动强度 | 1.0标准动作,2.0强烈动作 |
| motion_scale | motion_scale | 0.0-10.0 | 1.0 | 动作的缩放比例 | 运动缩放 | 1.0原始大小,0.5缩小一半 |
| sparse_method | sparse_method | SPARSE_METHOD | 可选 | 稀疏控制的方法 | 稀疏方法 | 连接稀疏方法节点 |
| tk_optional | tk_optional | TIMESTEP_KEYFRAME | 可选 | 时间关键帧控制 | 时间步关键帧 | 连接时间关键帧节点 |
| context_aware | context_aware | 选项列表 | NEAREST_HINT | 上下文感知模式 | 上下文感知类型 | 选择最近提示模式 |
| sparse_hint_mult | sparse_hint_mult | 0.0-10.0 | 1.0 | 稀疏提示倍数 | 稀疏提示乘数 | 1.0标准,2.0加强提示 |
| sparse_nonhint_mult | sparse_nonhint_mult | 0.0-10.0 | 1.0 | 非提示区域倍数 | 非提示乘数 | 1.0标准,0.5减弱非提示 |
| sparse_mask_mult | sparse_mask_mult | 0.0-10.0 | 1.0 | 稀疏遮罩倍数 | 稀疏遮罩乘数 | 1.0标准,1.5加强遮罩 |
3.9 Reference ControlNet - 参考控制网络
这个节点就像一个参考图片分析器,能让AI参考一张图片的风格来生成新图片。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| reference_type | reference_type | 选项列表 | 必选 | 参考类型,选择参考什么方面 | 参考类型 | 选择注意力、风格等模式 |
| style_fidelity | style_fidelity | 0.0-1.0 | 0.5 | 风格保真度,多像参考图 | 风格保真度 | 0.5中等相似,1.0完全相似 |
| ref_weight | ref_weight | 0.0-1.0 | 1.0 | 参考权重,参考图的影响力 | 参考权重 | 1.0完全参考,0.5一半参考 |
3.10 ControlNet++ Loader - ControlNet++加载器
这个节点专门加载ControlNet++模型,就像一个增强版的控制器,支持多种输入类型。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| plus_input | plus_input | PLUS_INPUT | 必填 | ControlNet++的输入数据 | Plus输入组 | 连接ControlNet++输入节点 |
| name | name | 文件列表 | 必选 | 选择ControlNet++模型文件 | 模型文件名 | 选择plus相关的模型文件 |
3.11 Timestep Keyframe Interpolation - 时间关键帧插值
这个节点就像一个自动渐变器,能在两个时间点之间自动创建平滑过渡。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| start_percent | start_percent | 0.0-1.0 | 0.0 | 渐变开始时间 | 插值开始百分比 | 0.0从头开始渐变 |
| end_percent | end_percent | 0.0-1.0 | 1.0 | 渐变结束时间 | 插值结束百分比 | 1.0渐变到最后 |
| strength_start | strength_start | 0.0-10.0 | 1.0 | 开始时的强度 | 起始强度值 | 1.0开始时标准强度 |
| strength_end | strength_end | 0.0-10.0 | 1.0 | 结束时的强度 | 结束强度值 | 0.0结束时无影响 |
| interpolation | interpolation | 选项列表 | 必选 | 插值方式,渐变的曲线类型 | 插值方法 | 线性、缓入、缓出等 |
| intervals | intervals | 2-100 | 50 | 分成多少段渐变 | 插值间隔数 | 50段渐变更平滑 |
| prev_timestep_kf | prev_timestep_kf | TIMESTEP_KEYFRAME | 可选 | 连接前一个时间关键帧 | 前置时间关键帧 | 连接其他时间关键帧 |
| cn_weights | cn_weights | CONTROL_NET_WEIGHTS | 可选 | 权重设置 | ControlNet权重 | 连接权重节点 |
| latent_keyframe | latent_keyframe | LATENT_KEYFRAME | 可选 | 潜在关键帧 | 潜在关键帧 | 连接潜在关键帧节点 |
| null_latent_kf_strength | null_latent_kf_strength | 0.0-10.0 | 0.0 | 默认潜在强度 | 空潜在关键帧强度 | 0.5给其他图片一半强度 |
| inherit_missing | inherit_missing | True/False | True | 是否继承缺失设置 | 继承缺失值 | True继承之前设置 |
| mask_optional | mask_optional | MASK | 可选 | 遮罩设置 | 可选遮罩 | 连接遮罩图片 |
| print_keyframes | print_keyframes | True/False | False | 是否打印关键帧信息 | 打印关键帧 | True在控制台显示信息 |
3.12 Latent Keyframe Group - 潜在关键帧组
这个节点就像一个批量标签器,能一次性给多张图片设置不同的控制强度。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| index_strengths | index_strengths | 文本 | 空 | 批量设置格式,用逗号分隔 | 索引强度字符串 | "0=1.0,1=0.5,2:5=0.8" |
| prev_latent_kf | prev_latent_kf | LATENT_KEYFRAME | 可选 | 连接前一个潜在关键帧 | 前置潜在关键帧 | 连接其他潜在关键帧 |
| latent_optional | latent_optional | LATENT | 可选 | 潜在空间数据,用于负数索引 | 可选潜在数据 | 连接潜在空间 |
| print_keyframes | print_keyframes | True/False | False | 是否打印关键帧信息 | 打印关键帧 | True显示设置的关键帧 |
3.13 RGB SparseCtrl Preprocessor - RGB稀疏控制预处理器
这个节点就像一个图片格式转换器,专门为SparseCtrl准备RGB图片数据。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | IMAGE | 必填 | 要处理的RGB图片 | 输入图像 | 连接原始图片 |
| vae | vae | VAE | 必填 | VAE编码器 | VAE编码器 | 连接VAE加载器 |
| latent_size | latent_size | LATENT | 必填 | 潜在空间尺寸参考 | 潜在尺寸 | 连接潜在空间 |
3.14 CtrLoRA Loader - CtrLoRA加载器
这个节点就像一个模型合并器,能把基础模型和LoRA增强包组合起来。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| base | base | 文件列表 | 必选 | 基础ControlNet模型 | 基础模型文件 | 选择基础controlnet文件 |
| lora | lora | 文件列表 | 必选 | LoRA增强模型 | LoRA模型文件 | 选择对应的lora文件 |
3.15 Default Weights - 默认权重
这个节点就像一个标准设置器,提供最基本的权重配置。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| cn_extras | cn_extras | CN_WEIGHTS_EXTRAS | 可选 | 额外权重设置 | 权重额外参数 | 连接权重额外节点 |
4. 使用技巧和建议
4.1 新手入门建议
- 从简单开始:先用基础的 Apply Advanced ControlNet 节点,不要一开始就用复杂的时间控制
- 逐步增加复杂度:熟悉基础功能后,再尝试时间关键帧和权重调节
- 多做实验:不同的参数组合会产生完全不同的效果,多试试找到最适合的设置
4.2 常用组合推荐
基础组合
- Load Advanced ControlNet Model → Apply Advanced ControlNet
- 适合:日常使用,简单控制
时间控制组合
- Timestep Keyframe → Apply Advanced ControlNet
- 适合:需要在生成过程中动态调整强度
精细控制组合
- Scaled Soft Weights → Apply Advanced ControlNet
- 适合:需要平衡提示词和ControlNet的影响
批量处理组合
- Latent Keyframe Group → Apply Advanced ControlNet
- 适合:一次生成多张图,每张都要不同效果
4.3 参数调节技巧
-
strength 强度调节
- 1.0:标准强度,适合大多数情况
- 0.5-0.8:轻微控制,保持更多原创性
- 1.2-2.0:强力控制,严格按照控制图生成
-
时间控制技巧
- start_percent=0.0, end_percent=0.7:前70%使用控制,后30%自由发挥
- start_percent=0.3, end_percent=1.0:前30%自由,后70%严格控制
-
权重调节原则
- base_multiplier 越小,提示词越重要
- uncond_multiplier 越小,负面提示词影响越小
5. 常见问题解答
Q1: 为什么我的ControlNet没有效果?
A: 检查以下几点:
- strength 是否设置为0了
- start_percent 和 end_percent 是否设置合理
- 控制图片是否正确预处理过
Q2: 时间关键帧怎么用?
A: 时间关键帧让你在生成的不同阶段使用不同强度:
- 创建多个 Timestep Keyframe 节点
- 设置不同的 start_percent 和 strength
- 按顺序连接起来
Q3: 批量生成时每张图效果不一样怎么办?
A: 使用 Latent Keyframe 系列节点:
- Latent Keyframe:单独设置某张图
- Latent Keyframe Group:批量设置多张图
- 通过 batch_index 指定是第几张图
Q4: 什么时候用软权重?
A: 当你觉得:
- ControlNet 太强,压制了提示词效果
- 想要更自然的融合效果
- 需要精细调节各层的影响力
Q5: SparseCtrl 和普通 ControlNet 有什么区别?
A: SparseCtrl 特别适合:
- 视频生成
- 动作控制
- 稀疏关键帧控制
- 需要上下文感知的场景
6. 进阶应用实例
实例1:渐变强度控制
使用 Timestep Keyframe Interpolation 创建从强到弱的渐变效果:
- start_percent: 0.0, strength_start: 2.0
- end_percent: 1.0, strength_end: 0.0
- interpolation: linear
- 效果:开始时强力控制,逐渐减弱,最后完全自由
实例2:批量风格变化
使用 Latent Keyframe Group 给不同图片设置不同强度:
- index_strengths: "0=1.0,1=0.8,2=0.6,3=0.4"
- 效果:第1张完全按控制图,后面逐渐减弱
实例3:精细权重调节
使用 ControlNet Soft Weights 微调各层影响:
- 调低前几层权重:减少细节控制
- 调高后几层权重:加强整体结构控制
7. 总结
ComfyUI-Advanced-ControlNet 插件就像给你的创作工具箱添加了一套精密仪器。从简单的强度控制到复杂的时间序列调节,从单图处理到批量生成,这个插件提供了前所未有的精确控制能力。
记住:
- 新手从基础功能开始
- 多实验找到最适合的参数
- 善用时间控制和权重调节
- 不同场景选择不同的节点组合
掌握了这个插件,你就能像专业摄影师调节相机参数一样,精确控制AI的每一个生成细节!