ToB企服应用市场:ToB评测及商务社交产业平台

标题: Stable Diffusion 模型演进:LDM、SD 1.0, 1.5, 2.0、SDXL、SDXL-Turbo 等 [打印本页]

作者: 伤心客    时间: 2024-7-31 11:09
标题: Stable Diffusion 模型演进:LDM、SD 1.0, 1.5, 2.0、SDXL、SDXL-Turbo 等
节前,我们星球组织了一场算法岗技术&口试讨论会,约请了一些互联网大厂朋友、到场社招和校招口试的同学。
针对算法岗技术趋势、大模型落地项目履历分享、新手如何入门算法岗、该如何准备、口试常考点分享等热门话题举行了深入的讨论。
合集:
连续火爆!!!《AIGC 口试宝典》已圈粉无数!

一、背景

这里我们继承介绍 Stable Diffusion 相干的三个图像生成工作,Latent Diffusion Model(LDM)、SDXL 和 SDXL-Turbo。这三个工作的紧张作者根本雷同,早期是在 CompVis 和 Runway 等发表,后两个紧张由 Stability AI 发表。
LDM 对应的论文为:[2112.10752] High-Resolution Image Synthesis with Latent Diffusion Models
LDM 对应的代码库为:High-Resolution Image Synthesis with Latent Diffusion Models
SDXL 对应的论文为:[2307.01952] SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis
SDXL 对应的代码库为:Generative Models by Stability AI
SDXL-Turbo 对应的论文为:[2311.17042] Adversarial Diffusion Distillation
SDXL-Turbo 对应的代码库为:Generative Models by Stability AI

二、择要

2021 年 05 月 OpenAI 发表 Diffusion Models Beat GANs,扩散模型(Diffusion Model,DM)的结果开始超越传统的 GAN 模型,进一步推进了 DM 在图像生成范畴的应用。
不过早期的 DM 都直接作用于像素空间,因此如果要优化一个强大的 DM 通常需要耗费数百 GPU 天时,并且因为需要迭代多步,推理的本钱也很高。为了实现在有效的计算资源上练习 DM,同时保持其质量和灵活性,作者提出将 DM 应用于强大的预练习 AutoEncoder 的隐空间(Latent Space),这也就是为什么提出的模型叫 LDM。与以前的工作相比,这种方式练习 DM 初次实现了在低沉复杂性和保留细节之间的平衡,并大大进步视觉的逼真度。
别的,作者还在模型中引入交叉注意力层,可以将文本、界限框等条件很方便地引入到模型中,将 DM 转化为强大而灵活的生成器,实现高分辨率的生成。作者提出的 LDM 模型同样在图像修复、类别条件生成等方面取得很好的结果,同时与基于像素空间的扩散模型相比,大大低沉计算要求。
如下图 Figure 5 所示为其文本引导图像生成的结果:

在 Stable Diffusion(LDM)的底子上,SDXL 将 U-Net 主干扩大了三倍:模型参数增加紧张是使用了第二个 Text Encoder,因此也就使用更多的 Attention Block 和 Cross Attention 上下文。别的,作者设计了多分辨率练习方案,在多个差别长宽比的图像上练习。作者还引入了一个细化模型,用于进一步提升生成图像的视觉逼真度。结果表明,与之前版本的 Stable Diffusion 相比,SDXL 的性能有了显著提升,并取得与其他非开源模型相称的结果。此次的模型和代码同样完全开源。
如下图所示为 SDXL 生成的图像:

在 SDXL 的底子上,作者提出了对抗性扩散蒸馏技术(Adversarial Diffusion Distillation,ADD),将扩散模型的步数低沉到 1-4 步,同时保持很高的图像质量。结果表明,模型在 1 步生成中显着优于现有的几步生成方法,并且仅用 4 步就超越了最先进的 SDXL 的性能。练习出的模型称为 SDXL-Turbo。
如下图 Figure 1 所示为 SDXL-Trubo 生成的图像:

三、Latent Diffusion Model(LDM)

3.1. LDM 模型概览

LDM 和其他扩散生成模型结构雷同,团体来说包罗三个组件:


3.2. AutoEncoder

AutoEncoder 中的 Encoder 用于对图像 x 举行压缩,假设输入图像分辨率为 HxW,则 f 压缩率对应的 latent code 巨细为 H/f x W/f。也就是说,如果图像分辨率为为 512x512,则 f=4 的压缩率对应的 latent code 巨细为 64x64,也就是 z 的巨细为 64x64。针对差别的压缩率 f,作者也举行了一系列实行,对应的模型为 LDM-{f},总共有 LDM-1,LDM-2,LDM-4,LDM-8,LDM-16,LDM-32。需要阐明的是,LDM-1 相称于没有压缩,也就是直接作用于像素空间,LDM-32 相称于 32 倍压缩,512x512 分辨率图像对应的 latent code 只有 16x16。
作者在类别条件生成任务上对几种压缩比举行了实行验证,如下图 Figure 6 所示,可见 LDM-4、LDM-8、LDM-16 得到最好的平衡。LDM-32 的压缩率太高,反而影响了生成质量:

