扩散模型系列ControlNet: Adding Conditional Control to Text-to-Image Diffusion Models

向文本到图像扩散模型添加条件控制

 摘要解读:

我对摘要英文的理解:

我们提出了一个神经网络架构ControlNet,可以向大规模的预训练好的文本到图像的扩散模型中添加空间条件控制。ControlNet锁住了准备生产的大规模扩散模型,并且重新使用了他们从数十亿图像上的预训练好的编码器层作为一个强大的骨架来学习多样的的条件控制,少神经网络架构和零卷积层相连接(用0初始化的卷积层)渐进式的从零增长参数,确保没有噪声扰乱优化。我们使用stable diffusion 测试了大量的条件控制比如边缘深度分割和人的姿势,使用单个或者多个条件,有或者没有提示,我们展示了在小于50k 和大于1m d的数据集上训练control net 是鲁棒性的,大量的实验证明controlnet 可以促进控制图像扩散模型更广阔的应用

翻译软件:

我们提出了ControlNet,这是一种神经网络架构,旨在为大型、预训练的文本到图像扩散模型添加空间条件控制。ControlNet保留(locks )了已准备好用于生产的大型扩散模型,并重新利用了它们通过数十亿图像预训练得到的深层且稳健的编码层,作为学习多样化条件控制的强大基础。该神经网络架构通过“零卷积”(即初始化为零的卷积层)进行连接,这些卷积层逐步从零开始增长参数,确保在微调过程中不会受到有害噪声的影响。我们使用Stable Diffusion测试了多种条件控制,如边缘、深度、分割、人体姿态等,这些测试采用了单个或多个条件,并且可以包含或不包含提示。我们展示了ControlNet的训练在小型(<50k)和大型(>1m)数据集上都具有鲁棒性。广泛的实验结果表明,ControlNet可能促进图像扩散模型在更广泛应用中的控制

学习到的 单词  lock(有保留的意思)zero convolutions 即初始化为零的卷积层 progressively grow the parameters from zero从零开始增长参数 finetuning 微调


introduction

提出了问题和挑战:

 我们中的许多人都经历过视觉灵感的闪现,我们希望将其捕捉到独特的图像中。随着文本到图像扩散模型 [54,61,71] 的出现,我们现在可以通过输入文本提示来创建视觉上令人惊叹的图像。然而,文本到图像模型在对图像的空间组成提供的控制方面受到限制。仅通过文本提示来精确表达复杂的布局、姿势、形状和形式可能很困难。生成与我们的心理想象准确匹配的图像通常需要多次反复试验,包括编辑提示、检查生成的图像,然后重新编辑提示

我们能否通过让用户提供直接指定其所需图像组成的附加图像来实现更细粒度的空间控制?

在计算机视觉和机器学习中,这些附加图像(例如,边缘图、人体姿势骨架、分割图、深度、法线等)通常被视为图像生成过程的条件。图像到图像翻译模型 [34, 97] 学习

文本到图像(text-to-image)模型的控制方法以及解决相关问题的不同策略。我们可以从以下几个方面来理解:

  1. 控制文本到图像模型的方法
    • 空间掩码(Spatial Masks):这是一种在生成图像时用于控制图像特定区域的技术。通过在模型中加入空间掩码,可以指定哪些区域应该被保留或修改,从而实现更精细的图像控制。
    • 图像编辑指令(Image Editing Instructions):这种方法允许用户通过指令直接对生成的图像进行编辑,比如修改颜色、添加元素等。
    • 个性化微调(Personalization via Finetuning):通过微调模型,可以使其适应特定用户或特定任务的需求,从而生成更加个性化的图像。
  2. 解决文本到图像生成问题的方法
    • 无训练技术(Training-free Techniques):对于一些简单的问题,如生成图像的不同变体或图像修复(inpainting),可以通过无需额外训练的技术来解决。例如,通过限制去噪扩散过程或编辑注意力层激活,可以在不重新训练整个模型的情况下实现这些功能。
    • 端到端学习和数据驱动解决方案(End-to-end Learning and Data-driven Solutions):对于更复杂的问题,如从深度信息生成图像(depth-to-image)、从姿态信息生成图像(pose-to-image)等,通常需要采用端到端的学习方法和数据驱动的解决方案。这是因为这些问题涉及到多个复杂因素之间的相互作用,需要模型能够从大量数据中学习到这些因素的映射关系。
  3. 总结
    • 文本到图像模型的控制方法多种多样,包括空间掩码、图像编辑指令和个性化微调等。
    • 解决文本到图像生成问题的策略也因问题的复杂程度而异。对于简单问题,可以采用无训练技术;而对于复杂问题,则需要依赖端到端学习和数据驱动的解决方案。

