SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis
公众号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料)
目录
0. 摘要
1. 简介
2. 改进稳定扩散
2.1 架构与规模
2.2 微调节(Micro-Conditioning)
2.3 多纵横比(aspect-ratios)训练
2.4 改进的自动编码器
2.5 将所有内容放在一起
3. 未来的工作
参考
附录
B. 局限性
S. 总结
S.1 主要贡献
S.2 改进稳定扩散
0. 摘要
我们提出了 SDXL,一种用于文本到图像合成的潜在扩散模型(latent diffusion model,LDM)。 与之前版本的稳定扩散相比,SDXL 利用了三倍大的 UNet 主干:模型参数的增加主要是由于更多的注意力块和更大的交叉注意力上下文,因为 SDXL 使用第二个文本编码器。 我们设计了多种新颖的调节方案并在多种纵横比上训练 SDXL。 我们还引入了一种细化(refinement)模型,该模型用于使用事后(post-hoc)图像到图像技术提高 SDXL 生成的样本的视觉保真度。 我们证明,与以前版本的稳定扩散相比,SDXL 显示出显着提高的性能,并取得了与黑盒最先进的图像生成器相媲美的结果。 本着促进开放研究并提高大型模型训练和评估透明度的精神,我们提供对代码和模型权重的访问。
代码:https://github.com/Stability-AI/generative-models
模型权重:https://huggingface.co/stabilityai/
1. 简介
去年,自然语言 [50]、音频 [17] 和视觉媒体 [38、37、40、44、15、3、7] 等各种数据领域的深度生成模型取得了巨大飞跃。 在本报告中,我们重点关注后者并推出了 SDXL,这是稳定扩散的大幅改进版本。 稳定扩散是一种潜在的文本到图像扩散模型(DM),它是一系列最新进展的基础,例如 3D 分类 [43]、可控图像编辑 [54]、图像个性化 [10]、合成数据增强 [48]、图形用户界面原型 [51] 等。值得注意的是,应用范围非常广泛,涵盖音乐生成 [9] 和从功能磁共振成像(fMRI)脑扫描重建图像等多种领域 [49]。
用户研究表明,SDXL 始终大幅超越所有以前版本的稳定扩散(见图 1)。 在本报告中,我们提出了导致性能提升的设计选择,包括:
- 与之前的稳定扩散模型相比,UNet 骨干增加了 3 倍(第 2.1 节)
- 两种简单但有效的附加调节技术(第 2.2 节) 不需要任何形式的额外监督
- 一个单独的基于扩散的细化模型,该模型对 SDXL 产生的潜在编码应用噪声去噪过程 [28],以提高其样本的视觉质量(第 2.5 节 )。
视觉媒体创作领域的一个主要问题是,虽然黑盒模型通常被认为是最先进的,但其架构的不透明性阻碍了对其性能的忠实评估和验证。 这种透明度的缺乏阻碍了可重复性,抑制了创新,并阻止社区在这些模型的基础上进一步推动科学和艺术的进步。 此外,这些闭源策略使得以公正和客观的方式评估这些模型的偏见(biases)和局限性变得具有挑战性,这对于负责任和道德的部署至关重要。 通过 SDXL,我们发布了一个开放模型,该模型可实现与黑盒图像生成模型的竞争性能(见图 10 和图 11)。
2. 改进稳定扩散
在本节中,我们将介绍对稳定扩散架构的改进。 它们是模块化的,可以单独使用或一起使用来扩展任何模型。 尽管以下策略是作为潜在扩散模型(LDM)[38] 的扩展来实现的,但其中大多数也适用于其像素空间对应物。
2.1 架构与规模
从 Ho 等人 [14] 和宋等人 [47] 证明了 DM 是强大的图像合成生成模型的开创性作品开始,卷积UNet [39] 架构一直是基于扩散的图像合成的主要架构。 然而,随着基础 DM 的发展 [40,37,38],底层架构不断发展:从添加自注意力和改进的升级层 [5],到文本到图像合成的交叉注意力 [38] ,到纯基于 transformer 的架构 [33]。
我们遵循这一趋势,并遵循 Hoogeboom 等人 [16] 的观点,将 transformer 的大部分计算转移到 UNet 中的较低层特征。 特别是,与原始的稳定扩散架构相比,我们在 U-Net 内使用 transformer 块的异构分布:出于效率原因,我们省略了最高特征级别的 transformer 块,在较低级别使用 2 和 10 个块, 并完全删除 U-Net 中的最低级别(8×下采样)——参见表 1。表 1 比较 Stable Diffusion 1.x & 2.x 和 SDXL 的架构。 我们选择更强大的预训练文本编码器用于文本调节。 具体来说,我们将 OpenCLIP ViT-bigG [19] 与 CLIP ViT-L [34] 结合使用,其中我们沿着通道轴连接倒数第二个文本编码器输出 [1]。 除了使用交叉注意力层来根据文本输入来调节模型之外,我们还遵循[30],并另外根据 OpenCLIP 模型的池化文本嵌入来调节模型。 这些变化导致 U-Net 中的模型大小为 2.6B 参数,请参见表 1。文本编码器的参数总大小为817M。
2.2 微调节(Micro-Conditioning)
根据图像尺寸调节模型。 LDM 范式 [38] 的一个臭名昭著的缺点是,由于其两阶段架构,训练模型需要最小的图像大小。 解决此问题的两种主要方法是丢弃低于某个最小分辨率的所有训练图像(例如,稳定扩散 1.4/1.5 丢弃所有低于 512 像素的任何尺寸的图像),或者上采样太小的图像 。 然而,根据所需的图像分辨率,前一种方法可能会导致训练数据的很大一部分被丢弃,这可能会导致性能损失并损害泛化能力。 我们在图 2 中可视化了 SDXL 预训练数据集的此类效果。 对于这种特定的数据选择,丢弃低于 256^2 像素预训练分辨率的所有样本将导致丢弃 39% 的数据。 另一方面,第二种方法通常会引入可能泄漏到最终模型输出的上采样伪影,导致样本模糊等。
相反,我们建议根据原始图像分辨率来调节 UNet 模型,这在训练过程中是很容易获得的。 特别是,我们提供图像的原始(即在任何重新缩放之前)高度和宽度,作为对模型 c_size = (h_original, w_original) 的附加调节。 每个成分都使用傅立叶特征编码独立嵌入,并且这些编码被连接成单个向量,我们通过将其添加到时间步嵌入 [5] 来将其输入到模型中。
在推理时,用户可以通过此尺寸调节设置所需的图像表观分辨率。 显然(见图 3),模型已经学会将调节 c_size 与依赖于分辨率的图像特征相关联,可以利用这些特征来修改与给定提示相对应的输出的外观。 请注意,对于图 3 中所示的可视化,我们可视化 512 × 512 模型生成的样本(详细信息请参见第 2.5 节),因为在后续的用于最终 SDXL 模型的多纵横比(multi-aspect-ratio)精调之后,尺寸调节的效果不太清晰可见 。
我们通过在类条件 ImageNet [4] 上以空间大小 512^2 训练和评估三个 LDM 来定量评估这种简单但有效的调节技术的效果:
- 对于第一个模型(CIN-512-only),我们丢弃所有至少有一个边缘小于 512 像素的训练示例,这会导致训练数据集仅包含 70k 图像。
- 对于 CIN-nocond,我们使用所有训练示例,但没有大小调节。
- 此附加调节仅用于 CIN-size-cond。
训练后,我们为每个模型生成 50 个 DDIM 步骤 [46] 和(无分类器)指导尺度 5 [13] 的 5k 个样本,并计算 IS [42] 和 FID [12](针对完整验证集)。
- 对于 CIN-size-cond,我们生成的样本始终以 c_size = (512, 512) 为条件。表 2 总结了结果并验证了 CIN-size-cond 在两个指标上均优于基线模型。
- 我们将 CIN-512-only 的性能下降归因于,对小训练数据集的过度拟合而导致的泛化不良,
- 而 CIN-no-cond 样本分布中模糊样本模式的影响导致 FID 分数降低。
请注意,尽管我们发现这些经典的定量评分不适合评估基础(文本到图像)DM 的性能 [40,37,38](参见附录 F),但它们仍然是 ImageNet 上的合理指标,因为 FID 和 IS 的神经主干已经在 ImageNet 上进行了训练。
根据裁剪参数调整模型。图 4 的前两行说明了以前 SD 模型的典型故障模式: 合成对象可以被裁剪,例如左侧 SD 1-5 和 SD 2-1 示例中的猫头。 这种行为的直观解释是在模型训练期间使用随机裁剪:由于在 PyTorch [32] 等深度学习框架中整理批次需要相同大小的张量,因此典型的处理流程是 (i) 调整图像大小,使得最短尺寸与所需的目标尺寸匹配,然后(ii)沿长轴随机裁剪图像。 虽然随机裁剪是数据增强的一种自然形式,但它可能会泄漏到生成的样本中,从而导致上面显示的恶意影响。
为了解决这个问题,我们提出了另一种简单而有效的调节方法:在数据加载期间,我们统一采样裁剪坐标 c_top 和 c_left (整数,分别指定沿高度和宽度轴从左上角裁剪的像素数量)并通过傅立叶特征嵌入将它们作为调节参数引入到模型中,类似于上述的尺寸调节。 然后将串联的嵌入 c_crop 用作附加调节参数。 我们强调,该技术不仅限于 LDM,还可以用于任何 DM。 请注意,裁剪和尺寸调节可以很容易地结合起来。 在这种情况下,我们将沿通道维度连接特征嵌入,然后将其添加到 UNet 中的时间步嵌入中。算法 1 说明了如果应用这种组合,我们如何在训练期间对 c_crop 和 c_size 进行采样。
鉴于根据我们的经验,大规模数据集平均而言是以对象为中心的,因此我们在推理过程中设置 (c_top, c_left) = (0, 0),从而从训练模型中获取以对象为中心的样本。
见图5:通过调整 (c_top, c_left),我们可以成功模拟推理过程中的裁剪量。 这是条件增强的一种形式,并已以各种形式用于自回归模型 [20],最近又用于扩散模型 [21]。
虽然数据分桶(data bucketing) [31] 等其他方法成功地解决了相同的任务,但我们仍然受益于裁剪引起的数据增强,同时确保它不会泄漏到生成过程中 - 我们实际上利用它在图像合成过程中获得对数据的更多控制。 此外,它易于实现,可以在训练期间以在线方式应用,无需额外的数据预处理。
2.3 多纵横比(aspect-ratios)训练
现实世界的数据集包括大小和纵横比(aspect-ratios)差异很大的图像(参见图 2)。虽然文本到图像模型的常见输出分辨率是 512×512 或 1024×1024 像素的方形图像,但我们认为,考虑到横向(landscape)(例如 16:9)或纵向(portrait)格式屏幕的广泛分布和使用,这是一个相当不自然的选择。
受此启发,我们微调我们的模型以同时处理多个纵横比:我们遵循常见做法 [31] 并将数据划分为不同纵横比的桶,其中我们将像素数保持为尽可能接近 1024^2 像素,并改变高度和宽度,相应地为 64 的倍数。附录 I 中提供了用于训练的所有长宽比的完整列表。在优化期间,训练批次由来自同一存储桶的图像组成,并且我们在每个训练步骤中交替使用存储桶尺寸。 此外,模型接收桶尺寸(或目标尺寸)作为条件,表示为整数元组 c_ar = (h_tgt, w_tgt),其嵌入到傅立叶空间中,类似于上述尺寸调节和裁剪调节。
在实践中,我们在以固定的长宽比和分辨率对模型进行预训练后,将多纵横比训练作为微调阶段,并通过沿通道轴串联将其与第 2.2 节中介绍的调节技术相结合。附录 J 中的图 16 提供了用于此操作的 python 代码。 请注意,裁剪调节和多纵横比训练是互补的操作,并且裁剪调节仅在桶边界(通常为 64 像素)内起作用。 然而,为了便于实现,我们选择为多纵横比模型保留此控制参数。
2.4 改进的自动编码器
稳定扩散是一种 LDM,在自动编码器的预训练的、学到的(和固定的)潜在空间中运行。 虽然大部分语义合成是由 LDM [38] 完成的,但我们可以通过改进自动编码器来改善生成图像中的局部高频细节。 为此,我们以更大的批量大小(256 vs 9)训练用于原始稳定扩散的相同自动编码器架构,并另外使用指数移动平均值跟踪权重。 生成的自动编码器在所有评估的重建指标中都优于原始模型,请参见表 3。我们在所有实验中都使用这个自动编码器。
2.5 将所有内容放在一起
我们通过多阶段过程训练最终模型 SDXL。
- SDXL 使用第 2.4 节中的自动编码器和具有 1000 个步骤的离散时间扩散计划 [14, 45]。
- 首先,我们在内部数据集上预训练基本模型(参见表 1),其高度和宽度分布如图 2 所示,在分辨率为 256 × 256 像素、批量大小为 2048 的情况下进行了 600,000 个优化步骤 ,使用尺寸和裁剪调节,如第 2.2 节所述。 .
- 我们继续在 512 × 512 像素图像上进行另外 200,000 个优化步骤的训练。
- 最后利用多纵横比训练(第 2.3 节)结合 0.05 的偏移噪声 [11, 25] 水平,来在像素区域(∼ 1024 × 1024)不同纵横比训练模型(第 2.3 节,附录 I)。
细化阶段。根据经验,我们发现生成的模型有时会产生局部质量较低的样本,见图 6。为了提高样本质量,我们在同一潜在空间中训练一个单独的 LDM,该 LDM 专门用于高质量、高分辨率的数据 并对来自基模型的样本采用 SDEdit [28] 引入的加噪-去噪过程。 我们遵循 [1] 并在前 200 个(离散)噪声尺度上专门研究此细化模型。 在推理过程中,我们从基础 SDXL 渲染(render)潜在变量,并使用相同的文本输入,通过细化模型(见图 1)直接在潜在空间中对它们进行扩散和去噪。 我们注意到,此步骤是可选的,但可以提高详细背景和人脸的样本质量,如图 6 所示。
为了评估我们模型的性能(有和没有细化阶段),我们进行了用户研究,并让用户从以下四个模型中选择他们最喜欢的一代:SDXL、SDXL(带细化器)、Stable Diffusion 1.5 和 Stable Diffusion 2.1。 结果表明,具有细化阶段的 SDXL 是评级最高的选择,并且显着优于 Stable Diffusion 1.5 和 2.1(获胜率:带细化的 SDXL:48.44%,SDXL 基础:36.93%,Stable Diffusion 1.5:7.91% ,稳定扩散2.1:6.71%)。 请参见图 1,它还提供了完整管道的概述。 然而,当使用 FID 和 CLIP 分数等经典性能指标时,SDXL 相对于以前方法的改进并没有反映出来,如图 12 所示并在附录 F 中讨论。这与 Kirstain 等人的研究结果一致并进一步支持。 [23]。
3. 未来的工作
本报告对用于文本到图像合成的基础模型稳定扩散的改进进行了初步分析。 虽然我们在合成图像质量、提示依从性和构图方面取得了显着改进,但在下面,我们讨论了我们认为模型可以进一步改进的几个方面:
- 单阶段:目前,我们使用带有附加细化模型的两阶段方法从 SDXL 生成最佳样本。 这导致必须将两个大型模型加载到内存中,从而阻碍了可访问性和采样速度。 未来的工作应该研究提供相同或更好质量的单一阶段的方法。
- 文本合成:虽然扩展和更大的文本编码器(OpenCLIP ViT-bigG [19])有助于提高稳定扩散之前版本的文本渲染能力,但合并字节级分词器(tokenizers) [52, 27] 或简单地将模型缩放到较大的尺寸 [53, 40] 可以进一步改善文本合成。
- 架构:在这项工作的探索阶段,我们简要尝试了基于 Transformer 的架构,例如 UViT [16] 和 DiT [33],但没有发现立竿见影的好处。 然而,我们仍然乐观地认为,仔细的超参数研究最终将能够扩展到更大的变压器主导的架构。
- 蒸馏:虽然我们对原始稳定扩散模型的改进非常显着,但它们的代价是推理成本增加(VRAM 和采样速度)。 因此,未来的工作将侧重于减少推理所需的计算量,并提高采样速度,例如,通过指导 [29]、知识 [6,22,24] 和渐进式蒸馏 [41,2,29]。
- 我们的模型采用 [14] 的离散时间公式进行训练,并且需要偏移噪声 [11, 25] 以获得美观的结果。 Karras 等人 [21] 的 EDM 框架是未来模型训练的有希望的候选者,因为它的连续时间公式可以提高采样灵活性并且不需要噪声计划校正。
参考
Podell D, English Z, Lacey K, et al. SDXL: improving latent diffusion models for high-resolution image synthesis[J]. arXiv preprint arXiv:2307.01952, 2023.
附录
B. 局限性
虽然我们的模型在生成逼真图像和合成复杂场景方面表现出了令人印象深刻的能力,但重要的是要承认其固有的局限性。 了解这些限制对于进一步改进和确保负责任地使用该技术至关重要。
首先,模型在合成复杂的结构时可能会遇到挑战,例如人手(见图7,左上)。 尽管它已经接受了各种数据的训练,但人体解剖学的复杂性给实现一致的准确表示带来了困难。 这种限制表明需要进一步的缩放和训练技术,专门针对细粒度细节的合成。 发生这种情况的原因可能是手和类似物体在照片中出现的差异非常大,在这种情况下模型很难提取真实 3D 形状和物理限制的知识。
其次,虽然该模型在生成的图像中实现了显着的真实感水平,但值得注意的是,它并没有达到完美的照片真实感。 某些细微差别,例如微妙的灯光效果或微小的纹理变化,可能仍然不存在或在生成的图像中不太忠实地表示。 此限制意味着在需要高度视觉保真度的应用程序中仅依赖模型生成的视觉效果时应谨慎行事。
此外,该模型的训练过程严重依赖于大规模数据集,这可能会无意中引入社会和种族偏见。 因此,模型在生成图像或推断视觉属性时可能会无意中加剧这些偏差。
在样本包含多个对象或主题的某些情况下,模型可能会表现出一种称为“概念渗漏(bleeding)”的现象。 此问题表现为不同视觉元素的意外合并或重叠。 例如,在图 8 中看到,企鹅应该有“蓝色帽子”和“红色手套”,但生成时却带有蓝色手套和红色帽子。 识别和解决此类事件对于提高模型准确分离和表示复杂场景中单个对象的能力至关重要。 其根本原因可能在于使用的预训练文本编码器:首先,它们被训练为将所有信息压缩为单个标记,因此它们可能无法仅绑定正确的属性和对象,Feng 等人 [8] 通过将单词关系显式编入编码中来缓解这个问题。 其次,对比损失也可能导致这种情况,因为同一批次中需要具有不同绑定的负例 [35]。
此外,虽然我们的模型比之前的 SD 迭代取得了显着进步,但在渲染长而清晰的文本时仍然遇到困难。 有时,生成的文本可能包含随机字符或表现出不一致,如图 8 所示。克服这一限制需要进一步研究和开发增强模型文本生成能力的技术,特别是对于扩展的文本内容 - 例如,参见 Liu 等人 [27],他提出通过字符级文本标记器(tokenizer)增强文本渲染能力。 或者,缩放模型确实可以进一步改进文本合成 [53, 40]。
总之,我们的模型在图像合成方面表现出显着的优势,但它也不能免除某些限制。 与合成复杂结构、实现完美的真实感、进一步解决偏见、减少概念渗漏和改进文本渲染相关的挑战突出了未来研究和优化的途径。
S. 总结
S.1 主要贡献
- 本文提出了 SDXL,这是一种改进的用于文本到图像合成的潜在扩散模型(latent diffusion model,LDM)。
- 与之前版本的稳定扩散相比,SDXL 利用了三倍大的 UNet 主干:模型参数的增加主要是由于更多的注意力块和更大的交叉注意力上下文,因为 SDXL 使用第二个文本编码器。
- 设计了多种新颖的调节方案并在多种纵横比上训练 SDXL。
- 还引入了一种细化(refinement)模型,该模型用于使用事后(post-hoc)图像到图像技术提高 SDXL 生成的样本的视觉保真度。
S.2 改进稳定扩散
架构。
- 将 transformer 的大部分计算转移到 UNet 中的较低层特征。
- 选择更强大的预训练文本编码器用于文本调节。
微调节。
- 尺寸调节:LDM 的一个的缺点是限制训练模型最小的图像尺寸。 解决此问题的两种主要方法是丢弃低于某个最小分辨率的所有训练图像,或者上采样太小的图像。前者可能会导致性能损失并损害泛化,后者可能会引入上采样伪影,导致样本模糊。可使用尺寸调节解决这个问题。
- 裁剪调节:虽然随机裁剪是数据增强的一种自然形式,但它可能会泄漏到生成的样本中,从而影响生成图像。可使用裁剪调节解决这个问题。
- 裁剪调节和尺寸调节是可以结合使用。
多纵横比训练。
- 虽然文本到图像模型的常见输出分辨率是 512×512 或 1024×1024 像素的方形图像,但在现实中这是一个相当不自然的选择。
- 在实践中,在以固定的长宽比和分辨率对模型进行预训练后,将多纵横比训练作为微调阶段,并通过沿通道轴串联将其与微调节技术相结合。
改进的自动编码器。
- 可以通过改进自动编码器来改善生成图像中的局部高频细节。
- 以更大的批量大小(256 vs 9)训练用于原始稳定扩散的相同自动编码器架构,并另外使用指数移动平均值跟踪权重
细化模型。
- 生成的模型有时会产生局部质量较低的样本。
- 为了提高样本质量,在同一潜在空间中训练一个单独的 LDM,该 LDM 专门用于高质量、高分辨率的数据,并对来自基模型的样本采用 SDEdit 引入的加噪-去噪过程。
- 在推理过程中,从基础 SDXL 渲染(render)潜在变量,并使用相同的文本输入,通过细化模型直接在潜在空间中对它们进行扩散和去噪。