扩散课程文档
第一单元:扩散模型介绍
并获取增强的文档体验
开始使用
第一单元:扩散模型介绍
欢迎来到 Hugging Face 扩散模型课程的第一单元!在本单元中,您将学习扩散模型如何工作的基本原理,以及如何使用 🤗 Diffusers 库创建您自己的扩散模型。
开始本单元 :rocket:
以下是本单元的步骤
- 请确保您已注册本课程,以便在新材料发布时收到通知。
- 阅读下面的介绍性材料以及任何您觉得有趣的额外资源。
- 查看下面的Diffusers 介绍 notebook,将理论与 🤗 Diffusers 库的实践相结合。
- 使用 notebook 或链接的训练脚本训练并分享您自己的扩散模型。
- (可选) 如果您有兴趣查看从零开始的最小实现,并探索所涉及的不同设计决策,请深入研究从零开始的扩散模型 notebook。
- (可选) 观看此视频,了解本单元材料的非正式讲解。
:loudspeaker: 别忘了加入Discord,您可以在 #diffusion-models-class
频道中讨论材料并分享您的作品。
什么是扩散模型?
扩散模型是“生成模型”算法组中相对较新的成员。生成建模的目标是学习生成数据,例如图像或音频,给定一些训练示例。一个好的生成模型将创建一组多样化的输出,这些输出类似于训练数据,但不是完全相同的副本。扩散模型是如何实现这一点的呢?为了说明问题,让我们关注图像生成的情况。
来自 DDPM 论文的图 (https://arxiv.org/abs/2006.11239)。
扩散模型成功的秘诀在于扩散过程的迭代性质。生成始于随机噪声,但经过多个步骤逐渐细化,直到出现输出图像。在每个步骤中,模型估计我们如何从当前输入转变为完全去噪的版本。但是,由于我们在每个步骤只进行少量更改,因此在早期阶段(预测最终输出极其困难)对此估计的任何错误都可以在后续更新中得到纠正。
与其他类型的生成模型相比,训练模型相对简单。我们重复执行以下操作:1) 从训练数据中加载一些图像 2) 添加不同程度的噪声。请记住,我们希望模型在估计如何“修复”(去噪)极度嘈杂的图像和接近完美的图像方面做得很好。3) 将输入的嘈杂版本馈送到模型中 4) 评估模型在去噪这些输入方面的效果 5) 使用此信息更新模型权重
为了使用训练好的模型生成新图像,我们从完全随机的输入开始,并重复将其输入模型,每次根据模型预测少量更新它。正如我们将看到的,有许多采样方法试图简化此过程,以便我们可以尽可能少地步骤生成高质量的图像。
我们将在第一单元的动手 notebook 中详细展示这些步骤中的每一个。在第二单元中,我们将研究如何修改此过程,通过额外的条件控制(例如类别标签)或诸如引导之类的技术来增加对模型输出的额外控制。第三单元和第四单元将探索一种极其强大的扩散模型,称为 Stable Diffusion,它可以根据文本描述生成图像。
动手 Notebook
至此,您已经了解了足够多的知识,可以开始使用随附的 notebook 了!这里的两个 notebook 以不同的方式探讨了相同的概念。
章节 | Colab | Kaggle | Gradient | Studio Lab |
---|---|---|---|---|
Diffusers 介绍 | ||||
从零开始的扩散模型 |
在Diffusers 介绍中,我们使用 diffusers 库的构建块展示了上述不同的步骤。您将很快了解如何在您选择的任何数据上创建、训练和采样您自己的扩散模型。在 notebook 结束时,您将能够阅读和修改示例训练脚本,以训练扩散模型并与世界分享!此 notebook 还介绍了与本单元相关的主要练习,我们将共同尝试找出在不同规模下训练扩散模型的良好“训练配方” - 请参阅下一节了解更多信息。
在从零开始的扩散模型中,我们展示了相同的步骤(向数据添加噪声、创建模型、训练和采样),但使用 PyTorch 从零开始尽可能简单地实现。然后,我们将这个“玩具示例”与 diffusers 版本进行比较,注意到两者之间的区别以及改进之处。这里的目标是熟悉不同的组件和构成它们的设计决策,以便当您查看新的实现时,可以快速识别关键思想。
项目时间
既然您已经掌握了基础知识,那就尝试训练一个或多个扩散模型吧!Diffusers 介绍 notebook 的末尾包含了一些建议。请务必与社区分享您的结果、训练配方和发现,以便我们可以共同找出训练这些模型的最佳方法。
一些额外的资源
带注释的扩散模型是对 DDPM 背后的代码和理论的非常深入的讲解,其中包含数学和代码,展示了所有不同的组件。它还链接到许多论文以供进一步阅读。
Hugging Face 关于无条件图像生成的文档,其中包含如何使用官方训练示例脚本训练扩散模型的一些示例,包括显示如何创建您自己的数据集的代码。
关于扩散模型的 AI Coffee Break 视频:https://www.youtube.com/watch?v=344w5h24-h8
Yannic Kilcher 关于 DDPM 的视频:https://www.youtube.com/watch?v=W-O7AZNzbzQ
发现更多优质资源?请告诉我们,我们会将它们添加到此列表中。
< > 在 GitHub 上更新