目录
ComfyUI ControlNet 教程:用线稿、姿势和深度控制构图
只靠提示词很难精确控制“人物摆什么姿势”“建筑物的透视”和“画面的构图”。ControlNet 让你提供一张参考图,并从中提取结构信息(线条、姿势、深度),让生成的图片按照这个结构来绘制。
常见的控制类型
| 类型 | 从参考图提取 | 适用场景 |
|---|---|---|
| Canny | 边缘线条 | 保留轮廓和细节,例如产品、建筑 |
| Lineart | 线稿 | 给线稿上色,将其变成完整插画 |
| OpenPose | 人体骨架(姿势、手、脸) | 指定人物姿势 |
| Depth | 深度(远近) | 保留空间结构和透视 |
| Scribble | 简单涂鸦 | 用随手画的草图控制构图 |
| Tile | 图片本身的细节 | 放大时保持一致并增加细节 |
需要准备
- ControlNet 模型:放到
models/controlnet/。模型必须与基础模型版本对应(SD 1.5、SDXL、Flux 各有不同的 ControlNet)。现在也有“Union”类型的模型,一个文件支持多种控制类型。 - 预处理器(Preprocessor):把参考照片转换成 ControlNet 需要的图像(例如把照片转换成线条或骨架)。Canny 有内置节点;其他类型通常需要安装 comfyui_controlnet_aux 自定义节点(见自定义节点与 Manager)。
创建工作流(以 Canny 为例)
[Load Image] ─▶ [Canny] ─IMAGE────────────────┐
▼
[CLIP Text Encode 正向] ─CONDITIONING─▶ [Apply ControlNet] ─positive─▶ [KSampler]
[CLIP Text Encode 负向] ─CONDITIONING─▶ ─negative─▶
[Load ControlNet Model] ─CONTROL_NET──▶
vae ─────────▶
步骤:
- 从文生图工作流开始。
- 添加 Load Image,加载参考图。
- 添加 Canny 节点并连接参考图。运行一次,用 Preview Image 确认提取出的线条。

- 添加 Load ControlNet Model,选择 Canny 模型。
- 添加 Apply ControlNet:
positive、negative分别连接两个 CLIP Text Encode 的输出control_net连接 Load ControlNet Modelimage连接 Canny 的输出vae连接模型的 VAE(部分 ControlNet 需要)
- 将 Apply ControlNet 输出的 positive、negative 连接到 KSampler。
- 将 Empty Latent Image 的尺寸设置为与参考图相同比例。

参数
| 参数 | 说明 | 建议 |
|---|---|---|
strength | 控制强度 | 0.5~1.0。过高会让画面僵硬、细节不自然 |
start_percent | 从生成过程的哪个阶段开始控制 | 0 |
end_percent | 在哪个阶段停止控制 | 0.6~1.0 |
技巧:将 end_percent 设为 0.5~0.7,前半段由 ControlNet 决定构图,后半段让模型自由发挥细节,结果通常会更自然。
OpenPose:控制人物姿势
- 使用 DWPose Estimator 或 OpenPose Pose 预处理器(来自 controlnet_aux),从人物照片中提取骨架。
- 用 Preview Image 确认骨架正确。
- 连接 OpenPose ControlNet 模型。
生成的人物会摆出与照片相同的姿势,但长相、服装和场景由提示词决定。
Depth:保留空间结构
使用 Depth Anything 等预处理器生成深度图。适用于:
- 将室内照片重新设计成不同的装修风格
- 保留建筑或场景的透视,同时改变季节、时间和画风
组合多个 ControlNet
将多个 Apply ControlNet 串联:第一个的 positive / negative 输出连接到第二个的输入。例如,用 OpenPose 控制姿势,用 Depth 控制场景。适当降低每个节点的强度,避免相互冲突。
常见问题
| 情况 | 原因 |
|---|---|
| 报错或完全没有效果 | ControlNet 模型与基础模型版本不匹配(例如将 SD 1.5 的 ControlNet 用于 SDXL) |
| 画面僵硬,出现线条痕迹 | strength 太高,或 end_percent 太晚 |
| 人物变形 | 参考图和输出图的比例不同,或骨架提取错误 |
| 找不到预处理器节点 | 尚未安装 comfyui_controlnet_aux |
更新于 2026年10月12日