Composer: Creative and Controllable Image Synthesis with Composable Conditions
公众号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料)
目录
0. 摘要
最近,在大规模数据上学习的生成模型能够合成令人难以置信的图像,但受限于有限的可控性。这项工作提供了一种新的生成范例,允许对输出图像进行灵活的控制,如空间布局和调色板,同时保持合成质量和模型创造力。以组合性作为核心思想,我们首先将图像分解为代表性因素,然后使用所有这些因素作为条件来扩散模型,以重新组合输入。在推断阶段,丰富的中间表示作为可组合的元素,导致了一个庞大的设计空间(与分解因素的数量成指数比例)以进行可定制的内容创建。值得注意的是,我们的方法,我们称之为 Composer,支持各种级别的条件,例如全局信息的文本描述,作为局部指导的深度图和草图,用于低级细节的颜色直方图等。除了提高可控性,我们确认 Composer 作为一个通用框架,有助于各种经典生成任务而无需重新训练。代码和模型将会提供。
1. 简介
"The infinite use of finite means." ——Noam Chomsky (Chomsky, 1965)
生成图像模型在文本条件下现在可以产生逼真且多样的图像(Ramesh等,2022; Saharia等,2022; Rombach等,2021; Yu等,2022; Chang等,2023)。为了进一步实现定制化的生成,许多最近的作品通过引入条件,如分割图(Rombach等,2021; Wang等,2022b; Couairon等,2022),场景图(Yang等,2022),素描(Voynov等,2022),深度图(stability.ai,2022),修补掩码(Xie等,2022; Wang等,2022a),或通过在一些特定主题的数据上微调预训练模型(Gal等,2022; Mokady等,2022; Ruiz等,2022),来扩展文本到图像模型。然而,这些模型在实际应用中仍然只提供了有限的可控性。例如,生成模型经常难以准确地同时产生具有语义、形状、风格和颜色规格的图像,这在现实世界的设计项目中很常见。
我们认为,可控的图像生成关键不仅取决于条件,更重要的是组合性(Lake等,2017)。后者可以通过引入大量的潜在组合(例如,每个包含八种表示的一百张图像大约产生 100^8 种组合)来指数级地扩展控制空间。类似的概念在语言和场景理解领域得到了探索(Keysers等,2019; Johnson等,2016),在这些领域,组合性被称为组合泛化(compositional generalization),即从有限数量的已知组件中识别或生成潜在无限数量的新组合的技巧。
在这项工作中,我们开发了 Composer,这是组合生成模型的实现。组合生成模型指的是能够无缝重组视觉组件以创建新图像的模型。具体而言,Composer 是一个具有 UNet 骨干的多条件扩散模型。在 Composer 的每次训练迭代中,有两个阶段。在分解阶段中,一批图像会使用计算机视觉算法或预训练模型分解成各个独立的表示形式。在合成阶段,Composer 经过优化,可以从这些表示子集中重建这些图像。尽管只使用重建目标进行训练,Composer 可以解码由来自不同来源并且可能不兼容的表示组合组成的新图像。
尽管在概念上简单且易于实施,Composer 表现出了强大的性能,并在一系列图像生成和处理任务中取得了令人鼓舞的成绩,包括传统任务和以前未曾探索的任务。这些任务包括文本到图像生成、多模态条件图像生成、风格转移、姿势转移、图像翻译、虚拟试穿、不同方向的插值和图像变化、通过修改素描、深度或分割图来重新配置图像、根据可选调色板进行着色等。Composer 引入了掩模的正交表示,使其能够将可编辑区域限制在用户指定的区域。这种方法比传统的修复操作更灵活,同时可以防止修改指定区域外的像素。虽然 Composer 以多任务的方式训练,但在仅使用标题作为条件时,在 COCO 数据集上实现了零样本文本到图像合成 FID 为 9.2,表明它能够产生高质量的输出。
2. 方法
我们的框架包括分解阶段,其中图像被分解成一组独立的组件;以及组合阶段,其中使用条件扩散模型重新组装这些组件。首先,我们对扩散模型和 Composer 提供的指导方向进行简要介绍。随后,我们详细解释了图像分解和组合的实现方式。
2.1. 扩散模型
扩散基础。
无分类器引导(classifier-free guidance)。
双向指导:通过使用条件 c_1 将图像 x_0 逆映射到其潜在 x_T,然后使用另一个条件 c_2 从 x_T 进行采样,我们能够使用 Composer 以分离的方式来操纵图像,其中操纵方向是由操作方向 c_1 和 c_2 定义的。这一方法在(Wallace等,2022)中被用到。我们在第 3.2 节和第 3.3 节使用这种方法。
2.2. 分解
我们将图像分解成捕捉其各个方面的解耦表示。我们在这项工作中使用了八种表示,它们都是在训练过程中实时提取的。
- 标题:我们直接使用图像文本训练数据中的标题(title)或描述信息(例如,LAION-5B(Schuhmann等,2022))作为图像标题(caption)。当没有标注可用时,也可以利用预训练的图像标题模型。我们使用预训练的 CLIP ViT-L/14@336px(Radford等,2021)模型提取它们的句子和单词嵌入来表示这些标题。
- 语义和风格:我们使用预训练的 CLIP ViT-L/14@336px(Radford等,2021)模型提取的图像嵌入来表示图像的语义和风格,类似于 unCLIP(Ramesh等,2022)。
- 颜色:我们使用平滑的 CIELab 直方图(Sergeyk,2016)表示图像的颜色统计信息。我们将 CIELab 颜色空间量化为 11 个色调值,5 个饱和度值和 5 个亮度值,并使用 10 的平滑 sigma。我们经验性地发现这些设置效果很好。
- 素描:我们使用边缘检测模型(Su等,2021)和素描简化算法(Simo-Serra等,2017)提取图像的素描。素描捕捉图像的局部细节,具有较少的语义。
- 实例:我们使用预训练的 YOLOv5(Jocher,2020)模型对图像进行实例分割,提取其实例掩模。实例分割掩模反映了视觉对象的类别和形状信息。
- 深度图:我们使用预训练的单目(monocular)深度估计模型(Ranftl等,2022)提取图像的深度图,粗略捕捉图像的布局。
- 强度:我们引入原始的灰度图像作为一种表示,以迫使模型学习操纵颜色的解耦自由度。为了引入随机性,我们从一组预定义的 RGB 通道权重中均匀采样以创建灰度图像。
- 掩模:我们引入图像掩模,以使 Composer 能够将图像生成或操作限制在可编辑的区域。我们使用一个 4 通道表示,其中前 3 个通道对应于掩掩模的 RGB 图像,而最后一个通道对应于二进制掩模。
值得注意的是,虽然这项工作使用了上述的八种条件进行实验,但用户可以自由地使用 Composer自定义其条件。
2.3. 组合
我们使用扩散模型从一组表示中重新合成图像。具体来说,我们利用 GLIDE(Nichol等,2021)架构并修改其条件模块。我们探索了两种不同的机制来使模型以我们的表示为条件:
全局条件:对于全局表示,包括 CLIP 句子嵌入、图像嵌入和色彩调色板,我们将它们投影并添加到时间步嵌入中。此外,我们将图像嵌入和色彩调色板投影到八个额外的标记中,并将它们与 CLIP 单词嵌入连接起来,然后用作 GLIDE 中交叉注意力的上下文,类似于 unCLIP(Ramesh等,2022)。由于条件要么是加法的,要么可以在交叉关注中进行选择性掩蔽,因此要么在训练和推断期间删除条件,要么引入新的全局条件都是直截了当的。
局部条件:对于局部表示,包括素描、分割掩码、深度图、强度图像和带掩码图像,我们使用堆叠的卷积层将它们投影到与有噪潜在 x_t 具有相同空间大小的均匀维度嵌入中。然后,我们计算这些嵌入的总和,并将结果连接到 x_t,然后馈送到 UNet 中。由于这些嵌入是加法的,因此很容易适应缺失条件或引入新的局部条件。
联合训练策略:设计一个联合训练策略至关重要,使模型能够学会从各种条件组合中解码图像。我们尝试了几种配置,并确定了一种简单而有效的配置,其中我们为每个条件使用独立的 0.5 的丢弃概率,0.1 的概率丢弃所有条件,以及 0.1 的概率保留所有条件。对于强度图像,我们使用特殊的 0.7 的丢弃概率,因为它们包含大多数关于图像的信息,可能在训练期间压制其他条件。
基础扩散模型生成 64x64 分辨率的图像。为了生成高分辨率图像,我们训练了两个无条件的扩散模型,用于分别将图像从 64x64 分辨率放大到 256x256 和从 256x256 分辨率放大到 1024x1024。放大模型的架构是从 unCLIP(Ramesh等,2022)修改而来的,其中我们在低分辨率层中使用更多通道,并引入自注意力块以扩大容量。我们还引入了一个可选的先验模型(Ramesh等,2022),用于从标题生成图像嵌入。我们经验性地发现,对于某些条件的组合,先验模型能够提高生成图像的多样性。
3. 实验
3.1. 训练细节
我们训练了一个包含 2B 参数的基础模型,用于在 64x64 分辨率下进行有条件的图像生成,一个包含 1.1B 参数的模型,用于将图像上采样到 256x256 分辨率,以及一个包含 0.3B 参数的模型,用于将图像进一步上采样到 1024x1024 分辨率。此外,我们还训练了一个包含 1B 亿参数的先验模型,用于将标题可选地投影到图像嵌入。对于先验、基础和两个上采样模型,我们分别使用了 4096、1024、512 和 512 的批大小。我们在一系列公共数据集上进行训练,包括 ImageNet21K(Russakovsky等,2014)、WebVision(Li等,2017),以及包含大约 1B 图像的 LAION 数据集(Schuhmann等,2022)的筛选版本。我们从 LAION 数据集中消除了重复项、低分辨率图像和潜在包含有害内容的图像。对于基础模型,我们首先使用仅图像嵌入作为条件,在完整数据集上进行了 100 万步的预训练,然后启用了所有条件,在原始数据集的 6000 万示例子集(排除审美评分 7.0 以下的 Laion 图像)上进行了 20 万步的微调,同时。先验模型和上采样模型在完整数据集上进行了 100 万步的训练。
3.2. 图像操控
变化:使用 Composer,我们可以通过以给定图像表示的特定子集作为条件,来创建类似于给定图像但在某些方面不同的新图像。通过精心选择不同表示的组合,我们可以在图像变化的范围上具有很大的灵活性(图 2a)。当引入更多条件时,我们的方法比仅基于图像嵌入进行条件化的 unCLIP(Ramesh等,2022)容易产生更准确的重建图像。
插值:通过在两个图像全局表示之间的嵌入空间中遍历,我们可以混合这两个图像以进行变化。Composer 进一步让我们精确控制要在两个图像之间插值的元素以及要保持不变的元素,从而产生多种插值方向(图 2b)。
重配置:图像重配置(Sun&Wu,2019)是指通过直接修改一个或多个图像的表示来操作图像。Composer 提供了各种图像重配置的选项(第 2.1 节)。具体来说,给定一个图像 x,我们可以通过以图像的一组表示 c_i 为条件的 DDIM 反演来获得其潜在 x_T;然后,我们从 x_T 开始,通过以一组修改后的表示 c_j 为条件进行 DDIM 采样,以获得图像的变体 ^x。 ^x 预计会与 x 在由 c_j 和 c_i 之间的差异定义的变化方向上不同,但除此之外它们是相似的。通过按照这个过程,我们能够从不同的方向操纵图像(图 3)。
可编辑区域:通过以一组表示 c 以及一个掩码图像 m 为条件,Composer 可以将变化限制在由 m定义的区域内。值得注意的是,可编辑区域与所有图像生成和操作操作都是正交的,为 Composer 提供了比单纯的图像修补更大的图像编辑灵活性(图 4)。
3.3. 传统生成任务的改进
可以使用 Composer 架构来重新制定许多传统的图像生成和操作任务。以下是一些示例。
基于调色盘的上色: 在使用 Composer 根据调色板 p 上色图像 x 时,有两种方法:一种方法涉及将采样过程的条件设置为 x 的灰度版本和 p,而另一种方法涉及使用重新配置(第 3.2 节)来根据调色板对 x 进行操作。我们发现后一种方法产生更合理和多样的结果,因此在图 5a 中使用了它。
风格迁移: Composer 粗略地分离了内容和样式表示,这使我们能够将图像 x1 的样式转移到另一个图像 x2,只需以 x1 的样式表示和 x2 的内容为条件。还可以通过在两个图像之间插值样式表示来控制迁移强度。我们在图 5b 中展示了示例。
图像转换: 图像转换是指将图像转化为内容保持不变,但样式转换以匹配目标领域的变体的任务。我们使用图像的所有可用表示来描述其内容,并使用文本描述来捕获目标领域。我们利用第 3.2 节中描述的重新配置方法来操作图像(图 5c)。
姿势迁移: 图像的 CLIP 嵌入捕获其样式和语义,使 Composer 能够修改对象的姿势而不损害其身份。我们使用对象的分割图来表示其姿势,使用图像嵌入来捕获其语义,然后利用第 3.2 节中描述的重新配置方法来修改对象的姿势(图 5d)。
虚拟试穿: 鉴于服装图像 x1 和身体图像 x2,我们可以首先遮蔽 x2 中的服装,然后以掩蔽图像 m2 以及给定图像 x1 的 CLIP 图像嵌入为条件进行采样,以产生虚拟试穿的结果(图 5e)。尽管质量适中,但结果展示了 Composer 处理具有统一框架的困难问题的可能性。
3.4. 组合式图像生成
通过以不同来源的各种视觉元素的组合为条件,Composer 可以从有限的材料集生成大量的图像。图 6 显示了一些精选示例。
3.5. 文本到图像生成
为了进一步评估 Composer 在图像生成方面的质量,我们将其与 COCO 数据集(Lin等,2014)上最先进的文本到图像生成模型进行了比较。我们使用 100、50 和 20 个采样步骤分别用于先验、基础和 64×64 到 256×256 上采样模型,先验和基础模型使用 3.0 的引导系数。尽管它是多任务训练的,Composer 在 COCO 上达到了竞争力的 FID 分数为 9.2,CLIP 分数为 0.28,与表现最佳的模型相媲美。
4. 相关工作
扩散模型(Ho等,2020;Nichol&Dhariwal,2021;Dhariwal&Nichol,2021;Rombach等,2021;Nichol 等,2021;Ramesh等,2022;stability.ai,2022;Saharia 等,2022)正逐渐成为图像生成的成功范式,超越了GAN(Xu等,2017; Zhu等,2019;Zhang等,2021),并在保真度和多样性方面与自回归模型(Ramesh等,2021;Yu等,2021;Esser等,2020;Yu等,2022;Ding等,2021)相当。
我们的方法建立在最近的分层扩散模型(Ramesh等,2022;Saharia 等,2022)基础之上,其中一个大型扩散模型用于生成小分辨率图像,而两个相对较小的扩散模型将图像上采样到更高的分辨率。然而,与这些文本到图像模型不同,我们的方法支持可组合的条件,并具有更好的灵活性和可控性。
许多最新的工作扩展了预训练的文本到图像扩散模型,以实现多模态或定制生成,通常通过引入条件,如修补掩模(Xie等,2022;Wang等,2022a), 素描(Voynov等,2022),场景图(Yang等,2022),关键点(Li等,2023),分割图(Rombach 等,2021;Wang等,2022b;Couairon等,2022),多个文本描述的组合(Liu等,2022)以及深度图(stability.ai,2022),或通过在一些特定主题数据上微调参数(Gal等,2022; Mokady等,2022;Ruiz等,2022)。此外,基于 GAN 的方法还可以接受多种条件的组合,以实现可控的生成(Huang等,2021)。与这些方法相比,Composer 在各种条件下都具备组合性,能够扩大控制空间,在图像生成和操作方面具有更大的灵活性。
5. 结论和讨论
我们的分解-组合范式表明,当条件可组合而不是独立使用时,生成模型的控制空间可以大幅扩展。因此,可以使用我们的 Composer 架构重新构思广泛的传统生成任务,并展现了先前未探索的生成能力,激发了对各种分解算法的进一步研究,这些算法可以实现更高的可控性。此外,我们提出了多种利用 Composer 进行图像生成和操作任务的方法,基于无分类器和双向引导,为未来研究提供了有用的参考。
尽管在第 2.3 节中我们经验性地找到了一种简单而可行的多条件联合训练配置,但这种策略并不完美,例如,它可能会降低单条件生成的性能。例如,如果没有全局嵌入,基于素描或深度的生成通常会产生相对较暗的图像。另一个问题是,在出现不兼容的条件时可能会存在冲突。例如,当具有不同语义的图像和文本嵌入一起使用时,生成的结果通常会降低文本嵌入的权重。
以前的研究(Nichol等,2021;Ramesh等,2022;Saharia等,2022)强调了与图像生成模型相关的潜在风险,如具有欺骗性和有害内容。Composer 在可控性方面的改进进一步增加了这种风险。我们打算在将该工作公之于众之前,彻底调查 Composer 如何减轻滥用的风险,可能会创建一个经过筛选的版本。
附录
A. 架构详细信息
B. 条件模块
Composer 的全局条件模块如上图所示。对于全局条件,如 CLIP 句子嵌入、图像嵌入和颜色直方图,我们将它们投影并添加到时间步嵌入中。此外,我们将图像嵌入和颜色调色板投影到八个额外的标记,并将它们与 CLIP 单词嵌入连接起来,然后将它们用作交叉注意力层的上下文输入。
Composer 的局部条件模块如上图所示。对于局部条件,如分割图、深度图、素描、灰度图像和掩膜图像,我们使用堆叠卷积层将它们投影到具有与有噪图像相同空间尺寸的均匀维度嵌入中。随后,我们计算这些嵌入的总和并将结果连接到有噪图像。
S. 总结
S.1 主要贡献
本文提出 Composer,以组合性作为核心思想,首先将图像分解为代表性因素,然后使用所有这些因素作为扩散模型的条件,以重新组合输入。
S.2 架构和方法
分解。本文将图像分解成捕捉其各个方面的八个解耦表示(除此之外,用户可以自定义条件):标题、语义和风格、颜色、素描、实例、深度图、强度(灰度图)、掩模。
组合。使用扩散模型从一组表示中重新合成图像。具体来说,利用 GLIDE 架构并修改其条件模块。本文探索了两种不同的机制来使模型以表示为条件:
1) 全局条件:对于全局表示,包括 CLIP 句子嵌入、图像嵌入和色彩调色板,将它们投影并添加到时间步嵌入中。此外,将图像嵌入和色彩调色板投影到八个额外的标记中,并将它们与 CLIP 单词嵌入连接起来,然后用作 GLIDE 中交叉注意力的上下文。
2) 局部条件:对于局部表示,包括素描、分割掩码、深度图、强度图像和带掩码图像,使用堆叠的卷积层将它们投影到与有噪潜在具有相同空间大小的均匀维度嵌入中。然后,计算这些嵌入的总和,并将结果连接到有噪潜在,然后馈送到 UNet 中。
整体架构包括一个生成低分辨率图像的基础模型、两个上采样超分辨率模型,以及一个可以将标题映射到图像嵌入的先验模块。
S.3 应用
图像操控。
- 变化:以给定图像表示的特定子集作为条件,通过选择不同组合来生成变化的图像。
- 插值:控制两个图像之间插值的元素以及要保持不变的元素,从而产生多种插值方向。
- 重配置: 给定图像,基于其一组表示,以 DDIM 反演来获得其有噪潜在;然后,从有噪潜在开始,以一组修改的表示为条件进行 DDIM 采样,以获得图像的变体。
- 区域编辑:基于掩模的图像编辑。
传统任务:基于调色盘色上色、风格迁移、图像转换、姿势迁移、虚拟试穿等。