赞
踩
从头开始构建稳定扩散是可能的,您将在本博客中看到这一点,但由于需要大量数据和计算,实现市场上现有的质量(类似于Stability AI 的构建方式)具有挑战性。正如今天您可以构建一个百万参数的 LLM(如我的一篇博客中所示) ,将其扩展到十亿个参数(如Mistral或Meta等公司所做的那样),需要同样强大的计算和广泛的数据资源。
在这篇博客中,我将尝试从头开始创建一个小规模的稳定扩散类模型。这里的小规模意味着我们将使用您可能听说过的小型数据集MNIST 。选择这个数据集的原因是训练过程不应该花费太多时间,让我们能够快速检查我们的结果是否变得更好。
先决条件
稳定扩散如何发挥作用?
稳定扩散的架构
了解我们的数据集
搭建舞台
创建基本的前向扩散
创建基本的反向扩散
学习分数函数
神经网络的时间嵌入
使用级联编码 U-Net 架构
使用加法对 U-Net 架构进行编码
具有指数噪声的前向扩散过程
编写损失函数
编码采样器
训练U-Net串联架构
训练U-Net附加架构
建立注意力层
使用 Spatial Transformer 编码 U-Net 架构
使用去噪条件更新 U-Net 损失
使用注意力层训练 U-Net 架构
生成图像
下一步是什么
为了实现快速训练,GPU的使用是必不可少的。确保您对面向对象编程 (OOP) 和神经网络 (NN) 有基本的了解。熟悉 PyTorch 也有助于编码。如果 GPU 不可用,您可以将代码中出现的设备值修改为“cpu”。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。