如下图 Table 6 所示,作者同样在图像修复任务上验证了差别压缩率、Cross Attention 的影响,可以看出 LDM-4 的练习、推理吞吐相比 LDM-1 有显着提升,并且 Attention 对吞吐的影响也不大。同时 LDM-4 还得到更好的结果(更低的 FID):

3.3. Latent Diffusion Models

本文中作者使用的 U-Net 模型是基于 OpenAI Diffusion Models Beat GANs 中的 Ablated U-Net 修改而来,具体来说是将此中的 Self-Attention 更换为 T 个 Transformer block,每个 block 中包罗一个 Self-Attention,一个 MLP 和一个 Cross-Attention,如下图所示,此中的 Cross Attention 就是用于和其他条件的 embedding 举行交叉融合:

3.4. Conditioning 机制

LDM 支持多种条件类型,比如类别条件、文本条件、分割图条件、界限框条件等。
对于文本条件,可以使用常用的文本 Encoder,比如 Bert 模型,或者 CLIP 的 Text Encoder,其首先将文本转换为 Token,然后颠末模型后每个 Token 都会对应一个 Token embedding,以是文本条件编码后变为一个 Token embedding 序列。


对于 layout 条件,比如常见的界限框,每个界限框都会以(l,b,c)的方式编码,此中 l 体现左上坐标,b 体现右下坐标,c 体现类别信息。

对于类别条件,每个类别都会以一个可学习的 512 维向量体现,同样通过 Cross-Attention 机制融合。

对于分割图条件,可以将图像插值、卷积后编码为 feature map,然后作为条件。


此中文本条件和 layout 条件都通过 Transformer Encoder 编码,对应的超参如下图 Table 17 所示,也就是文本最多只能编码为 77 个 Token,Layout 最多编码为 92 个 Token:

所谓的 layout-to-image 生成如下图所示,给定多个界限框,每个界限框有个类别信息,生成的图像要在对应的位置生成对应的目标:

3.5. 实行结果

3.5.1. 无条件生成

如下图 Table 1 所示,作者在多个任务上评估了 LDM-4 和 LDM-8 的无条件图像生成结果,可以看出,在大部分任务上都得到了很不错的结果:

3.5.2. 类别条件生成

如下图 Table 3 所示,作者同样在 ImageNet 上与 ADM(Diffusion Model Beat GANs)等模型举行了类别条件图像生成对比,可见在 FID 和 IS 指标上得到了最优或次优的结果:

3.5.3. LDM-BSR

