扩散模型大杀器 你好这是第二集

大型文本到图像模型的存在让人们意识到人工智能的巨大潜力,这些模型可以通过用户输入简短的描述性提示来生成视觉上吸引人的图像。然而,对于一些长期存在、具有明确问题表述的任务(例如图像处理),我们可能会有一些问题需要回答。这些问题包括:这种基于提示的控制是否满足我们的需求?在特定任务中,这些大型模型能否应用于促进这些特定任务?我们应该建立什么样的框架来处理广泛的问题条件和用户控制?在特定任务中,大型模型能否保留从数十亿张图片中获得的优势和能力?为了回答这些问题,作者们调查了各种图像处理应用,并得出了三个发现。第一个发现是,在特定任务领域中可用的数据规模并不总是与通用图像-文本领域中相同。第二个发现是,对于一些特定任务,需要更加精细的控制和指导,而不仅仅是简单的提示。第三个发现是,在特定任务中,大型模型可能会面临过拟合和泛化能力不足等问题。为了解决这些问题,作者们提出了一种名为ControlNet的框架,该框架可以根据用户提供的提示和控制来生成高质量的图像,并且可以在特定任务中进行微调以提高性能。

论文信息 

标题:Adding Conditional Control to Text-to-Image Diffusion Models

作者:Lvmin Zhang, Maneesh Agrawala

原文链接:https://arxiv.org/pdf/2302.05543.pdf

代码链接:https://github.com/lllyasviel/ControlNet

Adding Conditional Control to Text-to-Image Diffusion Models
  • ControlNet,控制预训练大型扩散模型,以支持额外的输入条件。ControlNet以端到端方式学习特定任务的条件输入,即使训练数据集很小(< 50k),效果也很健壮。
  • 此外,训练ControlNet的速度与微调扩散模型一样快,而且该模型可以在个人设备上训练。或者,如果强大的计算集群可用,该模型可以扩展到大量(数百万到数十亿)的数据。
  • 论文表明,像Stable Diffusion这样的大型扩散模型可以用ControlNet来增强,以支持像边缘map、分割map、关键点等条件输入。这将丰富大型扩散模型的控制方法,并进一步促进相关应用:
  •  https://github.com/lllyasviel/ControlNet
背景
  • 随大型文本到图像模型的出现,生成视觉效果生动的图像只需要用户输入一个简短的描述性提示文本(prompt)。对此,可能有几个问题:
  • 这种基于文本提示的生成,是否满足了我们的需求?
  • 在图像处理中,许多长期存在的任务都有明确的问题解决公式,这些大型模型能否应用于促进这些特定的任务?应该构建什么样的框架可以统一来处理各种各样的问题条件和用户控制?
  • 在特定的任务中,大型模型能否保持从数十亿张图像中获得的优势和能力?
  • 为回答这些问题,本文研究了各种图像处理应用,并有三个发现:
  • 首先,特定任务域的可用数据规模并不总是像一般图像-文本域那样大。许多具体任务(如对象形状、姿态理解等)的最大数据集大小往往在100k以下,即比LAION5B 小50000倍。这将需要鲁棒的神经网络训练方法,以避免过拟合,并在大模型针对特定问题进行训练时保持泛化能力。
  • 其次,大型计算集群并不总是可用的。这使得快速训练方法对于在可接受的时间和内存空间内(例如在个人设备上)优化大型模型以执行特定任务非常重要。这将进一步需要利用预先训练的权重,以及微调策略或迁移学习。
  • 第三,各种图像处理问题具有不同形式的问题定义、用户控制或图像标注。在解决这些问题时,虽然图像扩散算法可以手工做一些调整,例如,约束去噪过程、编辑多头注意力激活等,但考虑到一些特定的任务,如深度图转图像、姿势关键点到人像等,需要将原始输入解释为对象级或场景级的理解,要在许多任务中实现通用的学习解决方案,端到端学习是必不可少的。
  • 端到端神经网络ControlNet,控制大型图像扩散模型来学习特定于任务的输入条件。ControlNet将大型扩散模型的权重克隆为一个“可训练副本”和一个“锁定副本”:锁定副本保留了从数十亿张图像中学习到的网络能力,而可训练副本则在特定任务的数据集上进行训练,以学习条件控制。
  • 可训练和锁定神经网络块与一种称为“零卷积”的独特类型的卷积层连接,其中卷积权值以学习的方式从零逐步转变到优化后的参数。由于保留了权值,这样一来在不同规模的数据集上也具有鲁棒性。由于零卷积不会给深度特征添加新的噪声,因此与从头开始训练新层相比,训练速度与微调扩散模型一样快。
  • 用不同条件的各种数据集训练几个ControlNet,例如,Canny边缘、Hough线、用户涂鸦、人体关键点、分割图、深度图等。还用小数据集(样本小于50k甚至1k)和大数据集(数百万样本)对ControlNets进行了实验。表明在一些任务中,如深度到图像,在个人计算机(一台Nvidia RTX 3090TI)上训练ControlNets,与在大型计算集群上训练的商业模型具有竞争力的结果。

