扩散模型课程文档

第 4 单元:深入了解扩散模型

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

第 4 单元:深入了解扩散模型

欢迎来到 Hugging Face 扩散模型课程的第 4 单元!在本单元中,我们将探讨最新研究中出现的对扩散模型的诸多改进和扩展。与之前的单元相比,本单元的代码量会少一些,旨在为您提供进一步研究的起点。

开始本单元 :rocket:

以下是本单元的步骤:

  • 请确保您已经注册本课程,以便在课程增加新单元时收到通知。
  • 请通读以下材料,了解本单元涵盖的不同主题的概览。
  • 通过链接的视频和资源,深入研究任何特定的主题。
  • 探索演示笔记本,然后阅读“下一步”部分,了解一些项目建议。

:loudspeaker: 别忘了加入 Discord,您可以在 #diffusion-models-class 频道中讨论课程材料并分享您的创作。

目录

通过蒸馏加速采样

渐进式蒸馏是一种技术,它利用现有的扩散模型来训练一个新版本的模型,这个新模型在推理时需要更少的步骤。“学生”模型的权重从“教师”模型的权重初始化。在训练过程中,教师模型执行两个采样步骤,学生模型则尝试在一个步骤内匹配最终的预测结果。这个过程可以重复多次,前一次迭代的学生模型成为下一阶段的教师模型。最终得到的模型可以在比原始教师模型少得多的步骤(通常是 4 或 8 步)内生成质量不错的样本。其核心机制在提出该想法的论文中的这张图中有所说明。

image

