学习笔记_文生图串讲
目前我的理解有两个阵营
- Stable Diffusion=DiffusionUNet+VAE+CLIP
- Dalle2=CLIP+像素级别DiffusionUNet
- 其他还有其他的文生图的网络,也用了diffusion,
- Imagen=T5+DiffusionTransformer不开源
- Midjourney不开源
| 特性 | DALL·E 2 | Stable Diffusion |
|---|---|---|
| 开发者 | OpenAI | Stability AI, CompVis, LMU |
| 开源状态 | ❌ 闭源,通过 API 或 Web 界面使用 | ✅ 完全开源,可本地部署 |
| 架构 | 基于 CLIP + 级联扩散模型,也是一个diffusion的 | 基于潜在空间的扩散模型 (Latent Diffusion) |
| 访问方式 | 订阅制(按生成次数付费) | 免费开源,可自行运行 |
| 社区与定制 | 有限,无法微调模型 | 拥有庞大的社区,可训练 LoRA、Dreambooth 模型等 |
| 成风格 | 通常更“安全”、更偏向摄影/插画 | 风格极其多样,取决于微调模型 |
| 生去噪空间 | 扩散过程主要在像素空间或CLIP 的嵌入空间进行,而不是像 SD 那样在独立的 VAE 潜在空间。 | 核心创新——“潜在扩散”(Latent Diffusion),极大提升了效率。 |
从Diffusion到StableDiffusion
扩散模型(Diffusion Model)是一种生成式深度学习模型
它的工作原理分为两个主要阶段:
- 前向扩散过程 (Forward Diffusion Process)
- 从一张真实的图像开始。
- 在训练过程中,模型会逐步、有规律地向图像中添加高斯噪声。
- 经过很多步(比如 1000 步)后,原始图像被完全破坏,变成了一幅纯噪声图像。
- 这个过程是固定的、可预测的。
- 反向去噪过程 (Reverse Denoising Process)
- 这是生成新图像的关键。
- 模型的目标是学习如何从纯噪声开始,一步步地去除噪声,最终还原出一张清晰的图像。
- 在训练时,模型学习预测每一步被添加的噪声是什么。
- 在生成时(推理阶段),模型从一个随机噪声开始,利用学到的知识,一步一步地“去噪”,最终生成一张新的、逼真的图像。
Stable Diffusion 是由 Stability AI 等机构在 2022 年发布的一个具体的、开源的文本生成图像模型。核心创新:引入了 VAE(变分自编码器)在潜在空间(Latent Space)中进行扩散
它的工作原理分为三个主要阶段:
- 编码器:先将原始图像压缩到一个低维的潜在空间(例如 64x64x4)。
- 扩散过程:扩散模型(U-Net)在这个低维的潜在空间中进行去噪和生成。这大大降低了计算复杂度,提升了速度。
- 解码器:生成完成后,再用 VAE 的解码器将低维的潜在表示“解压”回高维的像素图像。
Stable Diffusion (通常指 v1.x 系列) 和 Stable Diffusion v2 是由 Stability AI 发布的同一模型系列的两个主要版本,Stable Diffusion v2的数据集更好,另外提供 upscaling diffusion model,可将低分辨率图像提高分辨率,还能利用 MiDaS 模型估计深度。
- Stable Diffusion v1.x 系列:使用 OpenAI 的 CLIP。Stable Diffusion v2.0:切换为 OpenCLIP
VAE (Variational Autoencoder - 变分自编码器)在StableDiffusion中的作用
VAE 在文生图流程中主要负责图像的编码与解码,其作用是连接像素空间和潜在空间(latent space)。
- 编码器 (Encoder) 的作用:
- 在训练阶段,VAE 的编码器将真实图像从高维的像素空间压缩到一个低维的、结构化的潜在空间(latent space)。
- 这个潜在空间的向量(通常称为 latent code 或 latent representation)包含了原始图像的关键视觉信息,但维度远低于原始像素,从而大大降低了后续生成模型(如扩散模型)的计算复杂度。
- 例如,在 Stable Diffusion 中,一张 512x512x3 的图像被编码成一个 64x64x4 的潜在向量。
- 解码器 (Decoder) 的作用:
- 在生成阶段,生成模型(如扩散模型)在潜在空间中逐步“去噪”或构建出一个代表目标图像的潜在向量。
- VAE 的解码器则负责将这个最终的潜在向量解码回像素空间,生成我们最终看到的、可视化的图像。
CLIP (Contrastive Language–Image Pre-training - 对比语言-图像预训练模型)在StableDiffusion中的作用
CLIP 的核心作用是理解文本语义并将其与视觉概念对齐,充当文本和图像之间的“翻译器”或“桥梁”。
- 文本编码器 (Text Encoder):
- 将输入的文本描述(如“一只戴着墨镜的猫在太空漫步”)转换成一个高维的文本嵌入向量(text embedding)。这个向量捕捉了文本的语义信息。
- 图像编码器 (Image Encoder):
- 将图像(或图像的潜在表示)也转换成一个图像嵌入向量。
- 对齐机制:
- CLIP 是在海量的“图像-文本对”数据上进行对比学习训练的。它的目标是让匹配的图像和文本的嵌入向量在向量空间中尽可能接近,而不匹配的则尽可能远离。
- 这种训练方式使得 CLIP 能够深刻理解不同概念之间的关联,例如知道“猫”这个词对应的视觉特征是什么。
- 在文生图中的应用:
- 文本条件输入: 在生成过程中,CLIP 的文本编码器将用户的文本提示(prompt)编码成一个文本嵌入向量。这个向量作为条件信息,指导生成模型(如扩散模型中的 U-Net)去生成符合该描述的图像。
- 引导生成: 生成模型利用这个文本嵌入向量来调整其在潜在空间中的生成过程,确保生成的潜在表示与文本描述在语义上保持一致。
- 评估与排序(可选): 有时 CLIP 也可以用来评估生成图像与文本描述的匹配程度。
DALL·E 2
- 输入:一段文字描述,例如:“一只戴着贝雷帽、在月球上用萨克斯演奏爵士乐的柴犬,赛博朋克风格,8K 分辨率”。
- 输出:生成一张或多张与该描述高度匹配的、高质量的图像。
工作原理简述有两个阶段
- 文本理解:首先,DALL·E 2 利用了 OpenAI 自家的 CLIP 模型。将输入的文本描述编码成一个高维的语义向量。
- 图像生成:一个级联的扩散模型开始工作:
- 第一阶段(低分辨率生成):一个扩散模型从纯噪声开始,根据文本语义向量的指导,逐步去噪,生成一张低分辨率(如 256x256)的图像。
- 第二阶段(超分辨率):另一组扩散模型(超分辨率模型)将低分辨率图像作为输入,逐步添加细节,提升到更高的分辨率(如 1024x1024),使图像更清晰、细节更丰富。
- 还具备强大的编辑功能:局部编辑(Inpainting),图像到图像(Image-to-Image),外绘(Outpainting)
为什么用UNet做diffusion?
既要理解全局语义,又要保留精确的空间位置信息。Unet的跳跃连接刚好能做到
核心去噪网络都是基于 U-Net 或其变体(如 DiT)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 This is a 部落格 of outbreak_sen!


