ControlNet 入门:线稿、深度、姿态控制构图
一句话目标:在你能跑通的文生图工作流上接入 ComfyUI ControlNet,让画面的构图、景深和人物姿态跟随你的参考图,而不是全靠提示词碰运气。
先修:第一次生图:默认工作流逐节点讲透。
准备
- ComfyUI 已能正常出图(见先修课)。
- 下载一个 ControlNet 模型文件,放进
ComfyUI/models/controlnet/目录,重启 ComfyUI。 - 准备一张参考图:白底线稿、普通照片或人物全身照都可以。
- 在节点列表搜索 Canny、Depth、OpenPose 预处理器;Comfy Core 节点不全,搜不到说明还缺预处理器扩展,常用的是 ComfyUI ControlNet aux(github.com/Fannovel16/comfyui_controlnet_aux),先安装再继续。
跟我做
第 1 步:把 ComfyUI ControlNet 接进工作流
操作:双击画布新增「Load ControlNet Model」节点,选你放入的模型;再新增「Apply ControlNet」。注意 ControlNet 接在条件通路上,不经过 MODEL,Checkpoint 的 MODEL 仍直连 KSampler 的 model,不要动它。要改的线是这些:
- Load ControlNet Model 的
CONTROL_NET→ Apply ControlNet 的control_net - 正向条件 → Apply ControlNet 的
positive,负向条件 →negative - Checkpoint 的
VAE→ Apply ControlNet 的vae - Apply ControlNet 输出的
positive/negative→ KSampler 的对应输入
预期结果:条件数据流变成「CLIP Text Encode → Apply ControlNet → KSampler」,MODEL 仍由 Checkpoint 直供 KSampler,运行不再报 conditioning 未连接。
第 2 步:把参考图转成控制图
操作:按控制目标选预处理器——Canny 提取边缘线稿,Depth 生成远近深浅,OpenPose 提取人体骨架。用 Load Image 载入参考图,接预处理器,再把预处理器输出的控制图接到 Apply ControlNet 的 image 输入。
预期结果:预处理器输出一张控制图:Canny 是黑白边缘线,Depth 是近亮远暗的灰度图,OpenPose 是彩色骨架点线。
第 3 步:调 strength 出图
操作:把 Apply ControlNet 的 strength 先设为 0.8,固定 seed 跑一次队列;构图不贴合就调高,画面被参考图锁死、细节糊掉就调低,再跑对比。
预期结果:生成图的整体构图、姿态或景深与参考图一致,风格、配色、细节仍由提示词和模型主导。
验证
- 同一 seed、同一提示词,断开 Apply ControlNet 跑一次、接上跑一次:接上后构图应明显跟随控制图。
- 换控制类型时,预处理器和 ControlNet 模型要成对更换(Canny 图配 Canny 模型),否则控制效果混乱甚至无效。
常见坑
- strength 直接拉满 1.0:构图僵硬,画面被参考图细节污染。从 0.6–0.9 区间试起。
- 参考图与目标尺寸差距过大:先缩放参考图再预处理,否则控制图上的线条或骨架会错位。
- 多 ControlNet 叠加:把多个 Apply ControlNet 串联(上一个的条件输出接下一个的条件输入),分别设 strength,比如线稿管轮廓、姿态管动作。
- 照片背景太乱:Canny 会把背景边缘也提出来,可先裁剪参考图或改用 Depth。
下一课
不同模型的 ControlNet 用法有差异,Z-Image、Qwen-Image 的模型教程里有对应章节(见相关阅读)。下一课:GGUF 量化模型:低显存跑大模型。