Skip to content

ControlNet

定位

ControlNet 使用参考图为扩散过程增加结构条件,使结果遵循指定的边缘、姿势、深度或构图。

模型文件通常放在:

bash
ComfyUI/models/controlnet/

工作流

典型流程包含参考图、预处理器、ControlNet 模型和条件应用:

md
Load Image

预处理器(Canny / OpenPose / Depth)

Apply ControlNet ← Load ControlNet

正向与负向 CONDITIONING

KSampler

预处理器将普通图片转换为控制图,ControlNet 模型负责解释该控制图。两者必须匹配。

目标预处理结果对应模型
保留轮廓Canny 边缘图Canny ControlNet
保留人物姿势OpenPose 骨架图OpenPose ControlNet
保留空间层次Depth 深度图Depth ControlNet
按线稿生成Scribble / Lineart对应的 Scribble / Lineart ControlNet

核心节点不一定包含所有预处理器,部分流程需要安装 ControlNet Aux 等自定义节点。

Apply ControlNet

参数作用
positive正向提示条件
negative负向提示条件
control_netControlNet 模型
image预处理后的控制图
strength控制条件的影响强度
start_percent在扩散进度的何处开始控制
end_percent在扩散进度的何处结束控制

常见初始参数为 strength0.6~0.9start_percent = 0end_percent0.7,实际取值取决于模型和控制目标。

  • 结果过于僵硬:降低 strength,或提前结束控制。
  • 结果忽略参考图:先检查模型是否匹配,再适度提高强度。
  • 细节或脸部异常:让 ControlNet 更早结束,给采样后期更多自由。

多个 ControlNet

多个 ControlNet 可以链式应用,例如同时约束姿势和深度。每增加一个控制条件都会提高显存占用,并可能与其他条件发生冲突。

组合前应分别测试:

  • 单独使用时控制图是否正确。
  • 模型是否与基础模型家族兼容。
  • 每个控制条件的强度和起止区间。

排查

  1. 检查参考图预处理结果是否正确。
  2. 检查预处理器和 ControlNet 类型是否匹配。
  3. 检查 ControlNet 与基础模型家族是否兼容。
  4. 检查 Apply ControlNet 输出是否接入 KSampler 使用的条件。
  5. 检查节点是否被 Bypass / Mute。
  6. 检查 strengthstart_percentend_percent

基于 MIT 许可发布