论文题目:Adding Conditional Control to Text-to-Image Diffusion Models(向文本到图像扩散模型添加条件控制)
会议:ICCV2023
摘要:在文本到图像扩散模型中加入条件控制我们提出了ControlNet,这是一种神经网络架构,用于在大型预训练的文本到图像扩散模型中添加空间条件控制。ControlNet锁定了生产就绪的大型扩散模型,并重用了它们的深度和鲁棒的编码层,这些编码层预先训练了数十亿张图像,作为强大的骨干,以学习各种条件控制。神经结构与“零卷积”(零初始化卷积层)相连接,该卷积层从零开始逐步增长参数,并确保没有有害噪声影响微调。我们测试各种条件控制,例如,边缘,深度,分割,人体姿势等,稳定扩散,使用单一或多个条件,有或没有提示。我们证明了controlnets在小(<50k)和大(>1m)数据集上的训练是鲁棒的的。大量的结果表明,ControlNet可以促进更广泛的应用,以控制图像扩散模型。
项目地址:https://github.com/lllyasviel/ControlNet

ControlNet:为文本到图像扩散模型添加精确的空间控制
引言
你是否曾经有过这样的体验:脑海中有一个完美的画面,想用AI生成出来,却发现无论怎么修改提示词,生成的图像总是差那么一点点?
文本到图像扩散模型(如Stable Diffusion、DALL-E2、Midjourney)的出现让我们能够通过简单的文字描述创造出令人惊叹的图像。然而,这些模型有一个共同的痛点——难以精确控制图像的空间布局。想要精确表达一个特定的姿势、一个具体的构图、或者一个复杂的场景结构,仅仅依靠文字往往力不从心。
ControlNet的出现正是为了解决这个问题。它让我们能够通过额外的条件图像(如边缘图、人体姿势、深度图等)来精确控制生成图像的空间结构,同时保持原有扩散模型的强大生成能力。
一、问题背景
1.1 现有方法的局限
在ControlNet之前,控制文本到图像模型主要有以下几种方式:
- 精细化提示词:通过不断调整文字描述来引导生成。但这种方式既耗时又难以精确控制空间结构。
- 图像编辑指令:如InstructPix2Pix,通过编辑指令修改图像。但对于复杂的空间控制仍然有限。
- 个性化微调:如Textual Inversion、DreamBooth,通过微调模型来学习特定概念。但这主要针对内容而非空间结构。
1.2 核心挑战
为大型预训练扩散模型学习条件控制面临两大挑战:
数据量悬殊:通用文本到图像模型(如Stable Diffusion)使用LAION-5B等超大规模数据集训练,包含数十亿图像。而特定条件任务(如人体姿势检测、深度估计)的数据集通常只有约10万张图像——差距高达50,000倍。
灾难性遗忘:直接用小数据集微调大型预训练模型容易导致:
- 过拟合到新任务
- 丢失原有的丰富知识
- 生成质量下降
二、ControlNet核心方法

2.1 核心思想

ControlNet的核心思想可以用一句话概括:锁定原模型,复制编码器,零卷积连接。
具体来说:
- 锁定原始模型:保持预训练模型的所有参数不变,保护其已学习的丰富知识
- 创建可训练副本:复制模型的编码器部分作为可训练的分支
- 零卷积连接:使用初始化为零的卷积层连接两个分支
2.2 零卷积(Zero Convolution)
零卷积是ControlNet最关键的创新之一。它是一个1×1的卷积层,其权重和偏置都初始化为零。
为什么要用零卷积?
在训练开始时,由于零卷积的输出为零,整个ControlNet对原模型的输出没有任何影响:
y_c = F(x; Θ) + Z(F(x + Z(c; Θ_z1); Θ_c); Θ_z2)
当权重初始化为零时,Z(·)的输出为零,因此:
y_c = y(训练初期)
这样做的好处:
- 无害初始化:训练开始时不会向网络注入随机噪声
- 保护骨干网络:可训练副本保持原模型的能力,可以作为强大的学习起点
- 渐进式学习:参数从零开始逐渐增长,模型平稳地学习条件控制
2.3 架构设计
ControlNet应用于Stable Diffusion时的具体架构:
Stable Diffusion本质上是一个U-Net,包含编码器、中间块和解码器。ControlNet:
- 复制12个编码块和1个中间块(共13个块)
- 编码块分布在4个分辨率级别(64×64、32×32、16×16、8×8),每个分辨率重复3次
- 通过零卷积将可训练副本的输出添加到U-Net的跳跃连接和中间块
输入处理:使用一个轻量级的4层卷积网络(4×4卷积核,2×2步长),将512×512的条件图像编码为64×64的特征向量,与Stable Diffusion的潜空间尺寸匹配。
2.4 训练策略
目标函数:沿用标准的扩散模型训练目标——预测添加到图像上的噪声:
![]()
关键技巧——随机丢弃文本提示:训练时随机将50%的文本提示替换为空字符串。这迫使模型学会直接从条件图像中识别语义信息,而不是完全依赖文本提示。
突然收敛现象:由于零卷积的保护,模型在整个训练过程中都能生成高质量图像。作者观察到一个有趣的现象:模型不是逐渐学习控制条件,而是在训练到某一步(通常少于10K步)时"突然"学会遵循输入条件。