深入讨论了在大规模文本到图像(text-to-image)扩散模型中以端到端方式学习条件控制所面临的挑战,并提出了一些解决方案和研究方向。我们可以从以下几个方面来理解:

  1. 训练数据量的挑战
    • 对于特定条件的训练数据,其数量可能远远少于用于通用文本到图像训练的数据。例如,针对特定问题(如物体形状/法线、人体姿态提取等)的最大数据集通常只有约10万张图片,这相比于用于训练Stable Diffusion的LAION-5B数据集(包含50亿张图片)来说,数据量小了50,000倍。
    • 这种数据量的巨大差异使得直接在有限的数据上对大规模预训练模型进行微调或继续训练变得困难,因为这很容易导致过拟合(即模型在训练数据上表现良好,但在未见过的数据上表现不佳)和灾难性遗忘(即模型在学习新任务时忘记了旧任务)。
  2. 缓解过拟合和灾难性遗忘的策略
    • 研究者已经提出了一些策略来缓解这些问题,其中之一是通过限制可训练参数的数量或秩(即参数矩阵的秩)。这种方法可以减少模型在有限数据上的复杂性,从而降低过拟合的风险。
    • 然而,仅仅通过限制参数可能不足以完全解决问题,特别是在处理具有复杂形状和多样高级语义的野外条件图像时。
  3. 设计更深的或更定制化的神经网络架构
    • 为了更好地处理这些复杂的条件图像,可能需要设计更深的或更定制化的神经网络架构。这种架构应该能够捕捉图像中的高级语义信息,并将其与文本输入有效地结合起来,以生成符合条件的图像。
    • 这种定制化的设计可能包括引入新的网络层、改变层之间的连接方式、使用注意力机制等,以便模型能够更好地理解和学习复杂的条件信息。
  4. 总结
    • 在大规模文本到图像扩散模型中以端到端方式学习条件控制是一个具有挑战性的任务,主要是由于特定条件的训练数据量有限。
    • 为了缓解过拟合和灾难性遗忘的问题,研究者提出了限制可训练参数数量和秩的策略,但这可能不足以完全解决问题。
    • 因此,设计更深的或更定制化的神经网络架构可能是一个有效的解决方案,以便模型能够更好地处理复杂的条件图像并生成符合条件的图像。

 这篇论文介绍了ControlNet,一个端到端的神经网络架构,它学习对大型预训练的文本到图像扩散模型(在我们的实现中为Stable Diffusion)进行条件控制。ControlNet通过锁定大型模型的参数并制作其编码层的可训练副本,从而保留了该模型的质量和能力。该架构将大型预训练模型视为学习各种条件控制的强大基础。可训练副本和原始锁定模型通过零卷积层连接,这些层的权重初始化为零,以便在训练过程中逐渐增长。这种架构确保了在训练开始时不会向大型扩散模型的深层特征中添加有害噪声,并保护了可训练副本中的大规模预训练基础不受此类噪声的破坏。我们的实验表明,ControlNet可以使用各种条件输入(包括Canny边缘、霍夫线、用户涂鸦、人体关键点、分割图、形状法线、深度等)来控制Stable Diffusion(如图1所示)。我们使用单个条件图像进行测试,无论是否包含文本提示,并展示了我们的方法如何支持多个条件的组合。此外,我们还报告了ControlNet的训练是稳健且可扩展的,适用于不同大小的数据集,并且对于某些任务(如深度到图像的条件控制),在单个NVIDIA RTX 3090Ti GPU上训练的ControlNet可以获得与在大型计算集群上训练的工业模型相媲美的结果。最后,我们进行了消融研究,以调查模型中每个组件的贡献,并将我们的模型与几个强大的条件图像生成基线进行了用户研究比较

