2022年7月份,Stable Diffusion一经问世就震惊全球,相较于之前的模型,Stable Diffusion成功的解决了细节以及计算效率问题,通过算法迭代将AI绘图的精细度提升到艺术品的级别,并将生产效率提升到了秒级,大大方便了广大创作者,甚至没有绘画基础的小白也可以使用Stable Diffusion来创作出属于自己的作品。
Stable Diffusion爆火之后,好多技术人员开始研究它的网络结构、关键组件。最近由于某些原因,我的研究需要用到Stable Diffusion,于是就研究了一下它的网络结构。下图为官方论文中给出的网络结构。通过查找资料,我发现有好多人都在讲Pixel Space、Latent Space以及Conditioning,但是对于网络结构中的一些关键组件(例如switch、crossattention等)讲解的却不多。于是我想通过本篇文章跟大家聊聊Stable Diffusion中的一些关键组件,本篇以switch为主。
网络模块解析
- Pixel Space(像素空间)(上图中左侧粉色区域):
- 这里是图像的原始像素表示,可以是真实世界中的照片等RGB图像。
- 同时也是最终生成的图像空间,是生成图像的最终输出形式,用户所看到的图像就是在像素空间中呈现的。
- Latent Space(潜在空间)(上图中浅绿色区域):
- 这里是模型将输入数据(如RGB图像)转换为潜在空间的表示,模型将输入数据编码到一个低维表示的空间(如从将图像从512*512转换为64*64),在这个空间中,数据的复杂性被降低,以便模型处理,以及在生成过程中使用。
- Conditioning(条件)(上图右侧灰色框部分):
- 条件是指根据某些额外输入来控制生成过程趋向于我们想要的效果。
- 这里的条件包括Semantic Map(语义映射)、Text(文本描述)、Representations(表示)和Images(图像)。
- Diffusion Process(扩散过程):
- 扩散过程是Stable Diffusion的核心,涉及逐步向数据中添加噪声,使其复杂分布过渡到简单分布。
- Denoising U-Net(去噪U-Net):
- 这是Stable Diffusion中用于去噪的主要网络结构。它通过逐步去除噪声来生成图像。这里的去噪和上面的加噪都是根据马尔科夫链来进行推理的。
- Concat(连接):
- Concat是将不同来源的特征或数据合并到一起的操作。
- 在网络中,concat操作通常用于将编码器的输出与去噪U-Net的中间特征相结合,增强生成图像的特征表达。
- S