三、推理技巧
3.1 Classifier-Free Guidance分辨率加权

当使用ControlNet时,条件图像可以添加到:
- 只添加到条件输出ε_c
- 同时添加到条件输出ε_c和无条件输出ε_uc
在无提示词的情况下:
- 同时添加会完全消除CFG引导
- 只添加到ε_c会导致引导过强
解决方案:CFG分辨率加权——根据每个块的分辨率设置权重:
w_i = 64 / h_i
其中h_i是第i个块的尺寸。这样可以平衡不同分辨率层的影响。
3.2 多条件组合

ControlNet支持同时使用多个条件(如边缘+姿势、深度+姿势等)。方法非常简单:直接将多个ControlNet的输出相加到Stable Diffusion模型中,无需额外的权重或插值。
四、实验结果
4.1 支持的条件类型
ControlNet可以处理多种类型的条件输入:

| 条件类型 | 描述 |
|---|---|
| Canny边缘 | 精确的边缘轮廓 |
| HED边缘 | 软边缘检测 |
| M-LSD线条 | 直线检测 |
| 深度图 | 场景深度信息 |
| 法线图 | 表面法线方向 |
| 语义分割 | ADE20K场景分割 |
| 人体姿势 | OpenPose关键点 |
| 用户草图 | 手绘草图 |
4.2 定量评估
用户研究:在与PITI、Sketch-Guided Diffusion等方法的对比中,ControlNet在结果质量和条件保真度上都获得了最高的用户偏好评分(平均排名4.22/5和4.28/5)。

与工业模型对比:使用单张RTX 3090Ti训练5天的ControlNet(20万训练样本),与使用大规模A100集群训练的Stable Diffusion V2 Depth-to-Image模型对比。用户几乎无法区分两者的结果(准确率仅52%±17%)。
4.3 计算效率
相比不使用ControlNet的优化:
- GPU内存增加:约23%
- 训练时间增加:约34%
这个开销是可接受的,因为锁定的原始模型不需要计算梯度。
4.4 数据效率
ControlNet对训练数据量展现出良好的鲁棒性:

- 1K图像:可以生成可识别的目标
- 50K图像:质量明显提升
- 3M图像:达到最佳效果
即使在极小数据集上,训练也不会崩溃。
4.5 消融实验

论文通过消融实验验证了关键设计的重要性:
- 替换零卷积为标准卷积:性能下降到与ControlNet-lite相当,说明预训练骨干在微调过程中被破坏
- ControlNet-lite(轻量版):用单个卷积层替换可训练副本,在无提示或提示不足时无法正确解释条件图像
4.6 迁移到社区模型
由于ControlNet不改变预训练模型的网络拓扑结构,它可以直接应用于Stable Diffusion社区中的各种微调模型(如Comic Diffusion、Protogen等),无需重新训练。
五、技术洞察
5.1 为什么ControlNet有效?
- 知识复用:通过锁定原模型并复制编码器,ControlNet完整保留了预训练模型从数十亿图像中学到的丰富表示能力
- 安全微调:零卷积确保训练开始时不会向网络注入噪声,保护了可训练副本中的预训练知识
- 渐进学习:参数从零开始逐渐增长,让网络有充分时间适应新任务
5.2 与其他方法的对比
| 方法 | 优势 | 劣势 |
|---|---|---|
| 直接微调 | 简单 | 容易过拟合和遗忘 |
| LoRA | 参数高效 | 可能不足以学习复杂条件 |
| Adapter | 灵活 | 需要设计特定架构 |
| ControlNet | 复用预训练知识,学习能力强 | 参数量较大 |
5.3 局限性与未来方向
虽然论文没有明确讨论局限性,但可以观察到:
- 每种条件需要单独训练一个ControlNet
- 某些极端条件(如非常抽象的草图)可能难以解释
- 多条件组合时的权重控制还比较粗糙
六、实践应用
ControlNet在发布后迅速被社区广泛采用,典型应用场景包括:
- 建筑/室内设计:使用草图或3D渲染的深度图控制空间布局
- 角色设计:使用姿势骨架控制人物姿态
- 照片编辑:保持原图结构的风格转换
- 动画制作:批量生成保持一致性的帧序列
- 概念设计:快速将草图转化为高质量渲染
七、总结
ControlNet是一个优雅而有效的解决方案,它通过巧妙的架构设计解决了文本到图像模型难以精确控制空间结构的问题。其核心贡献包括:
- 零卷积机制:确保安全、稳定的微调过程
- 可训练副本架构:最大程度复用预训练知识
- 灵活的条件支持:统一框架支持多种类型的空间条件
- 高效的训练:即使在消费级GPU上也能训练出高质量模型
ControlNet的成功不仅在于其技术创新,更在于它开启了"可控生成"的新范式——让用户能够以更直观、更精确的方式表达创意意图。这对于AI辅助创作工具的发展具有深远意义。
948

被折叠的 条评论
为什么被折叠?



