DALL E2【论文阅读】

Hierarchical Text-Conditional Image Generation with CLIP Latents

1. Background

  • 根据文本生成原创性图像,没有在训练集中出现过,学习特征然后进行组合
  • 根据文本对已有的图像进行编辑和修改,可以任意添加或移除已有物体(因为使用的是“扩散模型(diffusion model)”的结构,所以生成的图像可以是很多,即一对多),而且能够符合现实生活的规律
  • 即使在没有文本输入的情况下,仍旧能够根据已有图像和风格生成类似的图像而不改变已有的语义
  • 一系列工作
    在这里插入图片描述
    看这个架势,扩散模型有取代GAN的趋势

2. Introduction

  • CLIP提取的特征很好,很稳健,而且可以在一系列视觉文本任务上表现很好。
  • 扩散模型在图像和视频的生成上也有十分出色的表现。扩散模型是在一个概率分布中进行采样,因此生成的内容多样性很高,但是保真度无法媲美GAN,因为GAN是基于“以假乱真”的优化方式,因此非常逼真,在细节上做得很好。但是20年以后一些研究人员将扩散模型的保真度提上来了,能够在数值上和GAN不相上下
    DALL E2【论文阅读】_第1张图片
  • 在DALL E2的模型中CLIP的参数是不被优化的(freezing)
  • 使用两阶段训练方式,prior和decoder。因为作者发现直接学习多模态特征的方式(即通过一个大模型去学习文本到图像的映射)不如 先由文本生成文本特征,再由文本特征生成图像特征,最后通过图像特征生成图像的效果好
  • 过程:文本通过CLIP得到文本特征,输入prior学习对应的图像特征(CLIP对应的图像特征为ground truth,训练时有text-image pair),然后将图像特征输入decoder中生成图像。本质上就是CLIP和GLIDE模型的合并

3. Related Work

GAN

在这里插入图片描述

  • 训练:训练一个生成器和判别器,生成器的输入是随机噪声,输出一张图像;判别器的输入是生成图像和真实图像,输出真假。在优化过程中,生成器和判别器不断优化,最后能够生成以假乱真的图像。
  • 缺点:1)训练不够稳定,因为需要同时训练两个网络,存在平衡的问题,容易训练坍塌。2)不够多样。由于GAN的优化目标是真实,因此生成的图像多样性较低,主要来源于噪声的输入。3)隐式生成。不是概率模型,因此生成的图像并不知道是遵循什么分布,因此在数学上不够优美

AE:Auto Encoder