总之,(1)我们提出 ControlNet,一种神经网络架构,可以通过有效的微调将空间局部化的输入条件添加到预训练的文本到图像扩散模型中,(2)我们提出预训练的 ControlNet 来控制稳定扩散,以 Canny 为条件边缘、霍夫线、用户涂鸦、人体关键点、分割图、形状法线、深度和卡通线条图,以及(3)我们通过与几种替代架构进行比较的烧蚀实验来验证该方法,并针对之前的几种进行用户研究不同任务的基线。


3. Method

ControlNet 是一种神经网络架构,可以通过空间局部、特定于任务的图像条件增强大型预训练文本到图像扩散模型。我们首先在3.1节中介绍ControlNet的基本结构,然后在3.2节中描述如何将ControlNet应用于图像扩散模型Stable Diffusion [71]。我们在第 3.3 节中详细阐述了我们的训练,并详细介绍了推理过程中的几个额外注意事项,例如在第 3.4 节中组成多个  ControlNet

3.1. ControlNet

ControlNet 将附加条件注入神经网络的块中(图 2)。

在这里,我们使用术语network block来指代一组神经网络层,这些神经层通常组合在一起形成神经网络的单个单元,例如 resnet 块、conv-bn-relu 块、多头注意力块、transformer

假设 F(x; θ) 是这样一个经过训练的神经块,其参数为 θ,将输入特征图 x 转换为另一个特征图 y,如下所示

 在我们的设置中,x 和 y 通常是 2D 特征图,即 x ∈ Rh×w×c,其中 {h, w, c} 分别作为图中的高度、宽度和通道数(图 2a)。为了将 ControlNet 添加到这样的预训练神经块中,我们锁定(冻结)lock (freeze)原始块的参数 θ,同时将该块克隆到具有参数 θc 的可训练副本 trainable copy(图 2b)。(避免数据集太小的时候出现过拟合的现象)

  可训练副本rainable copy采用外部条件向量 c 作为输入。当这种结构应用于稳定扩散等大型模型时,锁定的参数保留了用数十亿张图像训练的生产就绪模型,而可训练的副本rainable copy重用此类大规模预训练模型来建立一个深度、稳健且强大的骨干来处理不同的输入状况。

  可训练副本rainable copy连接到具有零卷积层zero convolution layers的锁定模型,表示为 Z(·;·)。具体来说,Z(·;·) 是一个 1 × 1 卷积层,权重和偏差都初始化为零。

为了构建 ControlNet,我们使用两个零卷积zero convolution实例,

参数分别为 θz1 和 θz2。然后完整的 ControlNet 计算

其中 yc 是 ControlNet 块的输出。在第一个训练步骤中,由于零卷积层的权重和偏置参数都初始化为零,因此等式(2)中的 Z(·;·) 项均计算为零,并且

 这样,当训练开始时,有害噪声就无法影响可训练副本中神经网络层的隐藏状态。此外,由于 Z(c; θz1) = 0 并且可训练副本还接收输入图像 x,因此可训练副本功能齐全,并保留大型预训练模型的功能,使其能够作为进一步学习的强大骨干。零卷积通过消除初始训练步骤中作为梯度的随机噪声来保护该主干网。我们在补充材料中详细介绍了零卷积的梯度计算。

3.2. ControlNet for Text-to-Image Diffusion用于文本到图像扩散的 ControlNet

