ControlNet工作流

ControlNet工作流使用ControlNet模型精确控制图像生成过程,可以保持图像结构、控制姿态、添加特定约束等。

工作流概述

工作流信息

功能特点

适用场景

工作流结构

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

核心节点说明

使用步骤

步骤1: 准备工作

  1. 下载ControlNet模型
  2. 准备控制图像
  3. 将模型放入 models/controlnet/ 目录
  4. 将控制图像放入 input/ 目录

步骤2: 加载工作流

  1. 打开ComfyUI
  2. 点击"Load"按钮
  3. 选择工作流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: 执行工作流

  1. 点击"Queue Prompt"按钮
  2. 等待执行完成
  3. 查看生成的图像

工作流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(边缘检测)

2. Depth(深度图)

3. OpenPose(姿态控制)

4. Segmentation(语义分割)

5. Scribble(涂鸦)

参数配置指南

关键参数说明

示例结果

示例1: 姿态控制

示例2: 边缘控制

示例3: 深度控制

控制图像准备

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

优化建议

控制效果

质量优化

性能优化

常见问题

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

变体2: 多ControlNet

变体3: ControlNet + LoRA

相关工作流

扩展阅读

更新日志