作者同样将 BSR-degradation 应用到超分模型的练习,得到了更好的结果,BSR degradation Pipeline 包罗 JPEG 压缩噪声、相机传感器噪声、针对下采样的差别图像插值方法,高斯含糊核以及高斯噪声,并以随机顺序应用于图像(具体可参考代码 https://github.com/CompVis/stable-diffusion/blob/main/ldm/modules/image_degradation/bsrgan_light.py),最终得到了不错的结果:

3.6. 计算需求

作者与其他模型对比了练习和推理的计算需求和相干的参数目、FID、IS 等指标,提出的模型在更小的代价下得到更好的结果:

四、SDXL

4.1. SDXL 模型概览

如下图所示,SDXL 相比 SD 紧张的修改包罗(模型总共 2.6B 参数目,此中 text encoder 817M 参数目):



4.2. 微条件(Micro-Conditioning)

4.2.1. 以图像巨细作为条件

在 SD 的练习范式中有个显着的缺陷,对图像巨细有最小长宽的要求。针对这个问题有两种方案:


针对这种环境,作者提出将原始图像分辨率作用于 U-Net 模型,并提供图像的原始长和宽(csize = (h, w))作为附加条件。并使用傅里叶特性编码,然后会拼接为一个向量,把它扩充到时间步长 embedding 中并一起输入模型。
如下图所示,在推理时指定差别的长宽即可生成相应的图像,(64,64)的图像最含糊,(512, 512)的图像最清晰:

4.2.2. 以裁剪参数作为条件

别的,以前的 SD 模型存在一个比力典范的问题:生成的物体不完备,像是被裁剪过的,如下图 SD1.5 和 SD 2.1 的结果。作者猜测这可能和练习阶段的随机裁剪有关,思量到这个因素,作者将裁剪的左上坐标(top, left)作为条件输入模型,和 size 雷同。如下图 Figure 4 中 SDXL 的结果,其生成结果都更加完备:

如下图 Figure 5 所示,在推理阶段也可以通过裁剪坐标来控制位置关系:

4.3. 多分辨率练习

真实世界的图像会包罗差别的巨细和长宽比,而文本到模型生成的图像分辨率通常为 512x512 或 1024x1024,作者以为这不是一个自然的选择。受此启发,作者以差别的长宽比来微调模型:首先将数据分别为差别长宽比的桶,此中尽可能包管总像素数接近 1024x1024 个,同时以 64 的整数倍来调整高度和宽度。如下图所示为作者使用的宽度和高度。在练习过程中,每次都从同样的桶中选择一个 batch,并在差别的桶间瓜代。别的,和之前的 size 雷同,作者会将桶的高度和宽度 (h, w)作为条件,经傅里叶特性编码后添加到时间步 embedding 中:

4.4. 练习

SDXL 模型的练习包罗多个步骤:

根据以往的履历,作者发现所得到的的模型偶然偶尔会生成局部质量比力差的图像,为了解决这个问题,作者在同一隐空间练习了一个独立的 LDM(Refiner),该 LDM 专门用于高质量、高分辨率的数据。在推理阶段,直接基于 Base SDXL 生成的 Latent code 继承生成,并使用雷同的文本条件(当然,此步骤是可选的),实行证明可以进步背景细节以及人脸的生成质量。
4.5. 实行结果

如下图所示,作者基于用户评估,最终带有 Refiner 的 SDXL 得到了最高分,并且 SDXL 结果显着优于 SD 1.5 和 SD 2.1。

如下图 Figure 10 所示为 SDXL(没有 Refiner) 和 Midjourney 5.1 的对比结果,可见 SDXL 的结果略胜一筹:

如下图 Figure 11 所示为 SDXL(带有 Refiner) 和 Midjourney 5.1 的对比结果,可见 SDXL 的结果同样略胜一筹:

五、SDXL-Turbo

5.1. SDXL-Turbo 方法

SDXL-Turbo 在模型上没有什么修改,紧张是引入蒸馏技术,以便镌汰 LDM 的生成步数,提升生成速率。大抵的流程为:


需要阐明的是,通常 ADD-student 模型需要预练习过程,然后再蒸馏。别的,Tstudent 的 N 比力小,作者设置为 4,而 Tteacher 的 N 比力大,为 1000。也就是学生模型可能只加噪 1,2,3,4 步,而西席模型可能加噪 1-1000 步。
别的,作者在练习中还用了其他技巧,比如使用了 zero-terminal SNR;西席模型不是直接作用于原始图像 x0,而是作用于学生模型恢复出的图像 xθ,否则会出现 OOD(out of distribution) 问题;作者还应用了 Score Distillation Loss,并且与最新的 noise-free score distillation 举行了对比。
5.2. 消融实行

作者举行了一系列的消融实行:


5.3. 实行结果

如下图所示,作者与差别的蒸馏方案举行了对比,本文提出的方案只需一步就能得到最优的 FID 和 CLIP 分数:

如下图 Figure 5 和 Figure 6 所示为性能和速率的对比,ADD-XL 1 步比 LCM-XL 4 步的结果更好,同时 ADD-XL 4 步可以超越 SDXL 50 步的结果,总之,ADD-XL 得到了最佳性能:


六、演进

6.1. Latent Diffusion

Stable Diffusion 之前的版本,对应的正是论文的开源版本,位于代码库 High-Resolution Image Synthesis with Latent Diffusion Models 中。
该版本发布于 2022 年 4 月,紧张包罗三个模型:

代码实现参考了 OpenAI 的 Diffusion Models Beat GANs 代码实现。
6.2. Stable Diffusion V1

Stable Diffusion 的第一个版本,特指文生图扩散模型,位于代码库 GitHub - CompVis/stable-diffusion: A latent text-to-image diffusion model 中。
该版本发布于 2022 年 8 月,该模型包罗 2 个子模型:

模型首先在 256x256 的分辨率下练习,然后在 512x512 的分辨率下微调。总共包罗 4 个子版本:

对应的 FID 和 CLIP 分数如下图所示,可见从 v1-1 到 v1-2,再到 v1-3 提升都很显着,v1-3 和 v1-4 差距不大:

6.3. Stable Diffusion V1.5

Stable Diffusion 的 V1.5 版本,由 runway 发布,位于代码库 GitHub - runwayml/stable-diffusion: Latent Text-to-Image Diffusion 中。
该版本发布于 2022 年 10 月,紧张包罗两个模型:

对应的 FID 和 CLIP 分数如下图所示,可以看出,v1.5 相比 v1.4 的提升也不是很显着:

如下图所示为图像修复的示例:

6.3. Stable Diffusion V2

Stable Diffusion 的 V2 版本,由 Stability-AI 发布,位于代码库 GitHub - Stability-AI/stablediffusion: High-Resolution Image Synthesis with Latent Diffusion Models 中。
V2 包罗三个子版本,分别为 v2.0,v2.1 和 Stable UnCLIP 2.1:

如下图所示为 v2.0 和 v2.0-v 与 v1.5 的对比,可见其都有显着提升:

6.4. Stable Diffusion XL

Stable Diffusion 的 XL 版本,由 Stability-AI 发布,位于代码库 Generative Models by Stability AI。
该版本发布于 2023 年 06 月,紧张包罗两个模型:

2023 年 07 月发布 1.0 版本,同样对应两个模型:

2023 年 11 月发表 SDXL-Trubo 版本,也就是优化加速的版本。
七、参考链接


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4