HyperNetwork和神经网络结构

  • HyperNetwork起源于一种语言处理方法,用于训练一个小的循环神经网络来影响一个大的神经网络的权重。HyperNetwork也被应用于生成对抗网络等图像生成任务。ControlNet和HyperNetwork在影响神经网络行为的方式上有相似之处。ControlNet使用一种特殊类型的卷积层,称为“零卷积”。早期的神经网络研究广泛讨论了网络权值的初始化问题,包括高斯分布初始化权值的合理性以及用零初始化权值可能带来的风险。在ProGAN和StyleGAN以及Noise2Noise等工作中也讨论了初始卷积权值的操作。

扩散概率模型

  • 近来,扩散概率模型取得了巨大的研究进展,例如去噪扩散概率模型(DDPM)、去噪扩散隐式模型(DDIM)和基于分数的扩散模型等。研究人员在处理高分辨率图像时往往会考虑节省计算能力的策略,或直接使用基于金字塔或多阶段的方法,常见比如使用U-net作为神经网络结构。为了降低训练扩散模型所需的计算能力,基于图像潜在特征的思想,提出了潜在扩散模型(latent diffusion model, LDM)方法,并进一步扩展到Stable Diffusion。

文本到图像扩散模型

  • 扩散模型可以应用于文本到图像生成任务,以达到最先进的图像生成效果。这通常是通过使用CLIP等预训练好的语言模型将文本输入编码为潜在向量来实现的。例如,Glide是一个文本引导的扩散模型,同时支持图像生成和编辑。Disco Diffusion是clip引导实现、用于处理文本提示。Stable Diffusion实现潜在扩散。Imagen是一个文本到图像的结构,它不使用潜在图像,而是使用金字塔结构直接扩散像素。

预训练扩散模型的控制生成

  • 最先进的图像扩散模型,是由文本到图像的方法主导的,所以增强对扩散模型控制的最直接的方法,通常是文本引导。这种类型的控制也可以通过操纵CLIP特性来实现。图像扩散过程本身可以提供一些功能来实现颜色级别的细节变化(社区称之为img2img)。图像扩散算法当然支持inpainting作为控制结果的重要方式。而文本inversion和DreamBooth方法,基于具有相同主题或目标对象的小样本图像数据集,去自定义控制生成结果中的内容。

图像转换

  • Pix2Pix提出了图像到图像转换的概念,早期的方法以条件生成神经网络为主。在Vision Transformers(ViTs)得到普及后,使用自回归方法也获得了不错的结果。目前最强大的图像到图像转换方法里,Taming Transformer属于vision transformer类,具有生成图像和执行图像到图像转换的功能。Palette是一个统一的基于扩散的图像到图像转换框架。PITI是一种基于扩散的图像到图像转换方法,它利用大规模的预训练来提高生成结果的质量。在草图引导扩散等特定领域,像论文《Sketch-guided text-to-image diffusion models》则属于基于优化的方法,用于控制扩散过程。
方法
  • ControlNet通过对神经网络模块的输入条件进行操作,从而进一步控制整个神经网络的整体行为。其中,“神经网络模块”是指将一组神经层作为一个常用单元组合在一起构建神经网络,如“resnet”块、“convn-bn-relu”块、多头注意力块、transformer模块等。
  • 以二维特征为例,给定特征x∈h×w×c,{h, w, c}为高度、宽度和通道,神经网络模块F(·;Θ)和一组参数Θ将x转换为另一个特征y:

