一、为什么要多个 ControlNet?
单一 ControlNet 只约束 一种 信息:
-
OpenPose → 只有骨架,不管 空间层次;
-
Canny → 只有边缘,不管 远近;
-
Depth → 只有深度,不管 细线。
组合 可同时约束 姿势 + 透视 + 线稿 等,精度更高,但 调参更难。
二、ComfyUI 中的叠加方式
2.1 串联 Apply 节点
MODEL → Apply CN #1 (OpenPose) → Apply CN #2 (Depth) → KSampler
或 CONDITIONING 链 上连续 Apply(视节点版本):
positive → Apply OpenPose → Apply Depth → KSampler positive
每个 Apply 需要:
-
各自的 Load ControlNet Model;
-
各自的 预处理器 + 参考图(可同源图不同预处理)。
2.2 同一参考图、多种预处理
[Load Image 同一张]
├→ OpenPose Pre → Apply CN1
└→ Depth Pre → Apply CN2
常用:一张人像 → OpenPose + Depth 稳姿势与背景层次。
三、权重平衡原则
|
原则 |
说明 |
|---|---|
|
主次分明 |
主 CN strength 高,辅 CN 略低 |
|
总和不过猛 |
两个都 0.95 易僵、易 artifact |
|
先单后双 |
单独调通每个 CN 再组合 |
|
分工清晰 |
避免两个 CN 控 同类 信息(双 Canny 无意义) |
3.1 起始参考值
|
组合 |
CN1 strength |
CN2 strength |
|---|---|---|
|
OpenPose + Depth |
0.85 |
0.5–0.65 |
|
Canny + Depth |
0.65 |
0.55 |
|
Lineart + OpenPose |
0.7 |
0.8 |
需实测微调。
四、常见组合配方
4.1 OpenPose + Depth(人物 + 场景)
-
OpenPose:锁人物姿势;
-
Depth:锁背景远近与空间;
-
Prompt:服装、表情、光照。
适用:换场景但 姿势与空间布局 都要保留。
4.2 Canny + Depth(轮廓 + 空间)
-
Canny:物体外形;
-
Depth:前后关系;
-
适用:建筑、复杂静物重绘。
4.3 Lineart + OpenPose(二次元)
-
Lineart:勾线;
-
OpenPose:动作;
-
适用:线稿人设指定动作上色。
4.4 Depth + Inpaint ControlNet
-
局部改图时 深度连续 + 蒙版(与 4-4、6-8 联动)。
五、start/end percent 分工
可为不同 CN 设 不同生效区间:
|
CN |
start |
end |
意图 |
|---|---|---|---|
|
OpenPose |
0 |
1.0 |
全程锁姿势 |
|
Depth |
0 |
0.6 |
前半定空间,后半释放细节 |
|
Canny |
0.2 |
0.7 |
中间段强化轮廓 |
避免全程多 CN 都 0→1 且 strength 极高。
六、搭建步骤概要(双 CN)
-
完成 6-3 单 OpenPose 工作流;
-
复制 Load ControlNet + Preprocessor + Apply 一组;
-
改为 Depth 模型与 MiDaS/Zoe 预处理;
-
将 第一个 Apply 的输出 接到 第二个 Apply 的 model/cond 输入;
-
Depth strength 从 0.5 起试;
-
Queue 对比单 CN 与双 CN。
七、显存与性能
-
每多一个 ControlNet,显存与耗时 增加;
-
8GB 显卡建议 最多 2 个 CN,分辨率 ≤1024;
-
可降分辨率生成后再放大(第 8 章)。
八、故障现象
|
现象 |
可能原因 |
处理 |
|---|---|---|
|
花屏、噪点 |
双 CN 过强 |
各降 0.1 strength |
|
只生效一个 |
Apply 顺序/连线错 |
对照模板 JSON |
|
比单 CN 更乱 |
两 CN 冲突 |
减一个或缩短 end_percent |
|
OOM |
双 CN + 高分辨率 |
降分辨率或只保留主 CN |