Introduction
autoregressive vs. non-autoregressive
图像生成也可以采取类似文字生成的autoregressive策略
- juejin.cn/post/723190…
- openai.com/research/im… (raster order)
- 非常耗费时间,例如256 * 256 = 65536 pixels
Non-autoregressive:每一个像素独立绘制,可能产生较差的结果
- 增加额外输入:某种简单的已知分布(normal、uniform等)
- P(X|Y)非常复杂,其中X为图像,Y为文字
- 从已知分布(例如normal)中sample出的向量,一一对应到X的各种可能性:如何对应?
常见的图像生成模型
Variational auto-encoder (VAE)
- 同时训练encoder和decoder
- 强制要求中间生成的向量符合normal distribution
Flow-based generative model
- 训练一个invertible & 生成向量符合normal distribution的encoder
- 限制network架构,使得encoder invertible
- 输出向量的维度与输入图片一致,才能invertible
Diffusion model
- 只需要训练decoder(denoise)
Generative adversial network (GAN)
- 跟前三种的concept不同,本质上是在decoder后面加discriinator,可以和前三种结合
Diffusion model
reference: Denoising Diffusion Probabilistic Models (DDPM)
- Denoise module
- 文字也需要作为输入,在下图中省略
- 需要把当前的step number也作为输入 - 不同step的noise严重程度不同,因此denoise“力度”应当有所不同
- 内部用noise predictor预测noise,然后从输入中减去noise
- 为何不端到端预测:产生noise难度更小
- 如何训练noise predictor
- Foward process (Diffusion process)
- 得到paired data,用于训练
- Foward process (Diffusion process)
- 为何不端到端预测:产生noise难度更小
Stable Diffusion
Framework
由三个module组成,分开训练:text encoder、generation model(常用diffusion model)、decoder
Examples
- Stable diffusion
- Dall-E
- Imagen
Text encoder
- GPT, BERT, ...
- Text encoder的大小对结果影响很大,但diffusion model(U-Net)的大小影响不如text encoder
Decoder
- can be trained without labeled data (different from the generation model)
- 中间产物为小图 - Imagen
- 中间产物为latent representation:需要训练auto-encoder - Stable diffusion & Dall-E
- 中间产物为小图 - Imagen
Generation model
- 基于text的representation,产生中间产物
- 与之前介绍的diffusion model不同,因为产生的不再是一张完整的图片,因此需要加入encoder
- 训练noise predictor
- 完整流程
- Midjourney展示时,将每次denoise后的中间产物通过decoder后展示,因此能看到图片从模糊到清晰的过程
- Midjourney展示时,将每次denoise后的中间产物通过decoder后展示,因此能看到图片从模糊到清晰的过程
- 训练noise predictor