扩散模型课程文档

单元 1:扩散模型简介

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

单元 1:扩散模型简介

欢迎来到 Hugging Face 扩散模型课程的单元 1!在本单元中,你将学习扩散模型工作的基本原理,以及如何使用 🤗 Diffusers 库创建你自己的扩散模型。

开始本单元 :rocket:

以下是本单元的步骤:

  • 请确保你已注册本课程,以便在新材料发布时收到通知。
  • 请阅读下方的介绍性材料,以及任何你感兴趣的附加资源。
  • 查看下方的 Diffusers 简介 笔记本,将理论与 🤗 Diffusers 库的实践相结合。
  • 使用笔记本或链接的训练脚本,训练并分享你自己的扩散模型。
  • (可选)如果你对从零开始的最小化实现感兴趣,并想探索其中涉及的不同设计决策,可以深入学习 从零开始实现扩散模型 笔记本。
  • (可选)观看此视频,以非正式的方式了解本单元的材料。

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

什么是扩散模型?

扩散模型是“生成模型”这一算法家族中一个相对较新的成员。生成模型的目标是学习在给定一些训练样本的情况下,**生成**数据,例如图像或音频。一个好的生成模型会创造出**多样化**的输出,这些输出与训练数据相似但并非完全复制。扩散模型是如何实现这一点的呢?为了便于说明,我们以图像生成为例。


图片来自 DDPM 论文 (https://arxiv.org/abs/2006.11239)。

扩散模型成功的秘诀在于扩散过程的迭代性。生成过程从随机噪声开始,但在多个步骤中逐渐优化,直到最终生成一张输出图像。在每一步,模型都会估计如何从当前输入得到一个完全去噪的版本。然而,由于我们每一步只做微小的改变,因此早期阶段(预测最终输出极其困难)的任何估计错误都可以在后续的更新中得到纠正。

与其他类型的生成模型相比,训练扩散模型相对简单。我们重复以下步骤:1) 从训练数据中加载一些图像 2) 添加不同程度的噪声。请记住,我们希望模型能够很好地估计如何“修复”(去噪)无论是极其嘈杂的图像还是接近完美的图像。3) 将输入的噪声版本送入模型 4) 评估模型在去噪这些输入方面的表现 5) 利用这些信息更新模型权重

要用训练好的模型生成新图像,我们从一个完全随机的输入开始,反复将其送入模型,每次根据模型的预测进行少量更新。正如我们将看到的,有许多采样方法试图简化这个过程,以便我们能用尽可能少的步骤生成高质量的图像。

我们将在单元 1 的动手实践笔记本中详细展示这些步骤。在单元 2 中,我们将探讨如何修改这个过程,通过额外的条件(如类别标签)或引导等技术来增加对模型输出的控制。单元 3 和单元 4 将探索一个极其强大的扩散模型,名为 Stable Diffusion,它可以根据文本描述生成图像。

动手实践笔记本

到这里,你已经掌握了足够的基础知识,可以开始使用附带的笔记本了!这里的两个笔记本从不同角度阐述了相同的概念。

章节 Colab Kaggle Gradient Studio Lab
Diffusers 简介 Open In Colab Kaggle Gradient Open In SageMaker Studio Lab
从零开始实现扩散模型 Open In Colab Kaggle Gradient Open In SageMaker Studio Lab

Diffusers 简介 中,我们使用 diffusers 库的构建模块展示了上述的不同步骤。你将很快学会如何在你选择的任何数据上创建、训练和采样你自己的扩散模型。在完成该笔记本后,你将能够阅读和修改示例训练脚本,以训练扩散模型并与世界分享!该笔记本还介绍了与本单元相关的主要练习,我们将共同尝试找出不同规模扩散模型的良好“训练方案”——更多信息请参见下一节。

从零开始实现扩散模型 中,我们展示了相同的步骤(向数据添加噪声、创建模型、训练和采样),但尽可能简单地用 PyTorch 从头开始实现。然后,我们将这个“玩具示例”与 diffusers 版本进行比较,指出两者的不同之处以及改进的地方。这里的目标是让你熟悉不同的组件以及它们背后的设计决策,这样当你看一个新的实现时,你就能快速识别出关键思想。

项目时间

既然你已经掌握了基础知识,就来试试训练一个或多个扩散模型吧!Diffusers 简介 笔记本的末尾提供了一些建议。请务必与社区分享你的结果、训练方案和发现,以便我们共同找出训练这些模型的最佳方法。

一些附加资源

带注释的扩散模型非常深入地讲解了 DDPM 背后的代码和理论,用数学和代码展示了所有不同的组件。它还链接了一些论文以供进一步阅读。

Hugging Face 关于无条件图像生成的文档,提供了一些如何使用官方训练示例脚本训练扩散模型的示例,包括展示如何创建你自己的数据集的代码。

AI Coffee Break 关于扩散模型的视频:https://www.youtube.com/watch?v=344w5h24-h8

Yannic Kilcher 关于 DDPMs 的视频:https://www.youtube.com/watch?v=W-O7AZNzbzQ

发现了更多优质资源?告诉我们,我们会将它们添加到此列表中。

< > 在 GitHub 上更新

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