一、所需组件
|
组件 |
节点/文件 |
|---|---|
|
基模 |
Load Checkpoint(SD1.5 或 SDXL) |
|
ControlNet 权重 |
|
|
参考图 |
|
|
预处理器 |
AIO Preprocessor / ControlNet Preprocessor 类 |
|
应用 |
ControlNet Apply Advanced(或 Apply ControlNet) |
依赖:ComfyUI 内置 ControlNet 支持 + 常装 comfyui_controlnet_aux(Manager 搜 ControlNet Aux)。
二、在文生图基础上扩展
保留 3-1 的:
-
Load Checkpoint → CLIP → Text Encode ×2
-
Empty Latent → KSampler → VAE Decode → Save
插入 ControlNet 到 MODEL(或 conditioning)链。
三、搭建步骤(OpenPose 示例)
步骤 1:Load ControlNet Model
-
添加
Load ControlNet Model(ControlNetLoader); -
选择 与 Checkpoint 同代 的 OpenPose 模型,如:
-
SDXL:
controlnet-openpose-sdxl-xxx.safetensors -
SD1.5:
control_v11p_sd15_openpose.pth等
-
步骤 2:Load Image(姿势参考)
-
Load Image选 人物参考图(姿势来源); -
输出 IMAGE。
步骤 3:预处理器
-
添加
OpenPose Preprocessor(或 AIO Preprocessor 选 openpose); -
参考图 IMAGE → preprocessor → 条件 IMAGE;
-
(可选)preprocessor 输出 预览骨架 到 Preview Image,确认检测成功。
若检测不到人:换全身清晰图;试 DWPose;检查 preprocessor 参数。
步骤 4:Apply ControlNet
添加 Apply ControlNet 或 ControlNet Apply Advanced:
典型连线:
|
Apply 输入 |
来自 |
|---|---|
|
conditioning |
CLIP Text Encode 正向(部分节点接 positive 链) |
|
control_net |
Load ControlNet Model |
|
image |
预处理器输出的条件图 |
|
model |
Checkpoint MODEL(视节点版本,有的在 model 链) |
注意:ComfyUI 不同版本节点名略有差异:
旧:
ControlNetApply新:
ControlNetApplyAdvanced分离 positive/negative
以你界面搜索到的为准,对照社区 SDXL OpenPose JSON 最稳。
常见 SDXL 链(概念):
MODEL → ControlNetApplyAdvanced → KSampler (model)
positive COND → ControlNetApplyAdvanced → KSampler (positive)
步骤 5:Prompt
描述 你想要的服装、场景、风格,不必重复姿势(OpenPose 已约束):
正向:1girl, red dress, outdoor cafe, sunny, masterpiece, best quality
负向:bad anatomy, bad hands, blurry, ...
步骤 6:KSampler 参数
|
参数 |
建议 |
|---|---|
|
steps |
25–30 |
|
cfg |
SDXL 5–7 |
|
ControlNet strength |
0.75–0.9(Apply 节点上) |
|
start_percent |
0 |
|
end_percent |
0.8–1.0 |
步骤 7:Queue 验证
对比 无 ControlNet 同 Prompt,姿势应更接近参考图。
四、Canny 工作流差异
|
步骤 |
OpenPose |
Canny |
|---|---|---|
|
预处理器 |
OpenPose |
Canny Edge |
|
参考图 |
人物照 |
任意需保留轮廓的图 |
|
strength |
0.75–0.9 |
0.5–0.75(过高易描边感) |
|
Prompt |
人物+场景 |
风格+内容 |
其余 Load ControlNet、Apply 结构 相同,只换 模型文件 + 预处理器。
五、start_percent 与 end_percent
|
设置 |
效果 |
|---|---|
|
0 → 1.0 |
全程 ControlNet |
|
0 → 0.5 |
前半定结构,后半自由细节 |
|
0.2 → 0.8 |
中间段最强 |
试法:姿势对但脸僵 → 略降 strength 或 缩短 end_percent。
六、完整 ASCII 示意
[Load Image 参考] → [OpenPose Pre] → 条件图 ──┐
↓
[Load ControlNet OpenPose] ─────────→ [Apply CN] ← positive COND
↓
[Checkpoint MODEL] ─────────────────→ [Apply CN] → MODEL' → [KSampler]
[Empty Latent] ───────────────────────────────────────────→ [KSampler]
[CLIP ±] → COND ─────────────────────────────────────────→ [KSampler]
[KSampler] → [VAE Decode] → [Save]
七、检查清单
-
ControlNet 与 Checkpoint 同 SD1.5/SDXL
-
预处理器有输出(骨架/边缘预览正常)
-
Apply 节点无红框
-
strength 不是 0
-
Prompt 与参考不冲突(如 OpenPose 是站姿,Prompt 勿写 sitting)
八、常见问题
|
问题 |
处理 |
|---|---|
|
骨架预览空 |
无人/被裁切 → 换图;换 DWPose |
|
完全不像参考姿势 |
提高 strength;检查 Apply 是否接到 COND/MODEL |
|
画面僵硬 |
降 strength;缩短 end_percent |
|
红节点 |
装 ControlNet Aux;Manager 装缺失节点 |
|
SD1.5 CN 用于 SDXL |
换 SDXL 专用 ControlNet 文件 |