我们使用Stable Diffusion[71]作为示例来展示 ControlNet 如何向大型预训练扩散模型添加条件控制。稳定扩散本质上是一个 U-Net [72],带有编码器、中间块和跳跃连接的解码器。编码器和解码器都包含 12 个块,完整模型包含 25 个块,包括中间块。在 25 个块中,8 个块是下采样或上采样卷积层,而其他 17 个块是主块,每个块包含 4 个 resnet 层和 2 个视觉变换器 (ViT)。每个 ViT 都包含多个交叉注意力和自注意力机制。

  例如,在图3a中,“SD编码器块A”包含4个resnet层和2个ViT,而“×3”表示该块重复3次。文本提示使用 CLIP text encoder 进行编码,扩散时间步长通过使用位置编码的时间编码器进行编码。 ControlNet 结构应用于 U 网的每个编码器级别(图 3b)。

  特别地,我们使用 ControlNet 创建 12 个编码块和 1 个Stable Diffusion中间块的可训练副本。 12个编码块有4种分辨率(64×64、32×32、16×16、8×8),每一个复制3次。输出被添加到 U 网的 12 个跳跃连接和 1 个中间块。由于稳定扩散是典型的 U 网结构,因此这种 ControlNet 架构可能适用于其他模型。我们连接 ControlNet 的方式在计算上是高效的——由于锁定的副本参数被冻结,因此在最初锁定的编码器中不需要进行梯度计算来进行微调。这种方法可以加快训练速度并节省 GPU 内存。根据在单个 NVIDIA A100 PCIE 40GB 上的测试,使用 ControlNet 优化稳定扩散仅需要大约 23% 的 GPU 内存和 34% 的内存,与在没有 ControlNet 的情况下优化稳定扩散相比,每次训练迭代需要更多时间。图像扩散模型学习逐步对图像进行去噪并从训练域生成样本。去噪过程可以发生在像素空间或从训练数据编码的潜在空间中。稳定扩散使用潜在图像作为训练域,因为在这个空间中工作已被证明可以稳定训练过程[71]。具体来说,Stable Diffusion 使用类似于 VQ-GAN [19] 的预处理方法将 512 × 512 像素空间图像转换为更小的 64 × 64 潜在图像。为了将 ControlNet 添加到Stable Diffusion中,我们首先将每个输入调节图像(例如边缘、姿态、深度等)从 512 × 512 输入大小转换为与Stable Diffusion大小匹配的 64 × 64 特征空间向量

特别地,我们使用一个由四个卷积层组成的微型网络 E(·),具有 4 × 4 内核和 2 × 2 步长(由 ReLU 激活,分别使用 16、32、64、128 个通道,用高斯权重初始化并联合训练与完整模型)将图像空间条件 ci 编码为特征空间条件向量 cf 

 调节向量 cf 被传递到 ControlNet。

3.3.训练

给定输入图像 z0,图像扩散算法逐渐向图像添加噪声并生成噪声图像 zt,其中 t 表示添加噪声的次数。给定一组条件,包括时间步 t、文本提示 ct 以及特定于任务的条件 cf,图像扩散算法学习网络 εθ 来预测添加到噪声图像 zt 的噪声

其中L是整个扩散模型的总体学习目标。该学习目标直接用于通过 ControlNet 微调扩散模型。在训练过程中,我们随机将50%的文本提示ct替换为空字符串。这种方法提高了 ControlNet 直接识别输入调节图像中的语义(例如边缘、姿势、深度等)的能力,以替代提示。在训练过程中,由于零卷积不会给网络增加噪声,因此模型应该始终能够预测高质量的图像。我们观察到该模型并不是逐渐学习控制条件,而是突然成功地遵循输入条件图像;通常优化步骤少于 10K。如图4所示,我们称之为“突然收敛现象”。

3.4.推论 我们可以通过多种方式进一步控制 ControlNet 的额外条件如何影响去噪扩散过程。

无分类器引导分辨率加权。

稳定扩散依赖于一种称为无分类器指导 (CFG) [29] 的技术来生成高质量图像。 CFG 的公式为 εprd = εuc + βcfg(εc − εuc),其中 εprd、εuc、εc、βcfg 分别是模型的最终输出、无条件输出、条件输出和用户指定的权重。当通过 ControlNet 添加调节图像时,可以将其添加到 εuc 和 εc,或仅添加到 εc。在具有挑战性的情况下,例如,当没有给出提示时,将其添加到 εuc 和 εc 将完全删除 CFG 指导(图 5b);仅使用 εc 将使指导非常强大(图 5c)。我们的解决方案是首先将调节图像添加到 εc 中,然后根据每个块的分辨率 wi = 64/hi 为 Stable Diffusion 和 ControlNet 之间的每个连接乘以一个权重 wi,其中 hi 是第 i 个块的大小,例如 h1 = 8, h2 = 16, ..., h13 = 64。通过降低CFG引导强度,我们可以得到如图5d所示的结果,我们称之为CFG分辨率加权。

