当前位置:AIGC资讯 > AIGC > 正文

AIGC之论文笔记DALL-E

文章目录

Zero-Shot Text-to-Image Generation 一. 简介 二. 方法 2.1. 第一阶段:Learning the visual codebook 2.1.1 回顾VQ-VAE 2.1.2 p ψ p_{\psi} pψ​是离散分布,不可导的问题 -> gumbel-softmax


Zero-Shot Text-to-Image Generation

一. 简介

机构:openai
代码:https://github.com/openai/DALL-E

人们常说自然语言处理是人工智能皇冠上的明珠,这些年transformer以及大规模语言模型LLM的蓬勃发展,让这颗明珠更加熠熠生辉。除此之外,ViT,MAE等方法也充分验证了图像在transformer以及大规模预训练之路上的可行性,那么近一步的思考,就是如何跨越图像,文本等多种模态的鸿沟,让机器真正实现智能?理解人类生活中存在的各种模态?接收人类的指令,与物理世界交互?实现视,听,说,触等人类感知在机器上的应用。这份思考也让多模态这个领域这些年如火如荼,模态可能不只包括图像,文本,视频,音频等,除此之外,人体姿态,3D模型等等都可以视作一种广义上的模态,但一般上更关注图像以及文本,一方面:图像文本是人类世界分布最广的两种媒介,蕴含着巨大的信息,另一方面:各种模态之间往往也可以相互转化,比如音频转化为文本,视频切帧为图像。

就图像和文本而言,有多种benchmark任务建立起两种模态之间的桥梁,包括但不限于多模态检索:文本检索图像,图像检索文本,多模态生成:文本生成图像,图像生成文本,多模态问答:VQA等。其中文本生成图像是一个备受关注的领域,之前的技术路线多是基于VAE,GAN等,在特定数据集或者特定域进行生成,比如CUB或者MS-COCO,生成效果差,细节不逼真,离通用,泛化性强的生成能力还相去甚远,这两年DALL-E的一鸣惊人,加上后来diffusion model的井喷式发展,让人看到了机器拥有艺术创造以及设计的希望,其生成的图像往往能够以假乱真,在真实性,多样性,创造性等方面,远远超过之前的模型。

今天,我们先聊一聊DALL-E。按照中文的谐音,DALL-E 音同 dali,所谓大力出奇迹,在这儿仿佛也算是如其名,有气吞山河山河之势。参考https://mp.pdnews.cn/Pc/ArtInfoApi/article?id=28457810 才知道openai的初衷是"让机器拥有顶级艺术家,设计师的创造力,因此结合了艺术以及机器的两位代表性标杆:艺术家萨尔瓦多·达利(Salvador Dali)

和皮克斯《机器人总动员》中的 WALL-E,用DALL-E向他们致敬。

摘要:
Text-to-image generation has traditionally focused on finding better modeling assumptions for training on a fixed dataset. These assumptions might involve complex architectures, auxiliary losses, or side information such as object part labels or segmentation masks supplied during training. We describe a simple approach for this task based on a transformer that autoregressively models the text and image tokens as a single stream of data. With sufficient data and scale, our approach is competitive with previous domain-specific models when evaluated in a zero-shot fashion.

论文的摘要比较朴实,其指出先前的文本生成图像任务在特定的数据集上展开,往往训练过程伴随着复杂的网络结果,额外的损失函数或者监督信息。而DALL-E用transformer(12亿参数)自回归地建模图像以及文本tokens,当给定足够的数据(文中用了2.5亿网络图文对),往往能以一种zero-shot的方式,与在某个特定域的专精模型相匹敌。当然,笔者其实对这个zero-shot一直打一个天大的问号,也不太清楚为什么DALL-E主打zero-shot这个点。

二. 方法

整体思路借鉴了:VQ-VAE与VQ-VAE2,即对图像并不直接在像素级别上自回归,而是将图像编码为离散的tokens,再进行建模,这样能够降低复杂度以及长序列的建模难度。具体而言,方法分为了两个阶段:

第一阶段:训练一个离散自编码器dVAE,将 256 ∗ 256 256 * 256 256∗256的RGB图像压缩为 32 ∗ 32 32 * 32 32∗32个tokens,每个token都有8192个可能的选择,即code book的大小是8192。这样transformer建模的上下文大小从 256 ∗ 256 ∗ 3 256 * 256 * 3 256∗256∗3 降低到 32 ∗ 32 32 * 32 32∗32,压缩了192倍,但视觉质量却没有很大的损失(但其实细节,会有一些损失,比如下图)

第二阶段:将256个BPE编码的文本token,与上面的 32 ∗ 32 = 1024 32 * 32 = 1024 32∗32=1024个视觉token进行concate,然后用一个自回归transformer建模图像和文本token的联合分布。
那么整体的文本生成图像的优化目标,可以视作优化一个关于图像 x x x,文本描述 y y y,视觉token z z z的ELB。

