ControlNet 无疑是当前 AI 绘画领域中最关键的控制插件之一,无论是轮廓勾勒、深度感知、动作姿势捕捉还是色彩调控,都离不开它的支持。然而,随之而来的问题也很突出:每种控制条件都需要调用不同的控制模型,而 SD1.5 与 SDXL 的生态系统并不互通,导致许多用户本地存储了十几个甚至几十个模型文件,磁盘空间压力巨大。
近期,一款名为 ControlNet++ 的模型打破了这一局面。它将十多种控制功能整合进单一模型,只需安装一个文件,即可与多种预处理器搭配使用。本文将详细介绍它的具体用法。
一、ControlNet++ 简介
ControlNet++,也被称为 ControlNetPlus,目前更常见的名称是 ControlNet Union。它是一套新训练的 ControlNet 控制架构,融合了 10 余种控制模型,专为 SDXL 1.0 生态打造。与独立的控制模型相比,它的处理效果并未明显下降,但使用起来却便捷得多,因此一经推出便受到广泛关注。

ControlNet Union 融合的控制类型共有 13 种,可归纳为 6 大类:
- openpose 动作姿势
- depth 深度
- thick line 粗线条(包括 scribble / hed / softedge / ted-512)
- thin line 细线条(包括 canny / mlsd / lineart / animelineart / ted-1280)
- normal 法线贴图
- segment 语义分割
除了单独使用,ControlNet Union 也支持多重控制。用户可以同时开启两个控制窗口,选用不同的预处理器,并统一选择 ControlNet Union 作为控制模型,从而降低显存压力。

ControlNet Union 的模型权重已开源,目前 SD WebUI 和 ComfyUI 均支持使用。下面将详细介绍安装方法。
二、在 SD WebUI 中使用
从 Huggingface 下载名为 diffusion_pytorch_model.safetensor 的模型文件,为便于识别,将其重命名为 controlnet++_union_sdxl.safetensor,然后放入根目录下的 extensions/sd-webui-controlnet/models 文件夹中。

将 ControlNet 插件更新至最新版本,启动 WebUI 后,即可在 ControlNet 控制列表中看到 controlnet union 选项。请注意,使用时需选择 SDXL 系列的大模型。

需要说明的是,在 8G 显存测试中,使用 controlnet union 出现了内存不足的报错,而使用独立模型时则无此问题——感觉 union 对 VRAM 的要求确实更高一些。
另外,controlnet union 目前不适用于以下预处理器:
- 带面部和手部的姿势骨架模型,例如 openpose_full、openpose_hand、openpose_faceonly 等,因为 union 未对这些内容进行训练,生成的图像会出现错误。
- seg_ofade20k 语义分割预处理器。

三、在 ComfyUI 中使用
在 ComfyUI 中使用 ControlNet Union,同样需要先下载文件,重命名后放入 ComfyUI/models/controlnet 文件夹,或 SD WebUI 共用路径下的 models/controlnet 文件夹中。
下图展示了一个基础的 controlnet 调用工作流,在 ComfyUI 中运行非常顺畅,未出现显存溢出问题。运行此工作流前,请注意以下几点:
- 图像尺寸须与上传的图像保持一致;
- 选择 SDXL 大模型,若模型不同,生成步数、CFG、采样器等参数也需同步调整;
- 检查是否已正确选择 controlnet union 模型。

此外,我们还搭建了一个多重控制工作流,可同时使用两种控制条件(超过两个后 controlnet union 的效果会下降)。使用时建议多尝试不同的 controlnet 强度,以获得更佳效果。对于新手,可先熟悉这两个基础工作流的节点结构,之后便可将 controlnet union 集成到其他更复杂的工作流中。

总体而言,ControlNet Union 效果出色,使用更便捷,且节省存储空间,非常推荐大家尝试。当然,若追求更精细的出图效果,使用最新的独立模型会获得更优表现。
