工作流概述
工作流信息
- 工作流类型: ControlNet控制
- 难度等级: 进阶
- 预计执行时间: 15-45秒
- 推荐模型: Stable Diffusion 1.5 + ControlNet模型
- ComfyUI版本要求: >= 1.0
功能特点
- 精确控制图像生成
- 保持图像结构
- 控制人物姿态
- 添加特定约束
- 提高生成一致性
适用场景
- 姿态控制
- 边缘检测控制
- 深度图控制
- 语义分割控制
- 保持构图结构
工作流结构
ControlNet类型说明
下图展示了常用的ControlNet模型及其应用场景:
这个图展示了: - Canny: 边缘检测,保持图像轮廓 - Depth: 深度图,控制空间关系 - OpenPose: 姿态控制,控制人物动作 - Normal: 法线图,控制表面细节 - 其他类型: Segmentation、Lineart、Scribble等
节点流程图(Mermaid)
graph TD
A[CheckpointLoaderSimple] -->|MODEL| B[KSampler]
A -->|CLIP| C[CLIPTextEncode]
A -->|CLIP| D[CLIPTextEncode]
A -->|VAE| E[VAEDecode]
C -->|CONDITIONING| F[ControlNetApply]
D -->|CONDITIONING| B
G[ControlNetLoader] -->|CONTROL_NET| F
H[LoadImage] -->|IMAGE| F
F -->|CONDITIONING| B
I[EmptyLatentImage] -->|LATENT| B
B -->|LATENT| E
E -->|IMAGE| J[SaveImage]
style A fill:#e1f5ff
style B fill:#fff4e1
style C fill:#ffe1f5
style D fill:#ffe1f5
style E fill:#e1ffe1
style F fill:#ffe1f5
style G fill:#e1f5ff
style H fill:#ffe1e1
style I fill:#e1ffe1
style J fill:#ffe1e1
节点连接详解
graph LR
A[CheckpointLoaderSimple] -->|MODEL| B[KSampler]
A -->|CLIP| C[CLIPTextEncode]
A -->|VAE| D[VAEDecode]
style A fill:#e1f5ff
style B fill:#fff4e1
style C fill:#ffe1f5
style D fill:#e1ffe1
graph LR
A[CLIPTextEncode] -->|CONDITIONING| B[ControlNetApply]
C[ControlNetLoader] -->|CONTROL_NET| B
D[LoadImage] -->|IMAGE| B
B -->|CONDITIONING| E[KSampler]
style A fill:#ffe1f5
style B fill:#ffe1f5
style C fill:#e1f5ff
style D fill:#ffe1e1
style E fill:#fff4e1
graph LR
A[EmptyLatentImage] -->|LATENT| B[KSampler]
B -->|LATENT| C[VAEDecode]
C -->|IMAGE| D[SaveImage]
style A fill:#e1ffe1
style B fill:#fff4e1
style C fill:#e1ffe1
style D fill:#ffe1e1
核心节点说明
- 作用: 加载ControlNet模型
- 关键参数: control_net_name(ControlNet模型文件名)
- 作用: 应用ControlNet到条件
- 关键参数: strength(ControlNet影响强度)
- 作用: 加载控制图像
- 关键参数: image(控制图像文件)
- CheckpointLoaderSimple: 加载主模型
- CLIPTextEncode: 编码提示词
- KSampler: 执行采样
- VAEDecode: 解码潜在空间
- SaveImage: 保存图像
使用步骤
步骤1: 准备工作
- 下载ControlNet模型
- 准备控制图像
- 将模型放入
models/controlnet/目录 - 将控制图像放入
input/目录
步骤2: 加载工作流
- 打开ComfyUI
- 点击"Load"按钮
- 选择工作流JSON文件
步骤3: 配置参数
control_net_name: control_v11p_sd15_canny.safetensors
image: control_image.png
text: beautiful woman, detailed, high quality
text: ugly, blurry, low quality
strength: 1.0
seed: 123456789
steps: 25
cfg: 7.5
sampler_name: euler
scheduler: normal
denoise: 1.0
步骤4: 执行工作流
- 点击"Queue Prompt"按钮
- 等待执行完成
- 查看生成的图像
工作流JSON
{
"3": {
"inputs": {
"seed": 123456789,
"steps": 25,
"cfg": 7.5,
"sampler_name": "euler",
"scheduler": "normal",
"denoise": 1.0,
"model": ["4", 0],
"positive": ["14", 0],
"negative": ["7", 0],
"latent_image": ["5", 0]
},
"class_type": "KSampler"
},
"4": {
"inputs": {
"ckpt_name": "v1-5-pruned-emaonly.ckpt"
},
"class_type": "CheckpointLoaderSimple"
},
"5": {
"inputs": {
"width": 512,
"height": 512,
"batch_size": 1
},
"class_type": "EmptyLatentImage"
},
"6": {
"inputs": {
"text": "beautiful woman, detailed, high quality",
"clip": ["4", 1]
},
"class_type": "CLIPTextEncode"
},
"7": {
"inputs": {
"text": "ugly, blurry, low quality",
"clip": ["4", 1]
},
"class_type": "CLIPTextEncode"
},
"8": {
"inputs": {
"samples": ["3", 0],
"vae": ["4", 2]
},
"class_type": "VAEDecode"
},
"9": {
"inputs": {
"filename_prefix": "controlnet_",
"images": ["8", 0]
},
"class_type": "SaveImage"
},
"12": {
"inputs": {
"control_net_name": "control_v11p_sd15_canny.safetensors"
},
"class_type": "ControlNetLoader"
},
"14": {
"inputs": {
"strength": 1.0,
"condition": ["6", 0],
"control_net": ["12", 0],
"image": ["15", 0]
},
"class_type": "ControlNetApply"
},
"15": {
"inputs": {
"image": "control_image.png"
},
"class_type": "LoadImage"
}
}
ControlNet类型
1. Canny(边缘检测)
- 模型: control_v11p_sd15_canny
- 控制: 边缘和轮廓
- 用途: 保持图像结构
- 预处理: Canny边缘检测
2. Depth(深度图)
- 模型: control_v11p_sd15_depth
- 控制: 深度信息
- 用途: 控制空间关系
- 预处理: 深度估计
3. OpenPose(姿态控制)
- 模型: control_v11p_sd15_openpose
- 控制: 人物姿态
- 用途: 控制人物动作
- 预处理: OpenPose检测
4. Segmentation(语义分割)
- 模型: control_v11p_sd15_seg
- 控制: 语义分割
- 用途: 控制区域分配
- 预处理: 语义分割
5. Scribble(涂鸦)
- 模型: control_v11p_sd15_scribble
- 控制: 简单涂鸦
- 用途: 粗略控制构图
- 预处理: 简化线条
参数配置指南
关键参数说明
- 0.3-0.5: 轻微控制
- 0.5-0.8: 标准控制
- 0.8-1.0: 强控制
- 1.0-1.5: 非常强的控制
- 推荐: 20-30步
- 影响: 步数越多控制越精确
- 权衡: 在控制和质量间平衡
- 推荐: 7-9
- 影响: 值越大越遵循提示词
- 注意: 值过高可能削弱ControlNet效果
示例结果
示例1: 姿态控制
- ControlNet: OpenPose
- 控制图像: 姿态骨架图
- 提示词: beautiful woman, detailed
- strength: 0.8
- 结果: 按指定姿态生成的图像
示例2: 边缘控制
- ControlNet: Canny
- 控制图像: 边缘检测图
- 提示词: landscape, mountains, sunset
- strength: 1.0
- 结果: 保持边缘结构的图像
示例3: 深度控制
- ControlNet: Depth
- 控制图像: 深度图
- 提示词: interior design, modern
- strength: 0.7
- 结果: 保持深度关系的图像
控制图像准备
Canny边缘检测
graph LR
A[原始图像] --> B[Canny边缘检测] --> C[控制图像]
style A fill:#e1ffe1
style B fill:#fff4e1
style C fill:#ffe1e1
OpenPose姿态检测
graph LR
A[人物图像] --> B[OpenPose检测] --> C[姿态骨架图]
style A fill:#e1ffe1
style B fill:#fff4e1
style C fill:#ffe1e1
深度估计
graph LR
A[原始图像] --> B[深度估计] --> C[深度图]
style A fill:#e1ffe1
style B fill:#fff4e1
style C fill:#ffe1e1
优化建议
控制效果
- 调整strength: 根据效果调整strength值
- 选择合适模型: 根据需求选择ControlNet类型
- 预处理图像: 正确预处理控制图像
- 组合使用: 可以组合多个ControlNet
质量优化
- 增加steps: 提高控制精度
- 调整cfg: 平衡ControlNet和提示词
- 改进控制图像: 使用高质量控制图像
- 测试不同参数: 测试不同参数组合
性能优化
- 减少steps: 提高速度
- 使用快速采样器: euler或lcm
- 降低分辨率: 使用较小控制图像
常见问题
Q1: ControlNet strength设置多少合适?
A: 从0.8开始,根据效果调整,通常0.5-1.0之间。
Q2: 如何选择ControlNet类型?
A: 根据控制需求选择,姿态用OpenPose,结构用Canny,深度用Depth。
Q3: 控制图像如何准备?
A: 使用相应的预处理方法,Canny用边缘检测,OpenPose用姿态检测。
Q4: 可以使用多个ControlNet吗?
A: 可以,串联多个ControlNetApply节点。
Q5: ControlNet效果不明显怎么办?
A: 增加strength值,改进控制图像,检查模型是否正确加载。
变体工作流
变体1: 单ControlNet
- 使用一个ControlNet
- strength: 0.8-1.0
- 用途: 基本控制
变体2: 多ControlNet
- 使用多个ControlNet
- 每个ControlNet不同strength
- 用途: 复杂控制
变体3: ControlNet + LoRA
- 结合ControlNet和LoRA
- 同时控制风格和结构
- 用途: 风格化控制
相关工作流
扩展阅读
更新日志
- 2026-01-26: 初始版本创建