ComfyUI 从安装入门到精通,ControlNet 三大场景(画面听你指挥)

ComfyUI 从安装入门到精通,ControlNet 三大场景(画面听你指挥)

第 09 篇 ComfyUI 从安装入门到精通,LoRA 使用实战(选/下/放/串权重)你给底模挂上了 LoRA 技能包,出图风格、角色、手都稳了。但有个问题你大概率迟早会撞上:我想让画面精准跟着一张参考图的姿势走,或者让两个人一个站着一个坐着别乱跑,光靠提示词根本说不清。

我当初做一张”两个人握手”的图,提示词写了三百字,出来的不是背对背就是手插兜,气得我重画十几张。后来认识 ControlNet,才知道”让画面听指挥”这事,压根不该靠嘴说,该靠一张图。这篇手把手教你:ControlNet 是啥、模型放哪、节点怎么接、最常用的三个场景怎么配、strength 怎么拧,以及那些红字报错和 8G 显存叠崩的坑。

一、ControlNet 是啥(大白话)

一句话:ControlNet 是给底模加的一根”缰绳”,你拿一张参考图当缰绳,画面就被按在那个构图上,不会乱跑。和 LoRA 不一样——LoRA 是教底模”长什么样”,ControlNet 是规定底模”怎么摆”。

🧍 OpenPose:锁人物姿势(骨架),指定动作、多人站位
🏔️ Depth:锁空间纵深,透视、前后层次、建筑
✏️ Canny:锁轮廓线条,线稿上色、保造型、换画风

一句话记住:LoRA 管”长相”,ControlNet 管”姿势和构图”,俩配合才叫真控图。

二、文件放哪(放错 / 型号不对整个不生效)

ControlNet 模型(.safetensors)放这个目录:

ComfyUI/models/controlnet/

两个坑提前堵上:
1. 型号必须对底模——SD 1.5 的 ControlNet 配 SD 1.5 底模,SDXL 配 SDXL。混用和 LoRA 一样会黑图 / 无效,下之前认准页面 Base Model 标签。
2. 参考图尺寸别太大——用 512 就行,用 1024 会 4 倍耗时 + 3 倍显存,8G 卡极易 OOM。

踩坑经历:我头一回想叠三个 ControlNet,参考图全是 1024 原图,点下去显存直接爆 CUDA OOM,画面卡死。后来才懂——参考图小一点、CN 少叠点,8G 卡才活得下去。

三、手把手接节点(照着连)

单 ControlNet 的标准接法(以 OpenPose 为例):

参考图 → OpenPose 预处理器 → ControlNet Loader(control)
Checkpoint(MODEL) → ControlNet Loader(model)
正提示词 positive → Apply ControlNet(conditioning) → KSampler

1. 加节点:右键搜 Apply ControlNet、ControlNet Loader、Load Image,再搜你的预处理器(OpenPose 就搜 OpenPose)。
2. 选模型:ControlNet Loader 的 control_net_name 选你下的 .safetensors。
3. 接线:参考图 → 预处理器 → Loader 的 control;Checkpoint 的 MODEL → Loader 的 model;Loader 的 CONTROL_NET → Apply ControlNet;positive → Apply ControlNet 的 conditioning,Apply 输出 → KSampler。
4. 设 strength:Apply ControlNet 的 strength 默认 1.0(锁死),可调。

一句话记接法:正提示词过一遍 Apply ControlNet 再进 KSampler,参考图经预处理器喂进 ControlNet Loader。

实操闭环:10 分钟,用 OpenPose 锁住人物姿势(现在就做)

前面几节讲原理,这段真刀真枪做一遍。做完你手里多一张”人物姿势和参考图一模一样”的图,还能确认 ControlNet 真生效——不只是看懂,是做出来的。

前提:你已有第 05 篇的基础文生图工作流(Load Checkpoint → 两个 CLIP Text Encode → KSampler → VAE Decode → Save Image)。丢了就按这 5 个节点重搭一遍。
目标:拿一张人物姿势参考图,让生成的人物摆出同一个动作,提示词换风格也不乱跑。

步骤(照着点,别跳):
1. 下模型:挑和底模同类型的 OpenPose ControlNet(SD1.5 就 control_v11p_sd15_openpose,SDXL 就对应 SDXL 版),丢进 ComfyUI/models/controlnet/,F5 刷新网页。
2. 加节点:画布双击 → 搜 Load Image + OpenPose + ControlNet Loader + Apply ControlNet,各回车一个。
3. 接参考图:Load Image 的 IMAGE → OpenPose 预处理器的 image;预处理器的 POSE → ControlNet Loader 的 control。
4. 接主链:Checkpoint 的 MODEL → ControlNet Loader 的 model;Loader 的 CONTROL_NET → Apply ControlNet 的 control_net;你正面提示词 positive → Apply ControlNet 的 conditioning,Apply 的 CONDITIONING 输出 → KSampler。
5. 设参数:Apply ControlNet 的 strength 填 1.0(姿势锁死),start_percent / end_percent 用 0 / 1.0。
6. 固定种子 + 出图:KSampler 的 seed 设固定数字(如 12345),点 Queue Prompt。