在这里插入图片描述
经过encoder得到一个小纬度的特征然后输入decoder中进行解码,目标是重建x(即让 x ′ x' x尽可能地与 x x x相似)

  • Denoising Auto Encoder(DAE):将x打乱输入,重建x。效果提升明显,得到的特征更稳健且不容易过拟合,强化模型抓住本质特征的能力。原因在于图像像素的冗余性很高,所以即使在图像上添加一定的污染,模型仍然能够抓住本质,将原始图像重建出来。(同样的思路例如Masked Auto Encoder)
  • 目的:学习bottelneck特征做下游任务。

VAE: Variational Auto Encoder

AE无法做生成任务,因为学习到的是特征并不是概率分布,因此无法进行采样。但是这种encoder-decoder的结构是一种很好的学习框架。VAE就是利用encoder-decoder这种结构来进行图像生成。
DALL E2【论文阅读】_第2张图片

  • 方法:与AE的区别在于中间并不是学习一个特征而是学习一个分布,假设是一个高斯分布(可以用均值和方差来描述)。encoder的输出加一个fc层预测均值和方差,然后基于此采样 Z Z Z输入decoder生成图像。在训练好VAE之后,不用encoder, Z Z Z可以从高斯分布中采样,输入解码器生成图像。
  • 优点:由于是生成的分布,因此生成图像的多样性会高很多

VAVAE:Vector Quantised Variational Auto Encoder

DALL E2【论文阅读】_第3张图片

  • 对VAE做量化,因为现实中很多任务都是分类任务(离散化);而且VAE的方式学习不容易将模型做大,分布也相对不好学。因此VQVAE从学习分布转换为学习codebook(可以理解为聚类的中心,大小为 L × D L\times D L×D,L表示聚类中心的个数,D表示每个聚类中心的表示纬度)
  • 训练流程:输入图像 x x x经过encoder得到特征图 f f f(尺寸为 c × h × w c \times h \times w c×h×w),将特征图中的向量与codebook进行匹配,选择最相近的聚类中心的编号存入 Z Z Z中,根据编号得到新的特征图 f q f_q fq(尺寸为 D × h × w D \times h \times w D×h×w,即量化后的特征)。 f q f_q fq是可控的,因为总是从codebook中取出来的特征,而非随机的东西从而更好优化。
  • 使VQVAE的工作:BEIT用训练好的codebook得到的特征图作为ground truth进行自监督学习;Vision Language BEIT 也是类似的思路用transformer编码器做多模态的任务。
  • 小结:VQVAE学习的是一个固定的codebook,即学习到特征去做high level任务,类似于AE的工作,所以无法采样做生成类任务。作者在这里为了能够进行生成任务,额外训练了一个prior网络(pixel CNN)使用训练好的codebook来生成图像

VQVAE2

DALL E2【论文阅读】_第4张图片

  • 将VQVAE变成层级式,对局部和全局都尽心建模,同时添加了attention加强了模型的表达能力。将自回归模型 pixel CNN换成了GPT(可以用文本引导图像生成)

Diffusion Model

在这里插入图片描述
假设每一步都向之前的图像加入很小的噪声,当T趋于无穷大的时候,最后这张图像将会变成真正的噪声(正态分布)。整个过程称为前向扩散过程(forward diffusion,diffusion名字来自于热力学)
DALL E2【论文阅读】_第5张图片
将上述过程逆过来,输入是随机噪声,通过训练网络将输入恢复到最初图像来生成图像。 q ( X t ∣ X t − 1 q(X_t|X_{t-1} q(XtXt1就是扩散模型,每一步的参数共享。这也是扩散模型的不足,即训练和推理上比较慢,因为需要一步一步恢复。对于最原始的扩散模型,T一般设置为1000

  • reverse diffusion model
    需要保证输入和输出的尺寸大小一致,一般使用U-Net
    DALL E2【论文阅读】_第6张图片
    左边是特征提取(Encoder,不断压缩),右边是上采样(Decoder,进行恢复),输入和输出的图像尺寸大小一致。为了让恢复更好,在对应的层之间有一些skip connection进行信息的直接传递可以恢复出一定的细节

DDPM

简化了扩散模型的优化过程。

1)将图像到图像的预测转换为对噪声的预测。模型的输入为 X t X_t Xt和time embedding(类似于位置编码,告诉模型扩散到第几步了),输出是一个噪声。

  • time embedding:加入之后模型的表现提高了很多。因为在每一步的生成过程中使用的是同一个模型,但是需要让模型根据不同的输入生成不同的输出。在开始阶段,我们希望模型的输出是coarse-grained,大致轮廓;在后面阶段,生成更细节的,逼真的图像。time embedding用来告诉模型现在恢复到哪一步
  • 损失函数: L = ∣ ∣ Z − f ϵ ( y t , t e ) ∣ ∣ L=||Z-f_\epsilon(y_t,t_e)|| L=∣∣Zfϵ(yt,te)∣∣,即添加的噪声(ground truth)和预测噪声的差值

2)进一步简化分布的学习,只需要学习正太分布的均值,不需要学习方差。将方差设置为一个常数,最后的效果依然很好。进一步降低了模型优化的难度

小结

  • 二者都可以看做encoder-decoder的结构
  • 扩散模型在encoder部分是固定的,而VAE是学习特征
  • 扩散模型的输入和输出大小是一致的,而VAE的中间特征纬度要比输入小很多
  • 扩散模型中有time step,time embedding的概念,且每一步共享参数
  • 扩散模型在数学上很优雅,基于高斯分布因此能够做推理证明

improved DDPM

  • 学习方差会让模型表现得更好
  • 添加噪声策略从线性改为余弦(在理解上类似于学习率的schedule也是从线性到余弦)
  • 更大的模型会让扩散模型有更好的表现结果

Diffusion model beats GAN

  • 将模型变得更大更复杂。加大加宽,增加自注意力的头,将single-scale attention换成multi-scale attention
  • 提出新的归一化方式 adaptive group normalization,根据步数做归一化
  • 使用classifier guided diffusion,在训练扩散模型的同时额外训练一个图像分类器,将输入 X t X_t Xt交给分类器计算分类损失,得到的梯度辅助采样和生成。因为梯度隐含了图像的一些信息(例如有无物体,是否真实),指导U-Net生成的图像要更像某一类物体。使得生成的图像逼真了很多,实验结果在数值上超越了GAN
  • 这种添加了指导信号的方法非常有效,除了可以用classifier,还可以用CLIP(可以将图像和文本联系起来),image(图像重建作为像素级别的引导,还可以做特征层面或者风格的引导),text等。但是这样就需要额外的模型(pretrain/train),成本较高且训练过程不可控
  • 后续工作:classifier free guidance。 f θ ( X t , t , y ) − f θ ( X t , t , ϕ ) f_\theta(X_t,t,y)-f_\theta(X_t,t,\phi) fθ(Xt,t,y)fθ(Xt,t,ϕ),前者表示指导条件(y)下的输出,后者表示没有指导条件下( 空集 ϕ 空集\phi 空集ϕ)的输出。这样就摆脱了分类器的限制。但是训练成本较高,但这是一个很好用的技巧。

4. Method

  • 数据集与CLIP一样也是图片文本对 ( x , y ) (x,y) (x,y),x,y分别表示图像和文本,经过CLIP得到响应的image embedding z i z_i zi 和 text embedding z t z_t zt。模型主要包含两个模块,分别是prior和decoder
  • prior P ( z i ∣ y ) P(z_i|y) P(ziy) 。这里是transformer decoder,因为输入和输出都是embedding。
  • decoder P ( x ∣ z i , y ) P(x|z_i,y) P(xzi,y)。这里是GLIDE模型的变体,使用了CLIP的guidance等各种技巧

5. Application && Results

  • 图像生成图像:图像输入给CLIP得到图像特征,将图像特征转换为对应的文本特征(这里是怎么做到的),将文本特征输入给prior得到另一个图像特征,最后输入到decoder中生成新的图像。这样生成的图像风格和语义与原始图像类似,对于不太关键的信息(布局样式等)有一定的改变(简化设计)
    DALL E2【论文阅读】_第7张图片

  • 图像的内插:在两张图像之间做内插得到的特征进行生成
    DALL E2【论文阅读】_第8张图片

  • 图像和文本的内插(P图)
    DALL E2【论文阅读】_第9张图片

  • Results(在COCO数据集上FID分数)
    DALL E2【论文阅读】_第10张图片

不足和局限

  • 不能很好地将物体及其属性结合起来
    DALL E2【论文阅读】_第11张图片
    分析可能是使用了CLIP模型的缘故,因为CLIP更多地考虑的是物体上的相似性,可能并没有理解某些文本的真正含义,例如这里的“on top of”。所以CLIP得到的特征不能很好地区分物体极其属性

  • 文字中有表示文字的时候,生成的图像中的文字不正确
    DALL E2【论文阅读】_第12张图片
    有可能是因为文本编码在开始的时候使用的是BPE编码(类似于词根-词缀编码形式)

  • 不能生成很复杂的场景,无法生成很多细节
    DALL E2【论文阅读】_第13张图片

你可能感兴趣的:(论文阅读,论文阅读,深度学习,计算机视觉)