组成多个 ControlNet。

要将多个条件图像(例如 Canny 边缘和姿势)应用于稳定扩散的单个实例,我们可以直接将相应 ControlNet 的输出添加到稳定扩散模型中(图 6)。这种组合不需要额外的加权或线性插值。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/51732.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP为什么需要四次挥手?

tcp为什么需要四次挥手&#xff1f; 答案有两个&#xff1a; 1.将发送fin包的权限交给被动断开发的应用层去处理&#xff0c;也就是让程序员处理 2.接第一个答案&#xff0c;应用层有了发送fin的权限&#xff0c;可以在发送fin前继续向对端发送消息 为了搞清楚这个问题&…

生鲜云订单零售系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商品分类管理&#xff0c;商品信息管理&#xff0c;订单评价管理&#xff0c;订单管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;商品信息&#x…

力扣高频SQL 50题(基础版)第二十三题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第二十三题596.超过5名学生的课题目说明实现过程准备数据实现方式结果截图 力扣高频SQL 50题&#xff08;基础版&#xff09;第二十三题 596.超过5名学生的课 题目说明 表: Courses -------------------- | Colum…

家具缓冲器:提升家居体验的得力助手

在家具和工业设备的设计与制造中&#xff0c;钢珠滑轨缓冲器的安装与否一直是一个备受争议的话题。钢珠滑轨缓冲器作为一种能够减少冲击和噪音的装置&#xff0c;其存在具的价值&#xff0c;但也并非在所有情况下是必需的。首先&#xff0c;从功能和使用体验的角度来看&#xf…

算力共享:如何理解、标识与调控多层次算力资源的异构性和复杂性,实现智能算力网生态诸要素有效互操作?

目录 鹏程云主机和NPU计算服务器关系 NPU计算服务器 两者关系 结论 两种不同类型的处理器或计算单元 FPGA MLU NS3(Network Simulator version 3) 一、基本属性 二、主要功能与特点 三、应用与前景 对象存储和HDD存储 一、定义与特点 二、应用场景 三、总结 对…

html+css+js前端作业和平精英6个页面页面带js

htmlcssjs前端作业和平精英6个页面页面带js 下载地址 https://download.csdn.net/download/qq_42431718/89595600 目录1 目录2 项目视频 htmlcssjs前端作业和平精英6个页面带js 页面1 页面2 页面3 页面4 页面5 页面6

3.2.微调

微调 ​ 对于一些样本数量有限的数据集&#xff0c;如果使用较大的模型&#xff0c;可能很快过拟合&#xff0c;较小的模型可能效果不好。这个问题的一个解决方案是收集更多数据&#xff0c;但其实在很多情况下这是很难做到的。 ​ 另一种方法就是迁移学习(transfer learning…

Go语言编程 学习笔记整理 第2章 顺序编程 前半部分

前言&#xff1a;《Go语言编程》编著 许式伟 吕桂华 等 1.1 变量 var v1 int var v2 string var v3 [10]int // 数组 var v4 []int // 数组切片 var v5 struct { f int } var v6 *int // 指针 var v7 map[string]int // map&#xff0c;key为string类型&#xff0c;value为in…

【QT】qt 文件操作

qt 文件 qt 文件1. Qt 文件概述2. 输入输出设备类3. 文件读写类4. 文件和目录信息类 qt 文件 1. Qt 文件概述 文件操作是应用程序必不可少的部分。Qt 作为⼀个通用开发库&#xff0c;提供了跨平台的文件操作能力。 Qt 提供了很多关于文件的类&#xff0c;通过这些类能够对文件…

微服务--配置管理

