ControlNet基础模板

使用ControlNet控制图像生成的进阶模板。

模板概述

工作流结构

节点流程图(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:#e1ffe1
    style I fill:#e1ffe1
    style J fill:#ffe1e1

ControlNet控制流程

graph LR
    A[提示词] --> B[ControlNet]
    B --> C[控制采样]
    C --> D[受控生成]

    style A fill:#e1ffe1
    style B fill:#fff4e1
    style C fill:#fff4e1
    style D fill:#fff4e1

节点配置

1. CheckpointLoaderSimple

{
  "inputs": {
    "ckpt_name": "v1-5-pruned-emaonly.ckpt"
  },
  "class_type": "CheckpointLoaderSimple"
}

2. ControlNetLoader

{
  "inputs": {
    "control_net_name": "control_v11p_sd15_canny.safetensors"
  },
  "class_type": "ControlNetLoader"
}

3. LoadImage

{
  "inputs": {
    "image": "control_image.png"
  },
  "class_type": "LoadImage"
}

4. CLIPTextEncode (正向)

{
  "inputs": {
    "text": "beautiful woman, detailed, high quality",
    "clip": ["1", 1]
  },
  "class_type": "CLIPTextEncode"
}

5. CLIPTextEncode (负向)

{
  "inputs": {
    "text": "ugly, blurry, low quality",
    "clip": ["1", 1]
  },
  "class_type": "CLIPTextEncode"
}

6. ControlNetApply

{
  "inputs": {
    "strength": 1.0,
    "condition": ["4", 0],
    "control_net": ["2", 0],
    "image": ["3", 0]
  },
  "class_type": "ControlNetApply"
}

7. EmptyLatentImage

{
  "inputs": {
    "width": 512,
    "height": 512,
    "batch_size": 1
  },
  "class_type": "EmptyLatentImage"
}

8. KSampler

{
  "inputs": {
    "seed": 123456789,
    "steps": 25,
    "cfg": 7.5,
    "sampler_name": "euler",
    "scheduler": "normal",
    "denoise": 1.0,
    "model": ["1", 0],
    "positive": ["6", 0],
    "negative": ["5", 0],
    "latent_image": ["7", 0]
  },
  "class_type": "KSampler"
}

9. VAEDecode

{
  "inputs": {
    "samples": ["8", 0],
    "vae": ["1", 2]
  },
  "class_type": "VAEDecode"
}

10. SaveImage

{
  "inputs": {
    "filename_prefix": "controlnet_",
    "images": ["9", 0]
  },
  "class_type": "SaveImage"
}

完整工作流JSON

{
  "1": {
    "inputs": {
      "ckpt_name": "v1-5-pruned-emaonly.ckpt"
    },
    "class_type": "CheckpointLoaderSimple"
  },
  "2": {
    "inputs": {
      "control_net_name": "control_v11p_sd15_canny.safetensors"
    },
    "class_type": "ControlNetLoader"
  },
  "3": {
    "inputs": {
      "image": "control_image.png"
    },
    "class_type": "LoadImage"
  },
  "4": {
    "inputs": {
      "text": "beautiful woman, detailed, high quality",
      "clip": ["1", 1]
    },
    "class_type": "CLIPTextEncode"
  },
  "5": {
    "inputs": {
      "text": "ugly, blurry, low quality",
      "clip": ["1", 1]
    },
    "class_type": "CLIPTextEncode"
  },
  "6": {
    "inputs": {
      "strength": 1.0,
      "condition": ["4", 0],
      "control_net": ["2", 0],
      "image": ["3", 0]
    },
    "class_type": "ControlNetApply"
  },
  "7": {
    "inputs": {
      "width": 512,
      "height": 512,
      "batch_size": 1
    },
    "class_type": "EmptyLatentImage"
  },
  "8": {
    "inputs": {
      "seed": 123456789,
      "steps": 25,
      "cfg": 7.5,
      "sampler_name": "euler",
      "scheduler": "normal",
      "denoise": 1.0,
      "model": ["1", 0],
      "positive": ["6", 0],
      "negative": ["5", 0],
      "latent_image": ["7", 0]
    },
    "class_type": "KSampler"
  },
  "9": {
    "inputs": {
      "samples": ["8", 0],
      "vae": ["1", 2]
    },
    "class_type": "VAEDecode"
  },
  "10": {
    "inputs": {
      "filename_prefix": "controlnet_",
      "images": ["9", 0]
    },
    "class_type": "SaveImage"
  }
}

ControlNet类型

类型对比

graph TD
    A[ControlNet] --> B[Canny]
    A --> C[Depth]
    A --> D[OpenPose]
    A --> E[Segmentation]

    B --> B1[边缘控制]
    C --> C1[深度控制]
    D --> D1[姿态控制]
    E --> E1[分割控制]

    style A fill:#e1f5ff
    style B fill:#fff4e1
    style C fill:#ffe1f5
    style D fill:#e1ffe1
    style E fill:#ffe1e1

参数说明

Strength设置

graph TD
    A[Strength] --> B[0.3-0.5]
    A --> C[0.5-0.8]
    A --> D[0.8-1.0]
    A --> E[1.0-1.5]

    B --> B1[轻微控制]
    C --> C1[标准控制]
    D --> D1[强控制]
    E --> E1[非常强]

    style A fill:#e1f5ff
    style B fill:#fff4e1
    style C fill:#ffe1f5
    style D fill:#e1ffe1
    style E fill:#ffe1e1

使用步骤

ControlNet控制流程

graph LR
    A[准备控制图像] --> B[加载ControlNet]
    B --> C[设置提示词]
    C --> D[执行生成]
    D --> E[查看结果]

    style A fill:#e1ffe1
    style B fill:#fff4e1
    style C fill:#fff4e1
    style D fill:#fff4e1
    style E fill:#fff4e1

示例结果

示例1: 姿态控制

示例2: 边缘控制

常见问题

Q1: ControlNet strength设置多少?

A: 从0.8开始,根据效果调整,通常0.5-1.0。

Q2: 如何选择ControlNet类型?

A: 根据控制需求,姿态用OpenPose,结构用Canny。

Q3: 控制图像如何准备?

A: 使用相应的预处理方法,Canny用边缘检测。

Q4: 可以使用多个ControlNet吗?

A: 可以,串联多个ControlNetApply节点。

Q5: ControlNet效果不明显?

A: 增加strength值,改进控制图像。

相关模板

更新日志