一句话总结:本文提出了一种名为ControlNet的神经网络架构,它通过锁定Stable Diffusion的参数,并在此基础上添加一个可训练的分支,从而在不破坏原有模型生成能力的前提下,为模型引入精确的空间条件控制。

1. 总体介绍

1.1 问题背景

背景:扩散模型能够根据文字描述创造出惊艳的视觉图像,但它们在精确控制图像的空间布局、物体姿态和形状方面能力有限。目标是让用户提供直接指定目标构图的附加图像,来实现更精细的空间控制

现有方案与不足

  • 从头训练: 像 image-to-image 模型那样从零开始训练一个条件生成模型,需要巨大的计算资源,不现实。
  • 微调大模型: 直接在特定的小型条件数据集上微调整个大模型,很容易导致“灾难性遗忘”,即模型学会了新任务却忘记了原本强大的通用生成能力。
  • 其他轻量级微调方法:虽然能缓解遗忘问题,但可能不足以处理复杂的、具有高层语义的图像条件。

1.2 论文贡献

论文贡献

  1. 提出 ControlNet 架构: 一种全新的、高效的神经网络结构,可以为任何预训练扩散模型添加额外的条件输入。
  2. 锁定与复制: 锁定原始模型的权重,完全保留其强大的生成先验知识。同时,复制模型的一部分结构并使其可训练,专门用于学习条件控制。
  3. 零卷积: 使用权重和偏置都初始化为零的1x1卷积层来连接锁定和可训练的模块。
  4. 高效与稳健: 该方法训练高效,即使在小型数据集上也能取得优异效果,且能够处理多种条件输入,并支持多条件组合。

2. Method

2.1 ControlNet 基础模块

image.png

锁定的原始模块与复制的可训练副本通过零卷积层连接,其权重和偏置在初始化时全部为零

  1. 输入  同时流经两个分支。
  2. 锁定的原始分支正常输出结果。
  3. 可训练的副本分支会将输入  与经过一个零卷积处理的条件  相加,然后再进行计算。
  4. 最后,将原始分支的输出与经过第二个零卷积处理的副本分支的输出相加,得到最终结果 

其最终公式可以表示为:
ControlNet在训练初期不会对原始模型产生任何干扰,保证了训练过程的绝对稳定。随着训练的进行,零卷积的权重才逐渐从0开始学习,从而平滑、安全地将条件控制的能力“注入”到模型中。

2.2 在 Stable Diffusion 上的应用

image.png

  1. ControlNet 锁定了整个原始的 U-Net复制了 U-Net 的编码器部分(12个编码器块和1个中间块),使这部分变为可训练的。
  2. 注入流程:
    • 输入的条件图(如人体姿态图)首先经过一个小型网络 E 编码成特征图 cf。
    • cf 被送入 ControlNet 的可训练编码器块中。
    • 可训练编码器每一层的输出,通过零卷积处理后,被加到原始 U-Net 解码器对应的跳跃连接上。
    • 通过这种方式,条件控制信号就被精确地注入到了生成过程的每个尺度中。

2.3 训练与推理

  • 训练: 使用标准的扩散模型损失函数进行训练。在训练时以50%的概率将文本提示设置为空字符串,这迫使 ControlNet 学会从输入的条件图中直接理解语义。训练中存在突然收敛现象

  • 推理:

    • 多重控制: 可以同时使用多个不同的 ControlNet(如姿态 ControlNet + 深度 ControlNet)。只需将它们各自的输出相加,然后统一注入到 U-Net 中即可,实现简单而强大的复合控制。
    • 平衡控制: 提出了加权方案,用于在推理时更好地平衡文本提示和 ControlNet 条件的引导强度。

实验/评估/结果

实验设置: 基于 Stable Diffusion 1.5,测试了包括 Canny 边缘、HED 边缘、线段、人体姿态、语义分割、深度图、法线图、涂鸦等多种条件

定量实验

image.png

与当时的领先方法相比,ControlNet 在“图像质量”和“条件保真度”两项指标上均获得了用户的最高评分。

消融实验: image.png 实验清晰地证明,如果把零卷积换成普通卷积,或者把可训练副本换成一个轻量级网络,模型性能都会急剧下降。这验证了 ControlNet 核心设计的有效性和必要性。

5. 结论

ControlNet 是一个能够为大型预训练扩散模型学习条件控制的神经网络结构。它通过复用大规模预训练好的网络层来构建一个强大而深入的编码器,以学习特定的任务条件。通过零卷积连接,ControlNet 在训练中避免了有害噪声。大量实验证明,ControlNet 可以在有/无提示、单/多条件下有效控制 Stable Diffusion,为各种图像扩散模型的应用提供了巨大的便利。