论文:https://arxiv.53yu.com/pdf/2302.05543
代码:https://github.com/lllyasviel/ControlNet
得分几个博客完成这个事情的记录了,此篇是第一篇,摘录了一些论文内容。ControlNet 的原理极为朴实无华(对每个block添加zero conv连接),但却非常有效地减少了训练资源和训练时间,针对不同领域任务的训练形成自己的style。论文最后给出了很多值得思考的图例。
文章目录
- 原论文摘录
- Introduction
- HyperNetwork and Neural Network Structure
- Diffusion Probabilistic Model
- text-to-image generating tasks
- Personalization,Customization, and Control of Pretrained Diffusion Model
- Image-to-Image Translation
- ControlNet
- ControlNet in Image Diffusion Model
- Training
- Improved Training
- Implementation
- Experiment
- Ablation Study 消融实验
- Comparison of pre-trained models
- More Applications
- Limitation
原论文摘录
Introduction
我们提出了一个神经网络结构,ControlNet,来控制预训练的大型扩散模型,以支持额外的输入条件。ControlNet以端到端方式学习特定于任务的条件,即使训练数据集很小(< 50k),学习也是鲁棒的。此外,训练ControlNet与微调扩散模型一样快,并且该模型可以在个人设备上训练。
或者,如果有强大的计算集群可用,则模型可以扩展到大量(数百万到数十亿)数据。我们报告说,像稳定扩散这样的大型扩散模型可以用ControlNets来增强,以实现边缘图、分割图、关键点等条件输入。这可以丰富控制大型扩散模型的方法,并进一步促进相关应用。
ControlNet,一个端到端神经网络架构,它控制大型图像扩散模型(如Stable diffusion)来学习特定于任务的输入条件。ControlNet将大型扩散模型的权重克隆为“trainable copy”和“locked copy”:locked copy保留了从数十亿张图像中学习到的网络能力,而可训练副本则在特定任务数据集上进行训练,以学习条件控制。可训练和锁定的神经网络块与一种称为“零卷积”的独特类型的卷积层相连,其中卷积权以学习的方式从零逐步增长到优化参数。
由于保留了production-ready weights,因此训练在不同规模的数据集上具有鲁棒性。
由于零卷积不会向深度特征中添加新的噪声,与从头开始训练新层相比,训练与微调扩散模型一样快。
我们用不同条件的各种数据集训练几个ControlNets,例如,Canny边缘,Hough线,用户涂鸦,人类关键点,分割地图,形状法线,深度等。我们还用小数据集(样本少于50k甚至1k)和大数据集(数百万样本)对ControlNets进行了实验。我们还表明,在某些任务中,如深度到图像,在个人计算机(一台Nvidia RTX 3090TI)上训练ControlNets可以获得与在具有tb GPU内存和数千个GPU小时的大型计算集群上训练的商业模型具有竞争力的结果。
HyperNetwork and Neural Network Structure
ControlNet使用一种特殊类型的卷积层,称为“零卷积”。 早期的神经网络研究[31,47,32]对网络权值的初始化进行了广泛的讨论,包括用高斯分布初始化权值的合理性以及用零初始化权值可能带来的风险。最近,[37]讨论了一种在扩散模型中缩放多个卷积层的初始权值以改进训练的方法,该方法与零卷积的思想有相似之处(它们的代码包含一个称为“zero_module”的函数)。在ProGAN[21]和StyleGAN[22]以及Noise2Noise[33]和[65]中也讨论了对初始卷积权值的操作。Stability的模型卡片[55]也提到了在神经层中使用零权重。
Diffusion Probabilistic Model
为了减少训练扩散模型所需的计算资源,基于latent image的思想[11],提出了 Latent Diffusion Model(LDM)[44]方法,并进一步扩展为Stable Diffusion 。
text-to-image generating tasks
Diffusion models可以应用于text-to-image generating tasks,以获得state-of-the-art image generating results。这通常是通过使用类似于CLIP等预训练语言模型将文本输入编码为latent vectors来实现的[41]。例如,Glide[38]是一种支持图像生成和编辑的text-guided diffusion models。Disco Diffusion是一个剪辑引导的实现[9]来处理文本提示。Stable Diffusion是latent diffusion的大规模实现[44],以实现文本到图像的生成。 Imagen[49]是一种文本到图像的结构,它不使用潜在图像,直接使用金字塔结构扩散像素。
Personalization,Customization, and Control of Pretrained Diffusion Model
由于 state-of-the-art image diffusion models 以文本到图像的方法为主,因此增强对 diffusion model 控制的最直接的方法通常是 text-guided [38,24,2,3,23,43,16]。这种类型的控制也可以通过操纵CLIP特征来实现[43]。
图像扩散过程本身可以提供一些功能来实现颜色级别的细节变化[35](Stable diffusion社区称之为img2img)。图像扩散算法自然支持inpainting,作为控制结果的重要方法[43,2]。
本文提出了Textual Inversion[12]和DreamBooth[46],利用一小组具有相同主题或对象的图像来定制(或个性化)生成结果中的内容。
Image-to-Image Translation
我们想指出的是,尽管ControlNet和Image-to-image translation可能有几个重叠的应用程序,但它们的动机本质上是不同的。
Image-to-image translation 的目标是学习不同领域图像之间的映射,而ControlNet的目标是控制具有特定任务条件的diffusion model。
Pix2Pix[20]提出了 image-to-image translation的概念,早期的方法主要是条件生成神经网络(generative neural networks)[20,69,60,39,8,63,68]。在 transformers and Vision Transformers (ViTs)普及之后,使用自回归方法(autoregressive methods)取得了成功的结果[42,11,7]。一些研究也表明,multi-model methods 可以从various translation tasks 中学习到一个robust generator [64,29,19,40]。
我们讨论了目前图像到图像翻译中最强的方法。Taming Transformer[11]是一个vision transformer ,具有generate images and perform image-to-image translations。Palette[48]是一个unified diffusion-based image-to-image translation framework。PITI[59]是一种diffusion-based image-to-image translation method ,它利用 large-scale pretraining 来提高生成结果的质量。在特定领域,如sketch-guided diffusion,[58]是一种基于优化的方法,可以操纵扩散过程。 这些方法在实验中得到了验证。
ControlNet
ControlNet操纵network block的输入条件,从而进一步控制整个神经网络的整体行为。这里的“network block”是指将一组神经层组合在一起作为构建神经网络的常用单元,如“resnet”块、“convn -bn-relu”块、multi-head attention block、transformer block等。
可以对照下图(b)查看公式(2)。
由于Zero Conv初始化的时候是0,所以ContorlNet在优化器Back Propagation之前,和原始的Stable Diffusion是一样的。
进一步来说,只要输入特征不是0,那么权重W在第一次BP之后就不会是0。
其中得到非零梯度,神经网络开始学习。这样,零卷积就成为一种独特的连接层,以一种学习的方式从零逐步到optimized parameters。
下图也解释了这个过程:
ControlNet in Image Diffusion Model
我们以Stable Diffusion[44]为例,介绍了使用ControlNet控制具有特定任务条件的大型扩散模型的方法。ControlNet的思想也可以扩展到其他的diffusion model。
Stable Diffusion是一个大型 text-to-image diffusion model ,训练了数十亿张图像。该模型本质上是一个带有encoder, a middle block, and a skip-connected decoder的U-net。encoder and decoder 都有12个块,整个模型有25个块(包括中间块)。
在这些块中,8个块是下采样或上采样卷积层。17个块是主块,每个块包含4个 resnet layers和2个Vision Transformers (ViTs)。每个Vit包含几个cross-attention and/or self-attention mechanisms。文本采用OpenAI公司的CLIP模型进行编码,扩散时间步长(diffusion time steps)采用位置编码(positional encoding)。
为了匹配Stable Diffusion的latent images大小,ControlNet采用了一个小的网络完成此事:
在图3中,可见ControlNet控制U-net的每个层级块,但由于原始权重是锁定的,所以计算消耗很少,23%显存、34%训练时间就可以去训练Stable Diffusion。
Training
Image diffusion models 学习逐步去噪图像以生成样本。去噪可以在pixel space或从训练数据编码的“latent” space 中进行。Stable Diffusion使用latent images作为 training domain。在这种情况下,术语“image”、“pixel”、“denoising”都是指“感知潜在空间(perceptual latent space)”中的相应概念[44]。
在训练过程中,我们随机将50%的文本提示替换为空字符串。这有助于ControlNet从输入条件图中识别语义内容的能力,例如,Canny边缘图或人类涂鸦等。这主要是因为当SD模型中提示符不可见时,编码器倾向于从输入控制映射中学习更多的语义,作为提示符的替代品。
Improved Training
我们讨论了几种改进ControlNets训练的策略,特别是在计算设备非常有限(例如,在笔记本电脑上)或非常强大(例如,在具有大规模gpu可用的计算集群上)的极端情况下。在我们的实验中,如果使用了其中任何一种策略,我们将在实验设置中提及。
Small-Scale Training 在计算设备有限的情况下,我们发现局部断开控制网与稳定扩散之间的连接可以加快收敛速度。默认情况下,我们将ControlNet连接到“SD中间块”和“SD解码器块1,2,3,4”,如图3所示。我们发现,断开到解码器1、2、3、4的链接,只连接中间块,可以将训练速度提高约1.6倍(在RTX 3070TI笔记本电脑GPU上测试)。当模型显示出结果与条件之间的合理关联时,断开的环节可以在继续训练中重新连接起来,以方便精确控制。
Large-Scale Training 大规模训练是指同时拥有强大的计算集群(至少8个Nvidia A100 80G或同等)和大型数据集(至少100万对训练图像)。这通常适用于数据容易获得的任务,例如,Canny检测到的边缘地图。在这种情况下,由于过度拟合的风险相对较低,我们可以首先训练ControlNets进行足够多的迭代(通常超过50k步),然后解锁稳定扩散的所有权重,并将整个模型作为一个整体进行联合训练。这将导致更具体问题的模型。
Implementation
我们提出了几种基于不同图像条件的ControlNets实现,以各种方式控制大型扩散模型。
Experiment
本文的所有结果都是在CFG-scale为9.0时获得的。采样器是DDIM。我们默认使用20 steps。我们使用四种类型的prompts来测试模型:
(1)No prompt:我们使用空字符串" "作为prompts。
(2)Default prompt:由于Stable diffusion本质上是通过prompts进行训练的,因此空字符串可能是模型的意外输入,如果不提供提示,SD倾向于生成随机的纹理映射。更好的设置是使用无意义的提示,如“an image”, “a nice image”, “a professional image”等。在我们的设置中,我们使用“a professional, detailed, high-quality image” 作为Default prompt。
(3)Automatic prompt:为了测试the state-of-the-art maximized quality of a fully automatic pipeline,我们还尝试使用自动图像字幕方法(如BLIP[34]),to generate prompts using the results obtained by “default prompt” mode。We use the generated prompt to diffusion again。
(4)User prompt: Users give the prompts.
Ablation Study 消融实验
图20显示了与未使用ControlNet训练的模型的比较。该模型使用与Stability的深度到图像模型完全相同的方法进行训练(向SD添加一个通道并继续训练)。
图21我们想指出一种“突然收敛现象(sudden convergence phenomenon)”,即模型突然能够遵循输入条件。当使用1e-5作为学习率时,这种情况可能发生在从5000到10000步的训练过程中。
图22显示了使用不同数据集规模训练的基于canny -edge的ControlNets。
PS 看起来依旧是数据量越多,效果越好。
Comparison of pre-trained models
More Applications
从图16可以看出,如果对扩散过程进行屏蔽,则模型可以用于pen-based的图像编辑。
从图26可以看出,当对象比较简单时,模型可以实现对细节的比较精确的控制。
从图27可以看出,当ControlNet只应用于50%的扩散迭代时,用户可以得到不遵循输入形状的结果。
Limitation
从图28可以看出,当语义解释错误时,模型可能难以生成正确的内容。