0. ComfyUI ControlNet Aux 插件简介
-
作用 :
comfyui_controlnet_aux是 ComfyUI 的扩展插件,用来管理和调用各种Controlnet 预处理器模型(Annotators)。 -
位置 :安装后会在
ComfyUI/custom_nodes/comfyui_controlnet_aux/下生成目录,其中的ckpts/文件夹专门用来存放预处理器模型。
ckpts= checkpoints
- 预处理器模型:包括 Canny、OpenPose、Depth Anything、MiDaS、Zoe、Lineart、HED 等,它们负责把输入图像转化为条件图。这些预处理器模型是通用的,不依赖具体的生成模型(SD1.5、SDXL、Flux 都能用)。真正和生成模型绑定的是 ControlNet 主模型。
1.预处理器模型 vs ControlNet 主模型
在 ComfyUI 的 ControlNet 工作流里,常常会遇到两个概念:预处理器模型 和 ControlNet 主模型。它们的区别如下:
预处理器模型(Annotators)
-
作用:把输入图像(照片、草图等)转换成条件图(如边缘图、深度图、姿势关键点图)。
-
常见类型:Canny、OpenPose、Depth Anything、MiDaS、Zoe、Lineart、HED 等。
-
特点 :
- 独立的计算机视觉模型,不依赖具体的生成模型。
- 通用性强:无论你用的是 SD1.5、SDXL,还是 Flux,都可以用同一套预处理器。
-
存放路径 :
ComfyUI/custom_nodes/comfyui_controlnet_aux/ckpts/
ControlNet 主模型
-
作用:把预处理器生成的条件图,转化为能约束扩散模型的条件(Condition)输入。
-
常见类型 :
control_v11p_sd15_canny.safetensors、controlnet-openpose-sdxl-1.0.safetensors等。 -
特点 :
- 与具体的扩散模型版本绑定(SD1.5、SDXL、Flux 各有专用版本)。
- 不同主模型对应不同的条件图类型(canny、depth、openpose、scribble 等)。
-
存放路径 :
ComfyUI/models/controlnet/
总结对比
| 项目 | 预处理器模型 | ControlNet 主模型 |
|---|---|---|
| 功能 | 生成条件图 | 将条件图应用到扩散模型 |
| 通用性 | 通用,跨 SD/SDXL/Flux | 专属,必须匹配版本 |
| 例子 | Depth Anything、MiDaS、Zoe | control_v11p_sd15_canny、controlnet-depth-sdxl-1.0 |
| 路径 | custom_nodes/comfyui_controlnet_aux/ckpts/ |
models/controlnet/ |
👉 简单来说:预处理器模型负责"分析图像",ControlNet 主模型负责"约束生成"。
预处理器是通用的,而主模型必须和你用的扩散模型版本匹配。
2. Depth、Canny 和 OpenPose 的区别与用途
在 ControlNet 工作流里,这三类主模型是最常见、最实用的,它们分别依赖不同的 预处理器 来生成条件图,再通过 ControlNet 主模型约束扩散生成。
Depth(深度图)
- 输入条件:由 MiDaS、Zoe、Depth Anything 等预处理器生成的深度图。
- 作用:保留图像的空间层次和前后关系,让生成结果符合透视和场景结构。
- 适用场景:建筑、风景、人物场景,尤其需要保持空间感时。
Canny(边缘检测)
- 输入条件:由 Canny 算法生成的边缘图。
- 作用:保留图像的轮廓和结构,让生成结果贴合原始图的形状。
- 适用场景:草图转精细图、照片结构保持、快速约束生成。
OpenPose(姿势关键点)
- 输入条件:由 OpenPose 预处理器生成的人体关键点图(骨架)。
- 作用:控制人物的姿势和动作,让生成结果符合指定的骨架结构。
- 适用场景:人物插画、舞蹈动作、角色设计,尤其需要精确控制姿势时。
✅ 总结:
- Depth → 控制空间层次。
- Canny → 控制轮廓结构。
- OpenPose → 控制人物姿势。
这三类模型覆盖了最常见的生成约束需求,是 ControlNet 工作流里最常用的基础工具。
👉 总结:预处理器模型是 通用的,不绑定 SD/Flux,只负责生成条件图。
3. ControlNet 主模型的区别
不同的 ControlNet 主模型对应不同的输入条件图:
| 模型 | 输入条件 | 用途 |
|---|---|---|
| scribble | 草图线条 | 涂鸦转精细图 |
| lineart / lineart_anime | 线稿 | 保持线条结构 |
| seg | 语义分割图 | 按区域生成内容 |
| normalbae | 法线贴图 | 控制光照和几何结构 |
| depth | 深度图 | 保持空间层次 |
| mlsd | 直线检测图 | 建筑透视控制 |
| canny | 边缘检测图 | 保持轮廓结构 |
| openpose | 姿势关键点 | 控制人物姿势 |
👉 总结:ControlNet 主模型必须和 SD 版本匹配(SD1.5 用 sd15 模型,SDXL 用 sdxl 模型,Flux 未来需要专用版本)。
4.ControlNet主模型加载器区别 Load vs DiffLoad ControlNet
-
Load ControlNet Model:加载单个 ControlNet 模型。
-
DiffLoad ControlNet Model:支持多模型或动态切换,适合复杂工作流。
5. 下载与命名
Hugging Face 上的Controlnet主模型的文件通常叫 diffusion_pytorch_model.safetensors。
比如https://huggingface.co/lllyasviel/control_v11f1p_sd15_depth/tree/main

圈出的两个分别是Stable Diffusion对应Controlnet主模型的半精度版本和全精度版本。下载后放到ComfyUI目录的 models/controlnet/。
模型不改名也能用,但建议改成对应仓库名(如 control_v11p_sd15_depth.safetensors),方便在UI显示辨认和管理。
SDXL 的 ControlNet 模型(如 controlnet-openpose-sdxl-1.0)同样只需下载 .safetensors 文件,放到 models/controlnet/。
下载地址:
https://huggingface.co/diffusers/controlnet-depth-sdxl-1.0/tree/main
https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0/tree/main