现在依然还有几个问题需要解决&#xff1a; 网关路由在配置文件中写死了&#xff0c;如果变更必须重启微服务 某些业务配置在配置文件中写死了&#xff0c;每次修改都要重启服务 每个微服务都有很多重复的配置&#xff0c;维护成本高 这些问题都可以通过统一的配置管理器服…

DP的优化途径---单调队列

1.前缀和单调队列&#xff1a;https://www.acwing.com/problem/content/137/ 我们先预处理下前缀和&#xff0c;以下标为i的点为有边界&#xff1a; 也就是求()的min&#xff0c;考虑到j的范围是定值&#xff0c;用单调队列维护即可。 AC代码&#xff1a; #include<bits/…

OpenGL3.3_C++_Windows(32)

demo SSAO SSAO 环境光照(Ambient Lighting)&#xff1a;光的散射&#xff0c;我们通过一个固定的常量作为环境光的模拟&#xff0c;但是这种固定的环境光并不能很好模拟散射&#xff0c;因为环境光不是一成不变的&#xff0c;环境光遮蔽&#xff1a;让&#xff08;褶皱、孔洞…

更新至2023年上市公司ESG数据合集(十份数据:华证年度、华证季度、商道融绿、wind、秩鼎、润灵环球、盟浪、富时罗素、上市银行华证ESG)

更新至2023年上市公司ESG数据合集&#xff08;十份数据&#xff1a;华证年度、华证季度、商道融绿、wind、秩鼎、润灵环球、盟浪、富时罗素、上市银行华证ESG&#xff09; 数据名称&#xff1a; 一、2018-2023年上市公司富时罗素ESG评分数据 二、2018-2023年上市公司Wind ES…

深度学习实战笔记3循环神经网络实现

我们要训练一个基于循环神经网络的字符级语言模型&#xff0c;根据用户提供的文本的前缀生成后续文本。 import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l batch_size, num_steps 32, 35 train_iter, voc…

C#插件 调用存储过程(输出参数类型)

存储过程 CREATE PROCEDURE [dbo].[GetSum]num1 INT,num2 INT,result INT OUTPUT AS BEGINselect result num1 num2 END C#代码 using Kingdee.BOS; using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Util; using System; using System.…

MySQL死锁问题案例

MySQL死锁问题 问题描述&#xff1a;在一张流水生成的记录表中&#xff0c;当没有当前条件的数据时候&#xff0c;并发情况下会导致有线程因为死锁问题生成流水号失败。 场景 有一张生成流水的表&#xff1a; 场景复现&#xff1a; 简单来说&#xff0c;在根据流水类型、年、月…

Python如何快速定位最慢的代码?优雅了~

编写Python代码时&#xff0c;我们常常会遇到性能瓶颈&#xff0c;这不仅影响程序的执行效率&#xff0c;还可能导致用户体验下降。那么&#xff0c;如何快速定位代码中最慢的部分&#xff0c;成为每个开发者必须掌握的技能。 如何快速定位 Python 代码中的性能瓶颈&#xff1…

Url图标实现

Url图标实现 效果如下&#xff1a; 1.引入样式 <link rel"icon" href"favicon.ico"> favicon.ico和对应的html一般需要在同一个目录下&#xff08;同级别&#xff09;。 2.title是用来设置在url页签中显示的名称。 可能存在的问题&#xff1a; …

前端实现文本超出指定行数显示”展开”和”收起”效果

目录 效果演示步骤一&#xff1a;实现整体框架步骤二&#xff1a;实现样式步骤三&#xff1a;js实现元素控制完整代码 效果演示 本文方法是利用js原生进行实现的&#xff0c;可根据相关vue或react语法进行相关的改写&#xff0c;并实现效果 步骤一&#xff1a;实现整体框架 <…

c-periphery RS485串口库文档serial.md(serial.h)(非阻塞读)(VMIN、VTIME)

c-peripheryhttps://github.com/vsergeev/c-periphery 文章目录 NAMESYNOPSISENUMERATIONS关于奇偶校验枚举类型 DESCRIPTIONserial_new()serial_open()关于流控制软件流控制&#xff08;XON/XOFF&#xff09;硬件流控制&#xff08;RTS/CTS&#xff09;选择流控制方法 serial_…