ComfyUI 中 要如何使用 ControlNet 来进行图片生成?🚧

ControlNet 是一种强大的图像生成控制技术,它允许用户通过输入条件图像来精确引导 AI 模型的图像生成过程,通过使用 ControlNet,用户可以更好地控制 AI 图像生成过程,创造出更符合特定需求和想象的图像。

由于 ComfyUI 并没有内置 ControlNet 模型,所以开始这篇教程之前,你需要先安装好对应的 ControlNet 模型文件。 和其他类型的模型比如 embedding、LoRA 等不同类型的模型一样, ControlNet 和 Checkpoint 模型相似都是有版本对应关系的,如:

  • 如果你使用的是 SD1.5 版本的 checkpoint 模型,那么对应的 ControlNet 也要要是支持 SD1.5
  • 如果你使用的是 Flux.1 模型,那么对应的 ControlNet 也需要是支持 Flux.1

这篇教程将从以下几个部分讲解

  • ControlNet 模型功能和作用的简要讲解
  • ComfyUI 中图片预处理器插件安装
  • ComfyUI 中 ControlNet模型的安装及使用方法
  • 单个 ControlNet 模型应用示例
  • 多个 ControlNet 模型应用示例

由于 ControlNet 模型版本很多,本篇教程仅提供较为通用的安装方式的讲解,后续如果有更新,将会在本篇教程中再进行补充

ControlNet 的功能和作用

想象一下,ControlNet 就像是一位艺术指导在绘画过程中给予画家指导。

  1. 画布和画笔 (基础模型): Stable Diffusion 等绘图模型就像是画家的画布和画笔,能够创造出各种图像,富有创意但是往往充满随机性。

  2. 艺术指导 (ControlNet): ControlNet 就像是站在画家旁边的艺术指导,手里拿着一张参考图或草图,告诉画家应该在画布上的哪里画些什么。

  3. 指导过程:

    • 艺术指导会根据参考图,告诉画家应该在画布上的哪里画些什么。
    • 画家(基础模型)仍然使用自己的技巧和风格来作画,但会遵循艺术指导的建议。
  4. 不同类型的指导:

    • 线稿指导(如Canny ControlNet):就像艺术指导拿着一张线稿,指导画家如何勾勒轮廓。
    • 姿势指导(如Openpose ControlNet):好比艺术指导示范人物的姿势,让画家据此创作。
    • 深度指导(如Depth ControlNet):仿佛艺术指导提供了场景的立体感信息,指导画家如何表现远近。
  5. 调整影响力:

    • 有时画家会更多地听从艺术指导的建议(高控制强度)。
    • 有时画家会更多地发挥自己的创意(低控制强度)。
  6. 多重指导:

    • 可以想象有多位艺术指导同时给予不同方面的建议,画家需要平衡这些意见。

通过这种方式,ControlNet 让我们能够更精确地控制AI生成图像的过程,就像艺术指导帮助画家创作出更符合特定要求的作品一样。

使用 ControlNet 需要的条件

从上面的描述中你大概可以了解到,使用 ControlNet 需要以下几个条件

  • 绘图模型(画家)
  • ControlNet模型(艺术指导)
  • 参考图片(参考图)

由于大多的参考图并不一定满足 ControlNet 的要求,所以需要使用预处理器插件对参考图进行处理,以满足 ControlNet 的要求,所以我还需要预处理器来帮助我们把图像处理成 ControlNet 可以理解的图片,目前 ComfyUI 仅有 Canny 处理器,所以我们还需要额外安装预处理插件来实现这一过程

ComfyUI 中图c片预处理器插件安装

在目前 ComfyUI 中,图片预处理器仅有Canny Edge一种,所以如果要使用多种的 controlNet 模型,你需要先安装对应的预处理器插件 以下是一些预处理器插件的推荐

ControlNet 模型的下载与安装

了解完基础的概念之后我们需要先安装对应的 ControlNet 模型文件,这里我整理了部分 ControlNet 下载资源,你需要选择符合你目前使用的 Checkpoint 版本的 controlNet 下载

下载 ControlNet 模型

在资源板块板块你可以找到对应的 ControlNet 模型

ControlNet 模型下载资源

要如何安装 ControlNet 模型?

1、为 ComfyUI 单独安装 ControlNet

下载之后的模型你需要把文件放置到/ComfyUI/models/controlnet 文件夹

2、和 WebUI 共享 ControlNet 模型

如果你是和 WebUI 共用模型文件,请确保对应文件配置是正确的

  1. 找到 ComfyUI 中额外模型文件的配置文件 /ComfyUI/extra_model_paths.yaml
  2. 用记事本打开extra_model_paths.yaml
  3. 查看对应的配置文件信息如下
#all you have to do is change the base_path to where yours is installed
a111:
    base_path: D:\sd-webui-aki-v4.2 # 你的 WebUI所在目录
 
    checkpoints: models/Stable-diffusion
    configs: models/Stable-diffusion
    vae: models/VAE
    loras: |
         models/Lora
         models/LyCORIS
    upscale_models: |
                  models/ESRGAN
                  models/RealESRGAN
                  models/SwinIR
    embeddings: embeddings
    hypernetworks: models/hypernetworks
    controlnet: models/ControlNet # 应该把模型安装到这个文件夹
    ipadapter: models/ipadapter

你需要注意对应的 controlnet 配置的选项 比如在我的配置文件中,我的 ControlNet 安装模型的路径应该是 D:\sd-webui-aki-v4.2\models\ControlNet,只有与配置对应,才能保证ComfyUI 可以找到对应的模型文件

💡

无论你采用何种方式安装,都建议你为所安装的模型加上一层文件夹来备注说明对应的 Stable diffusion 版本,如采用

  • /ComfyUI/models/controlnet/sd1.5/模型文件
  • /ComfyUI/models/controlnet/flux/模型文件 这样对你之后的使用更加方便~

单个 ControlNet 模型应用示例

多个 ControlNet 模型应用示例

使用 ControlNet 的不同要求和条件

使用 ControlNet 时需要注意以下几点:

  1. 模型兼容性

    • 确保所选的 ControlNet 模型与你使用的 Stable Diffusion 基础模型版本兼容(如 SD1.5 或 SDXL)
    • 不同版本的模型可能需要不同的 ControlNet 权重文件
  2. 输入图像要求

    • 输入图像的质量和特征会直接影响 ControlNet 的效果
    • 对于不同类型的 ControlNet(如 Canny、HED 等),可能需要不同的预处理步骤
  3. 提示词设置

    • ControlNet 通常需要与文本提示词配合使用
    • 提示词应该与 ControlNet 的控制类型和目标输出相匹配
  4. 控制强度调节

    • ControlNet 的影响强度可以通过参数调节
    • 过高的强度可能导致输出过于依赖输入图像,而过低则可能效果不明显
  5. 计算资源

    • 使用 ControlNet 会增加计算负担,可能需要更强的 GPU
    • 复杂的 ControlNet 设置可能会增加生成时间
  6. 多重 ControlNet

    • ComfyUI 支持同时使用多个 ControlNet
    • 多重 ControlNet 的使用需要平衡各个控制的权重和影响
  7. 实验和调优

    • ControlNet 的最佳效果通常需要通过反复实验和微调来获得
    • 不同的场景和目标可能需要不同的 ControlNet 设置

ControlNet 和 Control LoRA 的区别