图像生成模型

150 阅读2分钟

Introduction

autoregressive vs. non-autoregressive

图像生成也可以采取类似文字生成的autoregressive策略

Non-autoregressive:每一个像素独立绘制,可能产生较差的结果

  • 增加额外输入:某种简单的已知分布(normal、uniform等)
    • P(X|Y)非常复杂,其中X为图像,Y为文字
    • 从已知分布(例如normal)中sample出的向量,一一对应到X的各种可能性:如何对应?

常见的图像生成模型

Variational auto-encoder (VAE)

  • 同时训练encoder和decoder
  • 强制要求中间生成的向量符合normal distribution image.png

Flow-based generative model

  • 训练一个invertible & 生成向量符合normal distribution的encoder
    • 限制network架构,使得encoder invertible
    • 输出向量的维度与输入图片一致,才能invertible image.png

Diffusion model

  • 只需要训练decoder(denoise)

image.png

Generative adversial network (GAN)

  • 跟前三种的concept不同,本质上是在decoder后面加discriinator,可以和前三种结合 image.png image.png

Diffusion model

reference: Denoising Diffusion Probabilistic Models (DDPM)

  • Denoise module
    • 文字也需要作为输入,在下图中省略
    • 需要把当前的step number也作为输入 - 不同step的noise严重程度不同,因此denoise“力度”应当有所不同 image.png
    • 内部用noise predictor预测noise,然后从输入中减去noise
      • 为何不端到端预测:产生noise难度更小 image.png
      • 如何训练noise predictor
        • Foward process (Diffusion process) image.png
        • 得到paired data,用于训练 image.png

Stable Diffusion

Framework

由三个module组成,分开训练:text encoder、generation model(常用diffusion model)、decoder image.png

Examples

  • Stable diffusion image.png
  • Dall-E image.png
  • Imagen image.png

Text encoder

  • GPT, BERT, ...
  • Text encoder的大小对结果影响很大,但diffusion model(U-Net)的大小影响不如text encoder image.png

Decoder

  • can be trained without labeled data (different from the generation model)
    • 中间产物为小图 - Imagen image.png
    • 中间产物为latent representation:需要训练auto-encoder - Stable diffusion & Dall-E image.png

Generation model

  • 基于text的representation,产生中间产物
  • 与之前介绍的diffusion model不同,因为产生的不再是一张完整的图片,因此需要加入encoder image.png
    • 训练noise predictor image.png
    • 完整流程
      • Midjourney展示时,将每次denoise后的中间产物通过decoder后展示,因此能看到图片从模糊到清晰的过程 image.png