ControlNet2_卷积

  • 如果将所有参数锁定在Θ中,然后将其克隆为可训练的副本Θc。复制的Θc使用外部条件向量c进行训练。在本文中,称原始参数和新参数为“锁定副本”和“可训练副本”。制作这样的副本而不是直接训练原始权重的动机是:避免数据集较小时的过拟合,并保持从数十亿张图像中学习到的大型模型的能力。
  • 神经网络模块由一种称为“零卷积”的独特类型的卷积层连接,即1×1卷积层,权重和偏差都用零初始化。将零卷积运算表示为Z(·;·),使用参数{Θz1,Θz2}的两个实例组成ControlNet结构:
  • ControlNet2_数据集_02

  • 其中yc成为该神经网络模块的输出。因为零卷积层的权值和偏差都初始化为零,所以在第一个训练步骤中,有:
  • 这可以转换为yc = y
  • 表明,在第一个训练步骤中,神经网络块的可训练副本和锁定副本的所有输入和输出都与它们的状态一致,就像ControlNet不存在一样。换句话说,当一个ControlNet应用于一些神经网络块时,在进行任何优化之前,它不会对深层神经特征造成任何影响。任何神经网络块的能力、功能和结果质量都得到了完美的保留,任何进一步的优化都将变得像微调一样快(与从零开始训练这些层相比)。
  • 下面简单地推导零卷积层的梯度计算。考虑权值W和偏差B的1 × 1卷积层,在任意空间位置p和通道索引i处,给定输入特征i∈h×w×c,正向通过可写成
  • 这可以转换为yc = y
  • 表明,在第一个训练步骤中,神经网络块的可训练副本和锁定副本的所有输入和输出都与它们的状态一致,就像ControlNet不存在一样。换句话说,当一个ControlNet应用于一些神经网络块时,在进行任何优化之前,它不会对深层神经特征造成任何影响。任何神经网络块的能力、功能和结果质量都得到了完美的保留,任何进一步的优化都将变得像微调一样快(与从零开始训练这些层相比)。
  • 下面简单地推导零卷积层的梯度计算。考虑权值W和偏差B的1 × 1卷积层,在任意空间位置p和通道索引i处,给定输入特征i∈h×w×c,正向通过可写成
  • ControlNet2_卷积_03

  • 零卷积有W = 0和B = 0(在优化之前),对于Ip,i非零的任何地方,梯度变为:
  • ControlNet2_神经网络_04


  • 可以看到,尽管零卷积可以导致特征项i的梯度变为零,但权值和偏差的梯度不受影响。在第一次梯度下降迭代中,只要特征I是非零,权重W就会被优化为非零矩阵。值得注意的是,在例子中,特征项是从数据集中采样的输入数据或条件向量,这自然地确保了I不为零。例如,考虑一个具有总体损失函数L和学习率βlr的经典梯度下降,如果“外部”梯度∂L/∂Z(I;{W, B})不为零,有:
  • ControlNet2_数据集_05

  • 其中W∗是一阶梯度下降后的权值;是Hadamard乘积。在这一步之后,可得到:
  • ControlNet2_神经网络_06


  • 获得非零梯度,神经网络开始学习。通过这种方式,零卷积成为一种独特的连接层类型,以学习的方式逐步从零增长到优化参数。
扩散模型中的ControlNet
  • 以Stable Diffusion为例,介绍利用ControlNet对具有任务特定条件的大型扩散模型进行控制的方法。
  • Stable Diffusion是一个大型的文本到图像扩散模型,训练了数十亿张图像。该模型本质上是一个带有编码器、中间块和跳接解码器的U-net。编码器和解码器都有12个块,完整模型有25个块(包括中间块)。其中8个块是下采样或上采样卷积层,17个块是主块,每个主块包含4个resnet层和2个Vision transformer (vit)。每个Vit都包含若干交叉注意和/或自注意机制。文本采用OpenAI CLIP编码,扩散时间步长采用位置编码。
  • Stable Diffusion使用类似于VQ-GAN的预处理方法,将整个512 × 512图像数据集转换为较小的64 × 64“潜在图像”进行训练。这需要ControlNets将基于图像的条件转换为64 × 64的特征空间,以匹配卷积大小。使用一个由4个4核和2 × 2步长卷积层组成的微型网络E(·)(由ReLU激活,通道为16,32,64,128,初始化为高斯权值,与完整模型联合训练)将图像空间条件ci编码为特征映射: 

    

ControlNet2_神经网络_07

  • 其中cf为转换后的特征图。该网络将512 × 512的图像条件转换为64 × 64的特征图。如图所示,使用ControlNet来控制U-net的各个层。

ControlNet2_卷积_08

与之相关的主要工作有HyperNetworkStable Diffusion。HyperNetwork是一种用于训练神经网络的方法,它可以通过一个小型的神经网络来影响一个更大的神经网络的权重。HyperNetwork已经在图像生成等领域取得了成功,并且已经有多篇相关论文发表。另外,Stable Diffusion是一种用于图像生成和编辑的技术,它可以通过扩散过程来生成高质量、多样化的图像,并且可以通过附加小型神经网络来改变其艺术风格。ControlNet和HyperNetwork之间的相似之处在于它们都可以影响神经网络的行为,从而实现特定任务的目标

