Stable Diffusion、DALL-E、Imagen 背后共同原理是什么?
Stable Diffusion、DALL-E、Imagen 这些模型的共同之处在于它们都使用了三个模块来生成图像

· 首先,通过 Text Encoder 模块,将输入的文本编码成为一个表征向量。
· 然后, Generation Model 模块会利用这个表征向量生成一个图像表征向量,可以把它看作是图像的压缩版本。
· 最后,通过 Decoder 模块,将这个图像表征向量解码为一张清晰的图像。
1 Stable Diffusion

Stable Diffusion 是一个比较热门的开源 Diffusion Model,它的架构如上图所示。
· 它的 Encoder 输入可以不仅仅是文本,还可以是图像等条件。
· 它的 Generation Model 使用的是 Denoising U-Net,引入了交叉注意力机制(cross attention),以加入多模态的条件。
· 同时,它还使用了预训练的通用 VAE,将输入的图片压缩到潜空间(latent space),然后再进行扩散过程。
2 DALL-E

是由OpenAI发布的一种Diffusion Model,它的架构如上图所示。 它利用CLIP方法得到文本和图像的表征向量。CLIP objective是一种对比学习方法,通过训练模型使其同时理解文本和图像,以便将文本描述和对应的图像紧密联系起来。在训练过程中,模型会从数据集中随机选择一个文本描述和对应的图片作为正样本,随机选择另一个文本描述和不属于该文本描述的图片作为负样本。模型的目标是使正样本的相似度高于负样本的相似度。
DALL-E利用CLIP objective实现了文本和图像之间的交互,即给定一个文本描述,DALL-E可以生成与该描述相符合的图像。具体而言,DALL-E的生成过程如下:
· 首先将给定的文本描述编码成文本表征向量
· 然后将该向量输入到DALL-E的生成模型(prior 模块)中,生成一个图像表征向量。
· 最后,将该图像表征向量输入到DALL-E的解码器中,生成最终的图像。
DALL-E的生成模型有两种实现方式:
· 第一种是利用Autoregressive模型(例如GPT),输入文本表征,生成图像表征向量降维(如PCA)后的表征
· 第二种是利用Diffusion,输入文本表征,生成大小一致的图像表征向量。
3 Imagen

Imagen是Google发布的一种文本到图像生成的Diffusion Model,它可以根据给定的文本描述生成一张高清晰度的图片。整个生成过程包含三个主要模块:Frozen Text Encoder、Text-to-Image Diffusion Model和Super-Resolution Model。
· 首先,Frozen Text Encoder将输入的文本描述编码成一个Text Embedding
· 然后Text-to-Image Diffusion Model根据Text Embedding从随机噪声图开始,不断迭代产生一张与输入描述匹配的64x64小图
· 再由Super-Resolution模块根据Text Embedding放大到256x256的中等尺寸图像,最终通过另一个Super-Resolution模块根据Text Embedding产生1024x1024的高清晰度图像。
为了实现更好的生成效果,Imagen采用了一些优化措施。
·
其中,text encoder采用T5模型的encoder,测试结果表明T5-XXL效果最佳,其对应参数量为4.6B。