其中 q ϕ q_\phi qϕ​ denotes the distribution over the 32 × 32 image tokens generated by the dVAE encoder given the RGB image x x x;(注意论文在这一句有一个注释:We assume that y is conditionally independent of x x x given z z z.,有谁知道这句话的目的是什么吗?) p θ p_\theta pθ​ denotes the distribution over the RGB images generated by the dVAE decoder given the image tokens; p ψ p_\psi pψ​ denotes the joint distribution over the text and image tokens modeled by the transformer.
其实上面的ELB与VAE的ELB在公式上,长得很相似:

具体公式的推导可以见:

整体DALL-E的方法流程图可见:

2.1. 第一阶段:Learning the visual codebook

训练dVAE,即最大化关于 ϕ \phi ϕ和 θ \theta θ 的ELB,初始化先验 ψ \psi ψ为在codebook vectors上的均匀类别分布。

2.1.1 回顾VQ-VAE

这儿,我们先简单回顾一下VQ-VAE的相关内容:

VQ-VAE是DALL-E的前身,不同于VAE,VQ-VAE将图像编码成离散的token,具体的做法是定义了一个 K ∗ d K * d K∗d的code book或者叫做embedding space,其是可以学习的,类似一个nn.embedding层,然后对于一个输入的图像,经过encder得到 z e z_e ze​ ,它的维度是 m ∗ n ∗ d m * n * d m∗n∗d,然后将 m ∗ n m * n m∗n个网格的特征,分别与code book里面的K个特征算一个距离,找到最近邻,其code book中的index当作对应位置的离散编码 z z z,并填充对应的d维特征,形成 z q z_q zq​,当作decoder的输入,并重建得到图像。其为了避免最近邻查找中argmax带来的不可导问题,引入了直通估计来设计其损失函数:

在DALL-E里面,这儿的VQ-VAE也被叫做dVAE,其相关的配置如下

image_size 256 × \times × 256 codebook_size 8192 encoding image size 32 × 32 \times 32 ×32 β \beta β (上面KL散度的权重) 6.6

如上所说,训练dVAE就是在最大化 ϕ \phi ϕ和 θ \theta θ的ELB,初始化先验 p ψ p_{\psi} pψ​为在codebook vectors上的均匀类别分布。
目前存在的问题:

p ψ p_{\psi} pψ​是离散分布,涉及到不可导的问题 p θ p_{\theta} pθ​分布和像素不匹配的问题
2.1.2 p ψ p_{\psi} pψ​是离散分布,不可导的问题 -> gumbel-softmax

首先我们介绍一下什么是gumbel分布

它的分布函数是: F ( x ; μ , β ) = e − e − ( x − μ ) / β F(x;\mu,\beta)=e^{-e^{-(x-\mu)/\beta}} F(x;μ,β)=e−e−(x−μ)/β
采样: x = F − 1 ( μ ) = μ − β ln ⁡ ( − ln ⁡ ( μ ) ) , μ ∼ U n i f o r m ( 0 , 1 ) x = F^{-1}(\mu)=\mu-\beta\ln(-\ln(\mu)), \mu\sim Uniform(0,1) x=F−1(μ)=μ−βln(−ln(μ)),μ∼Uniform(0,1)
标准分布: μ = 0 , β = 1 \mu=0,\beta=1 μ=0,β=1

F ( x ; 0 , 1 ) = e − e ( − x ) F(x;0,1)=e^{-e^(-x)} F(x;0,1)=e−e(−x) 采样: x = F − 1 ( μ ) = − ln ⁡ ( − l n ( μ ) ) , μ ∼ U n i f o r m ( 0 , 1 ) x=F^{-1}(\mu)=-\ln(-ln(\mu)), \mu \sim Uniform(0,1) x=F−1(μ)=−ln(−ln(μ)),μ∼Uniform(0,1)

gumbel softmax

[1] E. Jang, S. Gu, and B. Poole. Categorical reparameterization with gumbel-softmax. arXiv preprint arXiv:1611.01144, 2016.
针对离散变量采样过程无法求导这个固有性质,上面的文献[1]提出了连续且可导的近似采样替代方案gumbel softmax。

假设离散变量 z z z的值域有k个可能的取值 z 1 , z 2 , . . . , z k {z_1, z_2, ..., z_k} z1​,z2​,...,zk​,对应的概率分布向量为 p = [ p 1 , p 2 , . . . , p k ] p=[p_1,p_2,...,p_k] p=[p1​,p2​,...,pk​],那么整个采样的过程就变成了
z = o n e h o t ( a r g m a x i [ g i + log ⁡ p i ] ) z=one_{hot}(argmax_i[g_i + \log p_i]) z=onehot​(argmaxi​[gi​+logpi​]),其中 g i g_i gi​是从gumbel(0,1)中独立同分布采样得到。然后用连续可导的计算代替argmax近似得到采样向量 y y y。
y i = e ( log ⁡ ( p i ) + g i ) / τ ∑ j = 1 k e ( log ⁡ ( p j ) + g j ) / τ f o r   i = 1 , . . . , k y_i=\frac{e^{(\log(p_i)+g_i)/\tau}}{\sum_{j=1}^k e^{(\log(p_j) + g_j)/\tau}} for\ i = 1,...,k yi​=∑j=1k​e(log(pj​)+gj​)/τe(log(pi​)+gi​)/τ​for i=1,...,k

更新时间 2024-01-13