可控图像生成 unCLIP: Hierarchical Text-Conditional Image Generation with CLIP Latents(DALLE2)
虽然解码器可以反转 CLIP 图像嵌入ziz_izi以生成图像xxx,但我们需要一个先验模型,从标题yyy生成ziz_izi,以便从文本字幕生成图像。自回归 (AR) 先验:将 CLIP 图像嵌入ziz_izi转换为离散代码序列,并以标题yyy为条件进行自回归预测。扩散先验: 连续向量ziz_izi直接使用高斯扩散模型建模,以字幕yyy为条件。我们可以将 CLIP 文本embeddingz
unCLIP:Hierarchical Text-Conditional Image Generation with CLIP Latents(DALLE2)
unCLIP | DALLE2
这篇文章与之前几篇可控图像生成的文章有个不同的地方,就是这篇文章发表于2022年(其他的基本都是2023、2024年),算是“前辈”
前几篇的文章的实验部分多多少少都与unCLIP进行了对比。那我就觉得可能unCLIP这个模型也比较经典。所以打算单拎出来写一篇博客
了解一下它的思想以及具体的改进方法,学习学习。 原来unCLIP就是DALLE2!!!
一、研究目的
提供了一种新的图像生成和编辑的方式。
开头先来介绍一下这篇文章为什么被称作 unCLIP
CLIP模型主要做了以下几件事情:
CLIP模型通过利用网络上的图文配对数据,训练了一个文本编码器(text encoder)和一个图像编码器(image encoder)。这两个编码器分别将文本和图像转换成文本特征(text embedding)和图像特征(image embedding)。通过对比学习的方式,CLIP模型能够识别正样本(匹配的图文对)和负样本(不匹配的图文对),最终实现通过文本特征检索最相似的图像特征,用于分类和检索任务。简而言之,CLIP模型能够从文本和图像中提取出它们的特征嵌入。
而本文(unCLIP)所做的工作大概是这样的:
本文首先使用预训练的CLIP模型将文本转换为文本特征(text embedding)。然后,利用CLIP模型处理大量的图文配对数据,得到文本和图像特征的配对数据。接着,使用这些数据训练了一个扩散模型(diffusion model)。这个模型能够根据文本特征生成相应的图像特征(image embedding),再通过解码器(decoder)将图像特征转换成一张具体的图像。这个过程与CLIP模型的工作流程相反,CLIP是从图文信息中提取特征,而本文的方法则是从特征中重建图像。因此,这项工作最初被称为unCLIP。
二、研究背景
计算机视觉领域的最新进展是在从互联网上收集的大量带标题图像数据集上扩展模。在此框架内,CLIP已成为一种成功的图像表征学习器。CLIP 嵌入具有许多理想的特性:它们对图像分布偏移具有鲁棒性,具有令人印象深刻的zero-shot能力,并经过微调,在各种视觉和语言任务中取得了最先进的结果。与此同时,扩散模型已成为一种很有前途的生成建模框架,推动了图像和视频生成任务的发展。为了达到最佳效果,扩散模型利用了一种引导技术,该技术以样本多样性为代价,提高了样本的保真度(对于图像而言,即逼真度)。
这里指的引导技术分别是分类器引导(Classifier Guidance)和无分类器引导(Classifier-free Guidance) 后面也会具体介绍
三、研究内容(主要贡献)
我们提出了一个两阶段模型:一个先验模型,根据文字说明生成 CLIP 图像嵌入;一个解码器,根据图像嵌入生成图像。我们的研究表明,显式生成图像表征可提高图像多样性,同时将逼真度和标题相似性的损失降到最低。我们以图像表征为条件的解码器还能生成图像的变体,既能保留图像的语义和风格,又能改变图像表征中缺失的非必要细节。
我们的训练数据集由成对 ( x , y ) (x, y) (x,y) 的图像 x x x 及其相应的标题 y y y 组成。给定图像 x x x,让 z i z_i zi 和 z t z_t zt 分别表示其 CLIP 图像和文本嵌入。我们设计的生成堆栈使用两个组件从标题生成图像:
- 先验 P ( z i ∣ y ) P (z_i|y) P(zi∣y),以标题 y y y 为条件生成 CLIP 图像嵌入 z i z_i zi。
- 解码器 P ( x ∣ z i , y ) P (x|z_i, y) P(x∣zi,y),根据 CLIP 图像嵌入信息 z i z_i zi(可选文本标题 y y y)生成图像 x x x。
解码器允许我们根据 CLIP 图像嵌入对图像进行反转,而先验器则允许我们学习图像嵌入本身的生成模型。将这两个部分堆叠起来,就能得到给定字幕 y y y 的图像 x 的生成模型 P ( x ∣ y ) P (x|y) P(x∣y):
P ( x ∣ y ) = P ( x , z i ∣ y ) = P ( x ∣ z i , y ) P ( z i ∣ y ) . P(x|y)=P(x,z_i|y)=P(x|z_i,y)P(z_i|y). P(x∣y)=P(x,zi∣y)=P(x∣zi,y)P(zi∣y).
第一个等式成立是因为 z i z_i zi 是 x x x 的确定性函数,第二个等式成立是因为链式规则。因此,我们可以从真实的条件分布 P ( x ∣ y ) P (x|y) P(x∣y) 中采样,首先使用先验对 z i z_i zi 采样,然后使用解码器对 x x x 采样。
四、技术路线
4.1 Decoder
我们采用了扩散模型来生成以CLIP图像嵌入(以及可选的文本标题)为条件的图像。具体做法是,我们对GLIDE架构进行了调整,将CLIP嵌入整合到时间步嵌入中,并额外增加了四个上下文tokens,这些tokens与GLIDE文本编码器的输出序列相连。
尽管我们可以直接从解码器的条件分布中进行采样,但先前的研究已经表明,利用扩散模型结合条件信息可以显著提升采样的质量。为了实现无分类器引导,我们在训练过程中采取了两种策略:一是在10%的时间随机将CLIP嵌入设为零(或学习到的嵌入);二是在50%的时间随机不使用文本标题。
为了生成高分辨率的图像,我们训练了两个扩散上采样器模型:一个用于将图像从64×64分辨率上采样到256×256,另一个则进一步将图像上采样到1024×1024分辨率。
为了增强上采样器的鲁棒性,我们在训练过程中对图像进行了轻微的破坏处理。在第一个上采样阶段,我们使用了高斯模糊;在第二个阶段,我们采用了更多样化的BSR退化技术。
为了降低训练的计算成本并提高数值稳定性,我们借鉴了Rombach等人的方法,在目标尺寸四分之一的随机图像上进行训练。在我们的模型中,仅使用了空间卷积(即不包含注意力层),并在推理时直接应用到目标分辨率,结果表明这种方法能够很好地泛化到更高分辨率的图像上。
GLIDE架构的具体内容是怎么样的?
4.2 Prior (这里其实用来自回归和扩散两种模型 Diffusion的效果好一些,所以就介绍Diffusion)
虽然解码器可以反转 CLIP 图像嵌入 z i z_i zi 以生成图像 x x x,但我们需要一个先验模型,从标题 y y y 生成 z i z_i zi,以便从文本字幕生成图像。我们为先验模型探索了两种不同的模型类别:
-
自回归 (AR) 先验:将 CLIP 图像嵌入 z i z_i zi 转换为离散代码序列,并以标题 y y y 为条件进行自回归预测。
-
扩散先验: 连续向量 z i z_i zi 直接使用高斯扩散模型建模,以字幕 y y y 为条件。
我们可以将 CLIP 文本embedding z t z_t zt 作为先验条件,因为它是标题的确定性函数。为了提高样本质量,我们还可以在训练过程中随机放弃 10% 的文本条件信息,从而在 AR 和扩散先验中使用无分类器引导进行采样。
对于扩散先验,我们在一个序列上训练了一个带有causal attention mask的纯解码器Transformer,该序列依次包括:the encoded text, the CLIP text embedding, an embedding for the diffusion timestep、the noised CLIP image embedding, and a final embedding,Transformer的输出用于预测无噪声 CLIP 图像嵌入。我们选择不像 AR 先验那样以 z i − z t z_i - z_t zi−zt 作为扩散先验的条件;相反,我们通过生成两个 z i z_i zi 样本并选择与 z t z_t zt 点积较大的样本,来提高采样时间的质量。我们发现,与其使用 Ho 等人[25]的预测公式,不如直接训练我们的模型来预测未噪声化的 z i z_i zi,并对这一预测使用均方误差损失:
L p r i o r = E t ∼ [ 1 , T ] , z i ( t ) ∼ q t [ ∥ f θ ( z i ( t ) , t , y ) − z i ∥ 2 ] L_{\mathrm{prior}}=\mathbb{E}_{t\sim[1,T],z_{i}^{(t)}\sim q_{t}}\left[\|f_{\theta}(z_{i}^{(t)},t,y)-z_{i}\|^{2}\right] Lprior=Et∼[1,T],zi(t)∼qt[∥fθ(zi(t),t,y)−zi∥2]
这里与之前的Diffusion有挺大的差异的:这里用Transformer替代了原来的Unet结构,并且由原来的预测噪声变成了直接未噪声化的 z i z_i zi,这样做的原因是什么呢?
4.3 Image Manipulations
我们的方法允许我们将任何给定图像 x x x 编码成一个双方潜在表示 ( z i , x T ) (z_i, x_T) (zi,xT),这个潜在表示足以让解码器产生精确的重构。潜在 z i z_i zi 描述了 CLIP 能够识别的图像的各个方面,而潜在 x T x_T xT 则编码了解码器重建 x 所需的所有剩余信息。前者可以通过简单地使用 CLIP 图像编码器对图像进行编码来获得。后者是通过使用解码器对 x x x 进行 DDIM 反转,同时对 z i z_i zi 进行调节而得到的。我们将介绍这种双向表示法所支持的三种不同操作。
DDIM反转又是什么意思?
4.3.1 Variations
给定一幅图像 x x x,我们可以生成具有相同基本内容但在形状和方向等其他方面存在差异的相关图像。为此,我们使用 DDIM 将解码器应用于二元表示 ( z i , x T ) (z_i, x_T) (zi,xT) ,采样时 η > 0 η > 0 η>0 。当 η = 0 η = 0 η=0 时,解码器变成确定性的,并将重建给定的图像 x x x。较大的 η η η 值会在连续采样步骤中引入随机性,从而产生以原始图像 x x x 为 “中心 ”的感知变化。随着 η η η 的增大,这些变化会告诉我们 CLIP 图像嵌入中捕捉到了哪些信息(因此在不同采样中得以保留),以及丢失了哪些信息(因此在不同采样中有所变化)。
4.3.2 Interpolations
我们还可以将两幅图像 x 1 x_1 x1 和 x 2 x_2 x2 融合在一起进行变化,遍历它们之间出现的 CLIP 嵌入空间中的所有概念(这里的concepts应该如何理解)。为此,我们使用球形插值法在两个图像的 CLIP 嵌入空间 z i 1 z_{i_1} zi1 和 z i 2 z_{i_2} zi2 之间进行旋转,当 θ θ θ 在 0 到 1 之间变化时,会产生中间 CLIP 表示 z i θ = s l e r p ( z i 1 , z i 2 , θ ) z_{i_θ} = slerp(z_{i_1} , z_{i_2} , θ) ziθ=slerp(zi1,zi2,θ)。
第一种方案是在 DDIM 反转潜点 x T 1 x_{T_1} xT1 和 x T 2 x_{T_2} xT2 之间进行内插(设置 x T θ = s l e r p ( x T 1 , x T 2 , θ ) x_{T_θ} = slerp(x_{T_1} , x_{T_2} , θ) xTθ=slerp(xT1,xT2,θ)),从而得到一条单一轨迹,其端点重构 x 1 x_1 x1 和 x 2 x_2 x2。
第二种方案是将 DDIM 潜在值固定为轨迹中所有插值的随机采样值。这将在 x 1 x_1 x1 和 x 1 x_1 x1 之间产生无数条轨迹,不过这些轨迹的端点通常不再与原始图像重合。
什么是球形插值法?
4.3.3 Text Diffs
与其他图像表征模型相比,使用 CLIP 的一个主要优势是它能将图像和文本嵌入到同一个潜在空间,因此我们可以应用语言引导的图像处理(即文本差异)。
要修改图像以反映新的文本描述 y,我们首先要获得其 CLIP 文本嵌入 z t z_t zt,以及描述当前图像的标题的 CLIP 文本嵌入 z t z_t zt 。然后,我们通过求差和归一化计算出文本差异向量 z d = n o r m ( z t − z t 0 ) z_d = norm(z_t - z_{t_0}) zd=norm(zt−zt0)。
现在,我们可以使用球形插值法在图像 CLIP 嵌入 z i z_i zi 和文本差异向量 z d z_d zd 之间进行旋转,得到中间 CLIP 表示 z θ = s l e r p ( z i , z d , θ ) z_θ = slerp(z_i, z_d, θ) zθ=slerp(zi,zd,θ),其中 θ θ θ 从 0 线性增加到最大值,最大值通常在 [0.25, 0.50] 之间。我们通过解码内插值 z θ z_θ zθ,并在整个轨迹中将基本 DDIM 噪声固定为 x T x_T xT,从而产生最终输出。
4.4 Probing the CLIP Latent Space
PCA 重构为探究 CLIP 潜在空间的结构提供了另一种工具。在图 7 中,我们提取了少量源图像的 CLIP 图像嵌入,并以逐渐增加的 PCA 维度对其进行了重构,然后使用我们的解码器和 DDIM 在固定种子上对重构后的图像嵌入进行了可视化处理。这样,我们就能看到不同维度所编码的语义信息。我们观察到,早期的 PCA 维度保留了粗粒度的语义信息,如场景中存在哪些类型的物体,而后期的 PCA 维度则编码了更细粒度的细节,如物体的形状和确切形态。例如,在第一个场景中,前面的维度似乎表示有食物,也许还有一个容器,而后面的维度则具体表示西红柿和一个瓶子。图 7 也是 AR 先验建模的可视化示意图,因为 AR 先验经过训练,可以明确预测这些主成分的顺序。
decoder CLIP的潜在空间感觉还是比较有意义的
五、Limitations and Risks
尽管使用 CLIP 嵌入生成图像能提高多样性,但也存在局限性,尤其是在将属性与对象绑定方面。研究发现,unCLIP 模型在这方面的表现不如 GLIDE,主要是因为 CLIP 嵌入未能有效关联属性和对象,且解码器常常混淆它们。此外,unCLIP 在生成连贯文本时也面临挑战,可能是因为 CLIP 嵌入未精确编码文本拼写信息。
在复杂场景中,unCLIP 难以生成细节,这可能源于其在 64×64 基本分辨率下生成图像的限制。提高基本分辨率可以缓解此问题,但会增加训练和推理的计算成本。
六、总结
这篇文章给我最大的启发就是如何利用先验的扩散模型,将text embedding 转为 image embedding进而再生成图像。同时如何去探索clip image embedding的潜在空间我觉得也是很有意义的事(就有点像是对styleGAN的latent space的探索,有利于实现对图像的细粒度编辑 )

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)