检查点(你跑完应该看到):① 生成人物姿势和参考图一致,换提示词风格姿势不变 = 生效;② 姿势完全乱 = 预处理器没接或参考图没进 Loader(回第三节);③ 报 “Expected 1 channels but got 3 channels” = 参考图直接连 Apply ControlNet、没过预处理器(必插预处理,见第六节);④ 完全没变化 = Apply ControlNet 没接进 positive 链。

作业(选做):把 strength 从 1.0 降到 0.6 再跑,人物姿势变松散、模型自由发挥更多,感受这根”缰绳”松紧。

四、三大场景配方(OpenPose / Depth / Canny)

一个 ControlNet 玩熟了,三个一起上是常态。多控接法:上一个 Apply ControlNet 的 CONDITIONING 输出接下一个的输入(positive → Apply CN#1 → Apply CN#2 → KSampler)。下面是实测微调的起始 strength:

组合
strength 配方
用途
OpenPose + Depth
0.85 / 0.5~0.65
锁姿势 + 背景层次
Canny + Depth
0.65 / 0.55
轮廓 + 空间,建筑 / 静物
Lineart + OpenPose
0.7 / 0.8
二次元勾线 + 动作

end_percent 技巧:1.0 全程控;0.7~0.85 前期控构图、后期让模型自由润色(Canny 换画风常设 0.7,OpenPose 设 1.0)。

踩坑经历:我想让画面”既有姿势又有景深”,直接给 Apply ControlNet 的 strength 设了 0.0,结果生成完全忽略参考图——后来才知道 0.0 就是”挂了但不控”,想控就得给大于 0 的值。

五、常见坑 / 雷区

1. Canny 必插预处理:参考图直接连 ControlNet 会报 “Expected 1 channels but got 3 channels”。必须在 Load Image 和 Apply 之间插 Canny 边缘检测节点(low_threshold 100 / high_threshold 200 适用 95% 场景)。OpenPose/Depth 同理各有预处理器,别省。
2. strength 设 0.0 = 生成但完全忽略参考图,常见失误。
3. 参考图尺寸不匹配:用 512 而非 1024,否则 4 倍耗时 + 3 倍显存,易 OOM。
4. 底模不匹配:SD1.5 的 CN 配 SDXL 底模,轻则无效重则黑图。下之前认准 Base Model 标签。
5. 约束互相矛盾:叠太多 ControlNet 且要求打架,画面易崩。先单后双,单独调通再组合。

六、参数速查表(照着抄)

场景
预处理器
起始 strength
备注
锁姿势
OpenPose
1.0
全程锁
锁空间
Depth
0.5~0.65
配 OpenPose 用 0.85/0.5
锁轮廓
Canny
0.65
换画风 end 设 0.7
二次元勾线
Lineart
0.7
配 OpenPose 用 0.7/0.8
双控叠加
见上
各降一点
先单后双

七、4060 / 8G 专项 & 我踩的坑

技巧:Union SDXL 是 8G 用户福音——xinsir 推出的一个 2.5GB 模型内含 10+ 种 CN 类型,推理时插 SetUnionControlNetType 节点选类型(canny/depth/pose/tile)即可,切换类型不用重载模型,省显存 + 省时间,生产环境首选。SDXL 早期只有 Canny/Depth,Union 彻底改变局面。

多 CN 叠加显存警告:每个 CN 是一次额外的 U-Net 级别推理,显存吃得多。3 个 CN 叠加需 16GB+ VRAM;2 个是甜点——我们 8G 用户最多叠 2 个,且建议启动时加 –lowvram。约束越多越易互相矛盾、画面崩,先单后双,单独调通再组合。

五个坑一次说全:① Canny 没插预处理(头号红字坑);② strength 设 0.0 等于没控;③ 参考图 1024 显存爆;④ 底模不匹配 黑图;⑤ 叠 3 个 CN 8G 卡必 OOM。

ControlNet 会用了,你已经能”让画面听指挥”——姿势、空间、轮廓全按住。但还有种需求它俩都吃力:想锁住一张具体的脸、让角色在每一集都长得一样。那得靠 IPAdapter 和后面的高清放大。第 11 篇讲 Depth 深挖 + 高清放大,把清晰度和细节再提一档。

声明:内容来源公开的各类媒体平台,若收录的内容侵犯了您的权益,请联系邮箱,本站将第一时间处理。
教程百科

ComfyUI 从安装入门到精通,LoRA 使用实战(选/下/放/串权重)

2026-8-18 9:31:31

教程百科

AI数字人本地部署,0成本的数字人口播教程

2026-8-19 10:09:40

搜索