具体来说,HyperNetwork使用一个小型的神经网络来影响一个更大的神经网络的权重,从而改变其行为。而ControlNet则是将大型图像扩散模型中的权重克隆到一个“可训练副本”和一个“锁定副本”中,其中锁定副本保留了从数十亿张图像中学习到的网络能力,而可训练副本则在特定数据集上进行训练以学习条件控制。此外,它们在影响神经网络行为方面的共同点是它们都使用了小型神经网络来对大型神经网络进行控制。这种方法可以使得大型神经网络更加灵活和适应性强,并且可以根据不同任务和条件进行调整和优化。ControlNet与其他相关工作之间的优势主要体现在以下几个方面:

🔹控制方式不同:ControlNet通过控制神经网络中的输入条件来影响其行为,而其他相关工作则可能采用不同的控制方式,例如直接修改权重或者使用外部约束等。

🔹可解释性更强:ControlNet可以通过可视化输入条件和输出结果之间的关系来解释其行为,从而更好地理解神经网络的内部机制。这对于一些需要可解释性的任务非常重要。

🔹适应性更强:ControlNet可以根据不同任务和条件进行调整和优化,从而使得神经网络更加灵活和适应性强。这对于一些复杂、多变的任务非常重要。

🔹训练效果更好:ControlNet可以通过使用锁定副本来保留从数十亿张图像中学习到的网络能力,并将其与可训练副本进行结合来进行训练。这种方法可以使得训练效果更好,并且可以避免过拟合等问题。

方 法

ControlNet2_神经网络_09

我们尽量少用公式进行表达,主要的技术细节和设定可以参考论文。ControlNet是一种神经网络架构,可以通过特定任务的条件来增强预训练的图像扩散模型。该方法包括几个关键组件,包括预训练模型的“可训练副本”“锁定副本”,以及一组输入条件,可以用来控制输出。整个过程可以概括如下:

🔹克隆预训练模型:ControlNet首先创建了预训练图像扩散模型的两个副本,其中一个是“锁定”的,不能被修改,而另一个是“可训练”的,可以在特定任务上进行微调。ControlNet使用了一种称为“权重共享”的技术,该技术可以将预训练模型的权重复制到两个不同的神经网络中。这样,在微调可训练副本时,锁定副本仍然保留着从预训练中学到的通用知识,并且可以提供更好的初始状态。需要注意的是,在克隆预训练模型之前,需要先选择一个适合特定任务的预训练模型,并对其进行必要的调整和优化。这样才能确保克隆出来的模型能够更好地适应特定任务,并取得更好的效果。

🔹定义输入条件:ControlNet然后定义了一组输入条件,可以用来控制模型的输出。这些条件可能包括颜色方案、对象类别或其他特定任务参数。该技术可以将输入条件与预训练模型进行连接,并将其作为额外的输入信息传递给神经网络。这样,在微调可训练副本时,神经网络可以根据这些输入条件来调整输出结果,并更好地适应特定任务。需要注意的是,在定义输入条件之前,需要先确定哪些参数对于特定任务是最重要的,并选择合适的方式来表示这些参数。例如,在图像分类任务中,可能需要考虑对象类别、颜色和纹理等因素,并选择合适的方式来表示它们。同时,还需要确保这些输入条件能够被有效地传递给神经网络,并且不会对模型性能产生负面影响。

🔹训练可训练副本:ControlNet然后使用反向传播和其他标准训练技术,在特定数据集上对可训练副本进行训练。很自然的就是一个标准的神经网络训练流程。训练可训练副本之前,需要先选择一个适合特定任务的预训练模型,并将其克隆为可训练副本。同时还需要确定哪些输入条件对于特定任务是最重要的,并将其与预训练模型进行连接。

🔹合并输出:最后,ControlNet将两个模型副本的输出组合起来,产生一个最终结果,既包含从预训练中学到的通用知识,也包含从微调中学到的特定知识。

实 验 

这种方法自然是要看可视化展示的:

ControlNet2_神经网络_10

ControlNet2_数据集_11

结 论 

总的来说,ControlNet是一种新颖的神经网络架构,可以通过微调预训练模型来适应特定任务,并在多个基准数据集上取得了非常好的性能表现。该方法使用条件控制技术将输入条件与预训练模型进行连接,并将其作为额外的输入信息传递给神经网络,从而帮助神经网络更好地理解输入条件,并取得更好的效果。同时,ControlNet还探讨了不同因素对其性能的影响,例如不同输入条件、不同预训练模型和不同微调策略等。实验结果表明,在多个基准数据集上,ControlNet都取得了非常好的性能表现,并且在图像分类、图像生成和图像检索等任务中也有广泛应用。因此,我们相信ControlNet是一种非常有前景和实用价值的神经网络架构,并且在未来会有更广泛的应用。