ControlNet:掌握其 images
ControlNet 为扩散模型添加视觉条件(轮廓、深度、姿态),以固定画面构图,而提示词则控制风格。其方法在 ICCV 2023 上获得了最佳论文奖。它可在 ComfyUI、Forge 或 AUTOMATIC1111 中使用,并有适用于 SD 1.5、SDXL、SD 3.5 Large、Flux.1 和 Z-Image Turbo 的版本。注意:每个控制模型只能用于训练时所针对的模型系列。
提示词描述的是内容,而不是位置。ControlNet 以参考结构、姿态、轮廓或深度图为条件来控制图像生成,让结果遵循你设定的构图。本指南更新至 2026 年 9 月 28 日,介绍如何选择控制方式、调节强度和应用区间、不同模型系列的文件大小,以及官方提供的控制模型目前有哪些;自 SD 1.5 以来,官方提供的模型已发生很大变化。
#所解决的问题
文字并不适合描述几何结构。提示词可以描述主体、风格和氛围,但无法用文字固定一只手的位置、建筑的角度或产品的精确轮廓。换一个随机种子重新生成,整个构图就会改变。ControlNet 改变的是输入,而不是提示词:您提供一张包含所需结构信息的图像,模型在每一步去噪时都以这张图像为条件,而提示词控制其余所有内容。
该方法源自研究论文《Adding Conditional Control to Text-to-Image Diffusion Models》,作者为Lvmin Zhang、Anyi Rao和Maneesh Agrawala。论文发表于ICCV 2023会议论文集,并获得该会议的最佳论文奖——Marr奖。摘要描述了其原理:ControlNet冻结扩散模型,复用其预训练编码层作为基础,并通过“零卷积”(zero convolutions)连接可训练副本。这些卷积层初始化为零,使参数逐步增长,避免有害噪声干扰训练。作者还表明,无论使用小型数据集(少于50,000张图像),还是大型数据集(超过一百万张图像),训练都能保持稳健。
对您的影响:在不重新训练的情况下,为现有模型增加控制功能,且每种控制都对应一个独立文件。因此,必须为特定模型家族使用正确的文件。
#选择控制类型
在本地无限制地生成 AI 图像与视频:在你的 GPU 或 Mac 上使用 ComfyUI、Flux、Z-Image、Wan 2.2——提供可直接加载的工作流,并介绍相关法律框架。
- 在线空间,终身可用
- PDF + 文件
- 30 天内退款
| 控制 | 它所捕获的内容 | 用于什么场景? | SD 1.5使用的ControlNet 1.1模型 |
|---|---|---|---|
| 轮廓(canny、softedge、lineart) | 线条与轮廓 | 精确保留形状:产品、标志、涂色画 | control_v11p_sd15_canny, _softedge, _lineart, _lineart_anime |
| 深度 | 与相机的距离 | 改变材质和细节,同时保持立体形态和透视关系 | control_v11f1p_sd15_depth |
| 姿势 | 关节骨架 | 人物:姿势固定,其余方面不受限制 | control_v11p_sd15_openpose |
| 分割 | 按类别划分的区域 | 场景布局:这里是天空,那里是建筑 | control_v11p_sd15_seg |
| 草图(scribble) | 粗糙的草图 | 将手绘图像转换为渲染图像 | control_v11p_sd15_scribble |
| 法线贴图 | 表面朝向 | 受光照影响的凹凸起伏和细节 | control_v11p_sd15_normalbae |
| 瓦片(tile) | 图像区域的内容 | 放大以增加细节 | control_v11f1e_sd15_tile |
ControlNet 1.1 官方仓库公布了 14 个模型,其中 11 个可用于生产环境,3 个为实验性模型,全部采用统一的命名规则。对于深度控制,仓库列出了三种支持的预处理器:Depth_Midas、Depth_Leres 和 Depth_Zoe。预处理器是将您的参考图像转换成控制图的工具,例如将照片转换成深度图。
实用原则:选择尽可能宽松、但仍能保留您所关注内容的控制方式。对一张照片采用轮廓条件控制,会复现这张照片;如果这就是想要的结果,那么生成就没有必要了。深度或姿态通常能更好地平衡遵循控制条件与创造性。
#关键设置
名称因工具而异,但有三个设置在各处都会出现。下表根据相关文档,列出了它们在三种最常用环境中的名称。
| 设置 | ComfyUI(Apply ControlNet 节点) | diffusers 库 | AUTOMATIC1111 扩展 |
|---|---|---|---|
| 控制强度 | strength:数值越高,对图像的控制力越强 | controlnet_conditioning_scale:控制权重 | Control Weight:控制权重,相当于提示词中某个词的强调程度 |
| 应用时机 | start_percent 和 end_percent:0.2 表示控制从去噪过程进行到 20% 时开始,0.8 表示控制在进行到 80% 时停止 | control_guidance_start 和 control_guidance_end,以步骤比例(0到1)表示 | Start 和 End:控制开始和结束时,生成过程所进行到的比例 |
| 控制图精度 | 预处理器分辨率,需在预处理器节点中设置 | 控制图像的尺寸 | Pixel-Perfect 模式会自动计算最佳预处理器分辨率 |
控制强度是最有效的调节手段:接近最大值时,生成结果会显得僵硬,降低强度能改善大多数呆板的图像。在去噪结束前停止控制,可以固定构图,同时让模型自由表现材质和光照。AUTOMATIC1111 的扩展提供了一个有三个选项的 Control Mode:Balanced、My prompt is more important 和 ControlNet is more important,用于在提示词和控制之间进行权衡。
#模型作者发布的初始参数值
与其编造数字,不如从发布方提供的数据出发。不同系列之间的数据差异明显,这也提醒我们,适用于 SD 1.5 的设置不能直接照搬。
| 模型 | 推荐设置 | 来源 |
|---|---|---|
| Flux.1 dev,Union Pro 2.0(Shakker Labs),canny或soft edge | 强度 0.7;结束位置 0.8 | 模型卡 |
| Flux.1 dev, Union Pro 2.0, 深度 | 强度 0.8;结束点 0.8 | 模型卡 |
| Flux.1 dev,Union Pro 2.0,姿态 | 强度 0.9;在 0.65 处结束 | 模型卡 |
| Flux.1 dev,Union Pro 2.0,灰度 | 强度 0.9;结束位置 0.8 | 模型卡 |
| Z-Image Turbo,Fun ControlNet Union | control_context_scale 在 0.65 到 0.80 之间 | 模型卡 |
| Flux.1 dev,ControlNet canny(InstantX) | 官方示例中的强度为0.5 | diffusers文档 |
| SDXL,结合两种控制(Canny和深度) | 官方示例中每个均为0.5 | diffusers文档 |
#不同ControlNet适用于哪些模型家族
自 SD 1.5 以来,可用方案变化很大,许多指南已经过时。表格区分了模型开发实验室发布的内容和社区发布的内容,因为这会影响维护和许可证。
| 系列 | 模型发布方发布的控制方案 | 社区或第三方提供的控制模型 |
|---|---|---|
| SD 1.5 | lllyasviel 的 ControlNet 1.1:14 个模型(canny、深度、姿态、分割、草图、Tile……) | 众多衍生模型 |
| SDXL | Stability AI的Control-LoRA:canny、深度、重着色和草图 | diffusers 团队提供的 ControlNet Canny 和深度控制模型;xinsir 提供的 ControlNet Union(一个文件,多种模式) |
| SD 3.5 Large | Stability AI于2024年11月26日发布的三个ControlNet:Blur、Canny和Depth | 可比较的参考资料较少 |
| Flux.1 dev | FLUX.1 Canny和Depth由Black Forest Labs发布,提供完整模型和LoRA版本,发布于2024年11月 | InstantX 的 ControlNet Union(测试版)和 Shakker Labs 的 Union Pro 2.0 |
| Z-Image Turbo | 截至我们检查时,开发方(Tongyi-MAI)的Hugging Face页面上没有这类模型 | Alibaba PAI 的 Fun ControlNet Union:canny、HED、深度、姿态和 MLSD |
有两点值得说明。首先,Black Forest Labs 已在其 API 中将 FLUX.1 Depth 和 FLUX.1 Canny 标记为弃用,包括其 LoRA 版本:开放权重仍可在 Hugging Face 上获取,但发布方已不再维护这些模型。其次,「Union」模型将多种模式整合到一个文件中,可以节省磁盘空间,但各模型的成熟度参差不齐:InstantX 的 Flux ControlNet Union 模型说明将其描述为首个测试版本,可能尚未完成全部训练。
许可证不会自动沿用基础模型的许可证:每个控制文件都有自己的许可证,而且不同文件的许可证各不相同。
| 控制 | 许可证 | 要点 |
|---|---|---|
| ControlNet 1.1 用于 SD 1.5 | OpenRAIL | RAIL类型许可,带有使用限制 |
| ControlNet canny SDXL(diffusers团队出品) | OpenRAIL++ | 如同 SDXL:使用限制见附录 |
| xinsir 的 ControlNet Union SDXL | Apache 2.0 | 宽松 |
| Stability AI 的 Control-LoRA | Stability AI Control-LoRA Community License | 每月活跃用户超过100万时,商业使用需获得Stability AI许可 |
| ControlNets SD 3.5 Large | Stability AI社区许可 | 商业使用免费,年营业额低于100万美元 |
| FLUX.1 Canny 和 Depth [dev] | FluxDev非商业授权 | 模型说明页明确指出,根据许可证,生成的图像可用于个人、科研和商业用途 |
| 适用于 Flux 的 InstantX Union 和 Shakker Labs Union Pro 2.0 | FluxDev非商业授权 | 商业使用前请务必阅读 |
| 适用于Z-Image Turbo的Fun ControlNet Union | Apache 2.0 | 宽松 |
#文件和内存方面的开销
ControlNet 是一个与基础模型配合运行的额外网络:它会增加显存占用和每张图像的处理时间。Hugging Face 上公布的文件大小可以提供初步的量级参考:这些文件的大小需要与基础模型及其文本编码器的权重大小相加。
| 控制 | 文件大小 |
|---|---|
| 适用于 SD 1.5 的 ControlNet 1.1,原始版本(.pth) | 每个均为 1.45 GB |
| SDXL,diffusers 团队的 ControlNet canny | 全精度 5 GB,半精度 2.5 GB |
| SDXL,xinsir 的 ControlNet Union | 2.51 GB |
| SDXL,Stability AI的Control-LoRA | 约 738 MB,而原始 ControlNet 为 4.7 GB |
| SD 3.5 Large, ControlNet canny | 8.61 GB |
| Flux.1 dev,InstantX 的 ControlNet Union | 6.6 GB |
| Flux.1 dev,Shakker Labs 的 Union Pro 2.0 | 4.28 GB |
| Flux.1 dev,LoRA 形式的 FLUX.1 Depth(Black Forest Labs) | 1.24 GB,而完整的 Canny 模型为 23.8 GB |
| Z-Image Turbo,Fun ControlNet Union | 3.1 GB |
两个要点。首先,以 LoRA 形式进行的控制仅占完整模型的一小部分:Stability AI 将 Control-LoRA 定义为一种使控制扩展到更广泛消费级显卡的方式。其次,需警惕文件格式:ControlNet 1.1 的 .pth 文件是 Python pickles,Hugging Face 已明确提示存在 pickle 导入警告。建议使用 .safetensors 格式,该格式无法执行代码。
需要额外多少显存?开发商并未公布通用数值,实际测量结果取决于模型和分辨率。显存耗尽时,应依次采取以下措施:降低分辨率、减少同时使用的控制数量,然后改用更轻量的控制方案,例如Control-LoRA或半精度版本。关于基础显存需求,请参阅显存指南。
#在哪里使用
ControlNet 不是独立应用程序,而是在图像生成界面中运行。在 ComfyUI 中,两个节点负责这项工作:Load ControlNet 读取 models/controlnet 文件夹中的文件,Apply ControlNet 接收控制图像和上方表格中的设置。ComfyUI 文档明确指出,软件核心并不包含所有预处理器,通常需要 ComfyUI ControlNet aux 这样的扩展。请记住,扩展是以您的权限执行的代码:只安装您熟知的扩展。对于 Z-Image Turbo,控制文件应放在另一个文件夹 models/model_patches 中。
在传统 Web 界面中,AUTOMATIC1111 的 sd-webui-controlnet 扩展会在提示词下方添加一个面板。其最新动态条目是 1.1.454 版本,日期为 2024 年 7 月,最后一次提交也在同月:该扩展仍可用于 SD 1.5 和 SDXL,但不会继续跟进新模型。根据 Forge 的 README,Forge 直接集成了 ControlNet,无需使用这一扩展。
#同时组合多种控制
完全可以叠加两个控制,例如用姿态控制人物的姿势,用深度控制场景。diffusers 文档给出的规则是:为了获得良好效果,应对条件输入应用掩码,使其作用区域不重叠,并尝试不同的强度来调整各项控制的权重。文档中的 SDXL 示例将 canny 和深度控制结合使用,两者的强度均为 0.5。在 ComfyUI 中,则依次连接 Apply ControlNet 节点。两种方式都适用相同的原则:只叠加作用于图像不同方面的控制,并降低各项控制的强度,因为它们的效果会叠加。
#当控制被忽略时
- 控制项未出现在列表中
- 文件位于错误的文件夹中,或其配置文件名称与文件名不一致。在ComfyUI中,文件夹应为models/controlnet。
- 生成结果忽略了参考图像
- 基础模型与控制模型所属系列不兼容、预处理器生成了空的控制图,或控制强度过低。在怀疑其他问题之前,请先显示控制图本身。
- 图片僵硬,缺乏生机
- 力度过高,或在整个去噪过程中持续应用控制。请降低力度,并在结束前停止控制。
- 使用 Union 模型效果令人失望
- InstantX 的 Union 模型作者指出,即使是经过充分训练的 Union 模型,也可能不如专用模型,例如姿态模型。请尝试使用专用的 ControlNet,并按照 Shakker Labs 模型说明中的建议,编写详细的提示词。
- 内存已满
- 降低分辨率,移除一个控制,或使用该控制的更轻量版本。
- ComfyUI:安装基于节点图的界面
- AUTOMATIC1111:经典网页界面
- 本地图像生成技术全景
- AI 图像套件:基于显卡的 ControlNet 工作流与设置
- 来源:ControlNet官方仓库
- 来源:ICCV 2023 原始研究论文
- 来源:Stability AI的SDXL Control-LoRA
- 来源:FLUX.1 Tools 与 Depth 和 Canny 的弃用
#FAQ
ControlNet 是做什么的?+
ControlNet 需要高性能显卡吗?+
为何我的输出忽略了控制图像?+
控制角色姿势应选择哪种控制方式?+
ControlNet是否支持SDXL、Flux和Z-Image?+
可以同时使用多个 ControlNet 吗?+
有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。