蓝色系网站设计,网站建设南阳,做网络平台需要什么条件,焊工培训内容手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion#xff08;原理介绍#xff09; 目录 手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion#xff08;原理介绍#xff09;DDPM 原理图Stable Diffusion 原理Stable Diffusion的原理解释Stable Diffusion 和 Diffus…手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion原理介绍 目录 手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion原理介绍DDPM 原理图Stable Diffusion 原理Stable Diffusion的原理解释Stable Diffusion 和 Diffusion 的区别Stable Diffusion 的Unet图讲解Stable Diffusion 和Diffusion 的Unet对比 参考 DDPM 原理图
DDPM包括两个过程前向过程forward process和反向过程reverse process其中前向过程又称为扩散过程diffusion process如下图所示。无论是前向过程还是反向过程都是一个参数化的马尔可夫链Markov chain其中反向过程可以用来生成图片。 DDPM 整体大概流程 图中由高斯随机噪声 x T x_T xT 生成原始图片 x 0 x_0 x0 为反向过程反之为前向过程噪音扩散。
Stable Diffusion 原理
Stable Diffusion的原理解释
Stable Diffusion的网络结构图如下图所示 Stable Diffusion 的网络结构图 我们可以发现Stable Diffsion其实还是大部分基于Diffusion的基本的扩散方式没有发生改变。前向扩散阶段还是先进行前向扩散(如图中的上半部分所示)得到扩散后的 x t x_t xt 就类似这里的 z T z_T zT只不过这里把原本的图像(就是我们之前提的 x )利用 AEVAEVQVAE等自编码器进行了图像特征提取把隐变量(z)作为原本的真实清晰图像从而一定程度上减少了计算量改动1。训练阶段如图中下半部分所示仍然是随机生成的批量t利用公式得到批量的z_t然后对Unet输入z_t不过这里添加了一定的引导信息 ( 比如 MNist数据集中的label也可以是文字信息等等(改动2) ) 然后生成下个阶段的噪声图。损失也仍然是上个个时刻的噪声图和预测出来的噪声图之间的差距。去噪阶段如图中下半部分所示输入噪声图引导词经过T次的去噪然后生成清晰的图像只不过这里图像是经过特征提取过的所以最后利用 AEVAEVQVAE等自编码器的解码器进行解码即可(改动3)。
Stable Diffusion 和 Diffusion 的区别
改动1利用 AEVAEVQVAE 等自编码器进行了图像特征提取利用正确提取特征后的图像作为自己原本在Diffusion中的图像。改动2在训练过程中额外添加了一些引导信息促使图像生成往我们所希望的方向去走这里添加信息的方式主要是利用交叉注意力机制这里我看图应该是只用交叉注意力就行但是我看视频博主用的代码以及参照的Stable-Diffusion Unet图上都是利用的Transoformer的编码器也就是得到注意力值之后还得进行一个feedforward层。改动3利用 AEVAEVQVAE 等自编码器进行解码。这个实质上和第一点是重复的注意本次的代码改动先只改动第二个也就是添加引导信息对于编码器用于减少计算量本次改进先不参与555~因为视频博主没教后续可能会进行添加因为也比较简单。
Stable Diffusion 的Unet图讲解
Stable Diffusion 和Diffusion 的Unet对比 原本的Unet图像 Stable Diffusion的 Unet 图像 我们可以发现两者之间的区别主要在于在卷积完了之后添加了一个Transformer的模块也就是其编码器将两个信息进行了融合其他并没有改变。所以主要区别在卷积后的那一部分如下图。 卷积后的区别 这个ResnetBlock就是之前的卷积模块作为右边的残差部分所以这里写成 了ResnetBlock。因此如果我们将Tranformer模块融入到Restnet模块里面并且保持其输入卷积的图像和transformer输出的图像形状一致的话那么就其他部分完全不需要改变了只不过里面多添加了一些引导信息(MNIST数据集中是label但是也可以添加文本等等引导信息) 而已。
参考
视频讲解进化为stable的diffusion模型可指定生成数字图片_哔哩哔哩_bilibili
原理博客手撕Diffusion系列 - 第一期 - DDPM原理-CSDN博客