文章目录
- 一、前言
- (一)DALLE2 简介
- (二)DALLE2和DALLE的对比
- (三)相关模型推出时间
- 二、文章概要
- (一)标题
- (二)摘要
- (三)引言
- (四)模型架构
- 三、方法
- (一)图像生成的相关工作
- (二)diffusion model扩散模型
- (三)DALLE2方法流程
- (四)decoder模型
- (五)prior模型
一、前言
(一)DALLE2 简介
https://openai.com/dall-e-2
-
DALLE2是可以根据文本描述去生成这种原创性的真实的图片,DALLE2学习了图片文本中的特征,可以任意的组合这些概念、属性、风格。
-
DALLE2也可以根据文本对已有的图片进行编辑和修改,可以任意添加或者移除现在图片里的物品,甚至可以把阴影、光的反射、物体的纹理全部考虑在内。
(二)DALLE2和DALLE的对比
-
DELLE2可以生成之前四倍的分辨率,生成效果更加清晰逼真
-
对于DALLE生成的图片和DALLE2生成的图片,有70%的人认为DALLE2生成的图片跟这个文本提示的内容更加贴切,将近90%的人认为DALLE2生成的图片比DALLE生成的图片更逼真。
(三)相关模型推出时间
2021年1月:DALLE
2021年5月:清华推出CogView模型,可以用中文生成图像
2021年11月:微软和北大推出NuWA(女娲)模型,不仅能生成图像,还能生成比较短的视频
2021年12月:openAI推出GLIDE模型
2021年12月:百度推出ERNIE-ViLG模型
2022年4月:openAI推出DALLE2
2022年4月:清华推出CogView2模型
2022年5月:清华推出CogVideo模型
2022年5月:Google推出Imagen模型
二、文章概要
(一)标题
使用 CLIP训练好的特征完成层级式的依托于文本条件的图像生成:
- 层级式:先生成一个小分辨率的图片(如64x64),然后再利用一个模型上采样到256x256,再使用一个模型上采样到1024x1024
- DALLE2模型其实可以理解成CLIP模型加上GLIDE模型,GLIDE模型就是基于扩散模型的文本图像生成的方法
(二)摘要
相关背景: 对比学习的方法比如CLIP模型已经可以学习到很稳健的图像特征,不仅能捕获到语义信息,还能捕获到图像的风格信息。(可以考虑用这些表示来生成图像)
主要工作: 提出了一个两阶段模型:
- prior先验模型:根据给定的文本描述生成类似于CLIP的图像特征(图像嵌入)
- decoder解码器:根据上述图像特征(以图像嵌入为条件)生成一个图像
研究表明:
- 显式生成图像表示可以提高图像多样性,同时将照片真实性和标题相似性的损失降至最低。
GAN模型生成的图像虽然非常逼真,但是多样性较弱,生成的图像比较类似,不太具备原创性
- 以图像表示为条件的解码器还可以生成图像的变体,保留其语义和风格,同时改变图像表示中缺少的非必要细节。
- CLIP 的联合嵌入空间能够以零样本方式进行语言引导的图像操作。
模型结构:
我们使用扩散模型作为解码器,并对先验模型使用自回归模型和扩散模型进行实验,发现后者的计算效率更高,并产生更高质量的样本。
(三)引言
- 计算机视觉的最新进展是由从互联网收集的大型字幕图像数据集的缩放模型推动的。(CLIP)
- CLIP 嵌入具有许多理想的特性:对图像分布变化具有鲁棒性,具有令人印象深刻的零样本能力,并且经过微调以在各种视觉和语言任务上实现最先进的结果。
- 扩散模型 已成为一种有前景的生成建模框架,推动了图像和视频生成任务的最先进技术 。
扩散模型是一种概率分布模型,生成图片是从一个分布里采样,因此多样性较好,但是保真度弱于GAN模型
- 为了获得最佳结果,扩散模型利用了一种引导技术 ,该技术以牺牲样本多样性为代价来提高样本保真度(对于图像、真实感)。
(四)模型架构
- 虚线上方:CLIP训练过程
- 通过CLIP过程学习文本和图像的联合表示空间
- CLIP 模型在先验和解码器的训练期间被冻结:(一旦这个CLIP模型训练好之后,其中的文本编码器和图像编码器就锁住了)
- 虚线下方:文本到图像的生成过程
- 阶段1:prior(将 CLIP 文本嵌入馈送到自回归或扩散)
- 阶段2:decoder (使用该嵌入来调节扩散解码器,从而生成最终的图像图像。)
采用两阶段而不是一阶段的关键提升在于:可以利用clip的图像编码器生成的特征去监督根据文本特征生成图像特征。在训练的时候,可以根据图像获得图像特征,拿该图像特征作为ground truth来监督。
DALLE2原名unCLIP:本质上是CLIP的反过程。
- CLIP是给定文本、图像,得到对应的特征,然后将其进行匹配(图像匹配、图像检索等),是一个从输入到特征的过程。
- DALLE2是通过文本特征到图像特征最后到图像的过程,是把特征还原到对应的数据。
三、方法
(一)图像生成的相关工作
GAN模型:
- 两个网络generator和discriminator,一个负责生成图片,一个负责判断图片的真假。
- 优点:①保真度高;②容易使用,需要的数据不多,可以在多个场景下使用;
- 缺点:①训练不够稳定,需要同时训练两个网络;②生成图片的多样性较低,多样性主要来自于随机噪声,创造性较低;③不是概率模型,它的生成是隐式的,通过一个网络完成,不容易解释。
AutoEncoder模型:
- 给定输入x,经过编码器得到特征,特征经过解码器得到图像
- 目标:图像能够尽可能的重建之前的输入x,因此称为自编码器
Denoising-AutoEncoder模型:
- 先将原图进行了一定程度的打乱,将扰乱之后的x输入到编码器,后续与AutoEncoder类似
- 目标:图像能够尽可能的重建之前的输入x(不是打乱之后的)
Masked-AutoEncoder模型:
- 掩码自编码器
- 在训练时mask掉75%之后依旧能很好地把图像重建出来
AE、DAE、MAE的主要目的是得到输入x的特征,利用这些特征去进行分类、检测、分割等任务,而不是用于生成。因为模型过程中得到的特征不是一个概率分布,无法对其进行采样。
Variational AutoEncoder模型:
- VAE的整体框架与AE类似,目标函数也是使得图像能够尽可能的重建之前的输入x
- VAE中间不是学习输入x的一个固定特征,而是学习了一个分布
- 假设学习到的分布为高斯分布,并用均值与方差来进行描述,然后从分布中采样出一个z,从而使得VAE做生成
整个过程可以看做先根据后验概率学习先验分布,然后分析likelihood
Vector quantised AutoEncoder模型:
- VQVAE就是把VAE做量化
- 把原本vae中的连续信息换成codebook转换过的离散信息,大模型就不容易过拟合,因为解空间实际减小了
- codebook可以理解成聚类的中心
- 图片经过编码器得到一个特征图,将特征图里的向量与codebook里的向量作对比,把最接近的聚类中心的编码存到z,利用z编码对应的特征生成新的特征图( f q f_q fq经过量化后的特征),然后通过解码器生成一个图片
VQVAE学习到的codebook又是固定的,因此不能去做随机采样,然后生成图片。学习得到的特征主要用于进行分类、检测、分割等任务,而不是用于生成。为了进行生成任务,需要单独训练一个prior网络,VQVAE论文作者单独训练了一个pixel CNN网络。(pixel CNN网络是一个自回归模型)
Vector quantised AutoEncoder2模型:
- VQVAE2是VQVAE的改进版本
- 把模型变成层级式,不仅做局部建模,而且做全局建模,并加上attention
- 并且单独训练一个prior网络用于生成
DALLE模型:
- VQVAE+GPT
- 有一个图像文本对,文本先经过BPE编码得到一个特征,图像经过VQVAE得到特征
- 将文本特征和图像特征连接起来,将该序列输入GPT,让GPT模型进行预测
- 使用CLIP模型对生成结果进行评估,得到最终的生成结果
【论文精读】DALLE: Zero-Shot Text-to-Image Generation零样本文本到图像生成
(二)diffusion model扩散模型
前向扩散过程: 对于一个图片 x 0 x_0 x0,往该图片加噪声,比如每一步加一个很小的正态分布的噪声,加了T次之后即为 x T x_T xT,形成一张真正的噪声图片(正态分布)。
反向生成过程: 随机抽样一个噪声,训练一个模型,逐步去噪声。
diffusion model采取一个非常常见的模型结构:UNet
扩散模型的发展历程:
- 2015年首次提出
- 2020年6月:Denoising Diffusion Probabilistic Model(DDPM)对扩散模型进行了改进,从 x T x_T xT预测 x T − 1 x_{T-1} xT−1转变为预测其中的噪声
- improved DDPM
- Diffusion beats GAN
- GLIDE(classifier guided diffusion)
- DALLE2
DDPM与VAE的对比:
- DDPM也可以看做是一个编码器解码器的结构,扩散模型的编码器得到z的过程是固定的多步的,而VAE的编码器是学习得到的
- 扩散模型中间的内容与最初的输入是同样维度大小的,VAE中间的特征会比初始的输入小很多
- 扩散模型存在步数的概念,并且所有步数里的unet的模型参数是共享的
(三)DALLE2方法流程
- 数据集:图像文本对
- prior模型:根据文本 y y y生成图像的特征 z i z_i zi—— P ( z i ∣ y ) P(z_i|y) P(zi∣y)
- decoder模型:把 z i z_i zi恢复呈图像 x x x—— P ( x ∣ z i , y ) P(x|z_i,y) P(x∣zi,y)
总体上,DALLE2模型是先有一个CLIP模型,然后再训练DALLE2的图像生成模型,一旦CLIP模型训练好后,任意给定一个文本就可以通过文本编码器得到文本特征,然后通过prio模型将文本特征转化为图像特征,之后通过decoder模型将图像特征变为图像。
(四)decoder模型
- 其实是GLIDE模型的变体
- 以 CLIP 图像嵌入为条件,即CLIP 引导的diffusion
- 同时应用了无分类器指导(实现方式:每次随机mask掉10%的CLIP embedding,并且每次随机丢弃50%的text caption)
- 级联式生成(Dalle2训练了两个diffusion upsampler模型,第一个模型从 64 × 64 64 \times 64 64×64采样到 256 × 256 256 \times 256 256×256,第二个进一步采样到 1024 × 1024 1024 \times 1024 1024×1024。为了提升upsamper的稳健性,第一个上采样阶段用了高斯模糊;第二个上采样阶段用了多种BSR degradation操作)
- 训练过程中增加了噪声
(五)prior模型
- 尝试了两种方案:自回归prior模型和diffusion prior模型
- 两种方案都使用了classifier free guidance
- 对于Autoregressive prior模型,输入是文本特征,也有CLIP输出的图像特征,然后与DALL-E、GPT类似地把他们拼接起来,然后将图像特征遮住,去自回归的预测。但是OpenAI在CLIP的文章中就已提到,这种自回归做预测的模型,训练效率太低
- 对于diffusion prior模型,训练了一个transformer的decoder
训练阶段:
训练数据: 图片文本对
对DuffusionPrior的训练主要包含以下几个步骤:
- Step1:将图片文本对输入到CLIP模型中获得对应的文本向量编码(text embedding)文本中每个token的编码(text encoding)及图像向量编码(image embedding)。这里值得注意的是:CLIP的模型权重冻结,不参加训练。
- Step2: 对image embedding(此处的image embedding就是diffusion model中的 x 0 x_0 x0)。随机采样时间步 t t t,对 x 0 x_0 x0进行加噪,得到第 t t t时刻的noise image embedding x t x_t xt。
- Step3: 将文本向量编码、文本token编码、时间步向量、 t t t时刻的图像向量编码输入到模型中(其本质是一个decode-only transformer with a causal attention mask)。该模型的作用是预测分布 p ( x t − 1 ∣ x t p(x_{t-1}|x_t p(xt−1∣xt)分布的均值。
- Step4: 计算预测分布与实际分布的KL散度实现训练。
推理阶段
- Step1:将文本内容 y y y送入到CLIP模型中得到文本向量文本向量编码(text embedding)文本中每个token的编码(text encoding)。
- Step2: 从高斯分布中随机采样一组向量作为 T T T时刻的图片向量编码。将文本向量编码、文本中每个token的编码、时间步编码、 T T T时刻的图片向量编码送入到DiffusionPriorNetwork中,预测 T − 1 T-1 T−1时刻的图片向量编码。
- Step3: 不断重复步骤2,直至时间步到 0 0 0得到所需的image embedding。
参考:
DALL·E 2(内含扩散模型介绍)【论文精读】
diffusion model(六)Dalle2技术小结