渐进式蒸馏图解(来自论文

利用现有模型来“教导”新模型的想法可以扩展到创建引导模型,其中教师模型使用无分类器引导技术,而学生模型必须学会在一个步骤内,根据指定目标引导尺度的额外输入,产生等效的输出。这进一步减少了生成高质量样本所需的模型评估次数。这段视频概述了这种方法。

注意:Stable Diffusion 的蒸馏版本可以在这里使用。

关键参考文献

训练改进

为了改进扩散模型的训练,已经开发了一些额外的技巧。在本节中,我们试图捕捉近期论文中的核心思想。不断有研究涌现出更多的改进,所以如果您看到一篇您认为应该加在这里的论文,请告诉我们!

image 图 2 来自 ERNIE-ViLG 2.0 论文

关键训练改进

  • 调整噪声调度、损失权重和采样轨迹以实现更高效的训练。Karras 等人撰写的《阐明基于扩散的生成模型的设计空间》(Elucidating the Design Space of Diffusion-Based Generative Models)是一篇探讨这些设计选择的优秀论文。
  • 在多种宽高比上进行训练,如课程发布会上的这段视频所述。
  • 级联扩散模型,即先训练一个低分辨率模型,然后再训练一个或多个超分辨率模型。这种方法被用于 DALLE-2、Imagen 等模型中以生成高分辨率图像。
  • 更好的条件设置,整合丰富的文本嵌入(Imagen 使用了一个名为 T5 的大型语言模型)或多种类型的条件(eDiffi)。
  • “知识增强”——在训练过程中整合预训练的图像字幕和物体检测模型,以创建信息更丰富的字幕并产生更好的性能(ERNIE-ViLG 2.0)。
  • “去噪专家混合”(MoDE)——为不同的噪声水平训练模型的不同变体(“专家”),如上图 ERNIE-ViLG 2.0 论文中的插图所示。

关键参考文献

对生成和编辑的更多控制

除了训练方面的改进,采样和推理阶段也出现了几项创新,其中许多方法可以为现有的扩散模型增加新功能。

image 由“词语作画”(paint-with-words)生成的样本(eDiffi

视频“使用扩散模型编辑图像”概述了使用扩散模型编辑现有图像的不同方法。可用的技术可以分为四个主要类别:

1) 添加噪声,然后用新的提示进行去噪。这是 img2img 工作流背后的思想,该思想在各种论文中得到了修改和扩展。

论文InstructPix2Pix: 学习遵循图像编辑指令值得注意,因为它使用了一些上述图像编辑技术来构建一个包含图像对和图像编辑指令(由 GPT3.5 生成)的合成数据集,以训练一个能够根据自然语言指令编辑图像的新模型。

视频

image 来自 Imagen Video 生成的示例视频的静止帧

视频可以表示为图像序列,扩散模型的核心思想可以应用于这些序列。最近的研究集中在寻找合适的架构(例如作用于整个序列的“3D UNet”)以及高效处理视频数据。由于高帧率视频比静态图像涉及更多的数据,目前的方法倾向于首先生成低分辨率和低帧率的视频,然后应用空间和时间上的超分辨率来产生最终的高质量视频输出。

关键参考文献

音频

image

Riffusion 生成的频谱图(图片来源

虽然已经有一些工作直接使用扩散模型生成音频(例如 DiffWave),但迄今为止最成功的方法是将音频信号转换成一种叫做频谱图的东西,它有效地将音频“编码”成一个二维“图像”,然后可以用来训练我们习惯于用于图像生成的那种扩散模型。生成的频谱图随后可以使用现有方法转换回音频。最近发布的 Riffusion 就是基于这种方法,它对 Stable Diffusion 进行了微调,以根据文本生成频谱图 - 点击这里试用

音频生成领域发展极其迅速。在过去的一周里(在撰写本文时),至少有 5 项新进展被宣布,这些进展在下面的列表中用星号标记。

关键参考文献

新的架构和方法 - 迈向“迭代优化”

image

冷扩散(Cold Diffusion)论文中的图 1

我们正在逐渐超越“扩散”模型最初的狭隘定义,迈向一类更通用的模型,这些模型执行迭代优化,即通过逐步逆转某种形式的损坏(如前向扩散过程中的高斯噪声添加)来生成样本。“冷扩散”论文证明,许多其他类型的损坏也可以被迭代地“撤销”以生成图像(如上图所示),而最近基于 Transformer 的方法已经证明了令牌替换或掩码作为加噪策略的有效性。

image

MaskGIT 的流程图

作为许多现有扩散模型核心的 UNet 架构也正在被不同的替代方案所取代,其中最引人注目的是各种基于 Transformer 的架构。在使用 Transformer 的可扩展扩散模型(DiT)中,一个 Transformer 被用来替代 UNet,用于一个相当标准的扩散模型方法,并取得了优异的结果。循环接口网络(Recurrent Interface Networks)应用了一种新颖的基于 Transformer 的架构和训练策略,以追求更高的效率。MaskGITMUSE 使用 Transformer 模型来处理图像的标记化表示,尽管 Paella 模型证明 UNet 也可以成功地应用于这些基于标记的范式中。

随着每一篇新论文的发表,更高效的方法正在被开发出来,可能还需要一段时间我们才能看到这类迭代优化任务的性能巅峰。还有很多东西有待探索!

关键参考文献

动手实践笔记本

章节 Colab Kaggle Gradient Studio Lab
DDIM 反演 Open In Colab Kaggle Gradient Open In SageMaker Studio Lab
音频扩散 Open In Colab Kaggle Gradient Open In SageMaker Studio Lab

在本单元中,我们已经涵盖了非常多的不同思想,其中许多都值得在未来开设更详细的后续课程。目前,您可以通过我们准备的动手实践笔记本选择两个主题进行学习。

  • DDIM 反演展示了如何使用一种称为反演的技术来编辑使用现有扩散模型的图像。
  • 音频扩散介绍了频谱图的概念,并展示了一个在特定音乐流派上微调音频扩散模型的最小示例。

下一步?

这是本课程目前的最后一个单元,这意味着接下来要学什么取决于您!请记住,您可以随时在 Hugging Face 的 Discord 上提问和讨论您的项目。我们期待看到您的创作 🤗。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.