Hierarchical Text-Conditional Image Generation with CLIP Latents翻译

unCLIP是一种两阶段模型,它使用CLIP的图像嵌入来生成多样性的图像,并能通过CLIP的潜在空间进行语言引导的编辑。解码器以图像表示为条件生成图像变体,保持语义和风格,而先验模型从文本生成可能的CLIP图像嵌入。这种方法在质量和多样性上与现有系统相比表现出色,并且计算效率更高。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要

类似CLIP的对比模型已经能够学习图像的鲁棒表示,以捕获语义和风格特征。为了利用这些表示进行图像生成,我们提出了一个两阶段的模型:给定文本说明,生成一个CLIP图像嵌入,然后基于该嵌入使用一个解码器生成一个图像。我们表明,直接生成图像表示可以改善图像多样性,并最小化图像和文本相似性之间的损失。我们的解码器以图像表示为条件来生成图像的各种变体,这些变体即保留了其语义和样式,又可以改变图像表示中所没有的不重要的细节。此外,CLIP的联合嵌入空间可以以zero-shot的方式实现语言引导的图像编辑。我们使用扩散模型来实现解码器,并对先前的自回归和扩散模型都进行了实验,发现后者在计算上更有效并产生更高质量的样本。

1.介绍

在这里插入图片描述
  计算机视觉的最新进展是通过基于从网络上收集的包含文本图像对的大型数据集,对大模型进行训练来驱动的。在此框架内,CLIP已成为成功的图像表示学习器。CLIP嵌入具有许多理想的属性:它们对于图像分布的变化是鲁棒的,并具有令人印象深刻的zero-shot能力,经过微调后,再各种视觉语言任务上都达到了SOTA效果。同时,扩散模型已成为一个较好的生成建模框架,从而推动了SOTA的图像和视频生成任务。为了取得最优结果,扩散模型利用了一种指导技术,该技术以样本多样性为代价改善了样本保真度。
  在这项工作中,我们将这两种方法结合在一起,以解决以文本为条件的图像生成问题。我们首先训练一个扩散解码器来作为CLIP图像编码器的逆操作。我们的逆变换器是不是确定性的,即可以生成与给定图像嵌入相对应的多个图像。编码器及其近似逆(解码器)的存在允许建模超出文本到图像翻译的能力。与GAN倒置一样,编码并解码输入图像会产生语义上相似的输出图像(如图3)。我们还可以通过反转多个图像嵌入的插值来融合输入图像(图4)。但是,使用CLIP潜在空间的一个值得注意的优势是能够通过朝任何编码文本向量的方向移动来修改图像(图5),而在GAN潜在空间中发现这些方向则涉及一些运气和不断的人工检查。此外,编码和解码图像还为我们提供了一种观察工具,以观察哪些图像的特征会被CLIP保留或丢弃。
  为了获得图像的完整生成式模型,我们使用一个先验模型来将CLIP图像嵌入解码器相结合,该模型从给定的文本中生成可能的CLIP图像嵌入。我们将我们的文本到图像系统与其他系统(例如DALL-E和GLIDE)进行了比较,发现我们的样本在质量上与GLIDE相当,但生成多样性更大。我们还开发了在潜在空间中训练扩散先验的方法,并表明它们的性能与自回归先验相当,同时更加计算高效。我们将我们的以文本为条件的图像生成模型称为unCLIP,因为它通过反转CLIP图像编码来生成图像。

2.方法

在这里插入图片描述
  我们的训练数据集由图像文本对 ( x , y ) (x,y) (x,y)组成。给定一个图像 x x x,令 z i z_i zi z t z_t zt分别为其CLIP图像嵌入和文本嵌入。我们设计了一个生成堆栈,以使用下面两个组件从文本中生成图像:

  • 一个先验 P ( z i ∣ y ) P(z_i|y) P(ziy),以文本 y y y为条件,来生成CLIP图像嵌入 z i z_i zi
  • 一个解码器 P ( x ∣ z i , y ) P(x|z_i,y) P(xzi,y),以CLIP图像嵌入 z i z_i zi(以及可选的文本 y y y)为条件,生成图像 x x x

该解码器允许我们基于给定的CLIP图像嵌入来生成图像 x x x,而先验使我们能够学习图像嵌入本身的生成模型。堆叠这两个组件就能构建一个生成式模型 P ( x ∣ y ) P(x|y) P(xy)
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(xy)=P(x,ziy)=P(xzi,y)P(ziy).
第一个等式之所以成立,是因为 z i z_i zi x x x的确定性函数。由于链式法则,第二个等式成立。因此,我们首先可以使用先验对 z i z_i zi采样,然后使用解码器对 x x x进行采样,从而实现在真实条件分布 P ( x ∣ y ) P(x|y) P(xy)中进行采样。 在以下各节中,我们描述了我们的解码器和先验。有关训练细节和超参数,请参阅附录C。

2.1 Decoder

以CLIP图像嵌入(可选的文本描述)为条件,我们使用扩散模型来生成图像。具体而言,我们修改了Nichol et al. (2021) 描述的结构,通过将CLIP嵌入进行映射并添加到现有的时刻嵌入中,然后将CLIP嵌入映射到四个额外的上下文token中,这些嵌入与GLIDE文本编码器的输出序列拼接。我们保留了原始GLIDE模型中提出的文本条件,其假设该方式可以使扩散模型能够学习CLIP无法捕获的自然语言的语义(例如,variable binding),但发现它在图像生成方面几乎没有帮助(第7节)。
  虽然我们可以直接从解码器的条件分布中进行采样,但使用扩散模型的过去工作显示使用有关调节信息进行指导,可以大大提高样本质量。我们在训练过程中,通过随机10%的概率设置CLIP嵌入(或学习的嵌入)为零,并50%的概率随机丢弃文本描述,来进行类别无关的指导。
  为了生成高分辨率图像,我们训练两个扩散上采样模型:一个将64×64的图像上采样到256×256分辨率,另一个将该分辨率图像提高到1024×1024分辨率。为了提高我们上采样器的鲁棒性,我们在训练过程中略微破坏了调节图像。 对于第一个上采样阶段,我们使用高斯模糊,第二个阶段我们使用更多样化的BSR降解。为了减少训练计算量并提高数值稳定性,我们遵循Rombach et al.的方法,并在目标大小四分之一的图像随机crop上训练。我们仅在模型中使用空间卷积(即没有注意力层),并在推理时直接在目标分辨率下应用模型,并观察到它很容易将其推广到更高的分辨率。我们在文本上调节上采样器并使用没有任何指导的无条件ADMNets,发现没有任何好处。

2.2 Prior

虽然解码器可以将CLIP嵌入 z i z_i zi逆转换为图像 x x x,但我们需要一个先验模型,该模型从文本 y y y生成 z i z_i zi以进行图像生成。我们探索了两个不同的模型:

  • Autoregressive (AR) prior:CLIP嵌入 z i z_i zi被转换到一个离散code序列,并以文本 y y y为条件进行自回归预测。
  • Diffusion prior:以文本 y y y为条件,连续向量 z i z_i zi使用高斯扩散模型被直接建模。

除了文本外,我们还可以以CLIP文本嵌入 z t z_t zt上的先验为条件,因为它是文本的确定性函数。为了提高样本质量,我们同样可以通过在训练期间随机删除该文本10%的调节信息。
  为了更有效地对AR训练和采样,我们首先通过应用主成分分析(PCA)来降低CLIP图像嵌入 z i z_i zi的维度。特别是,我们发现,在使用SAM训练CLIP时,CLIP表示空间的秩会大大降低,同时略微改进了评估指标。我们能够通过在原始1,024维度中保留319个主要成分,即可保留几乎所有的信息。应用PCA后,我们通过减小特征值幅度,将319个维度中的每一个量化到1,024个离散存储桶中来排序主成分,并使用带有因果注意力的transformer模型来预测该序列。这会导致在推理期间预测的token数量减少三倍,并提高训练稳定性。
  我们以文本描述以及CLIP文本嵌入作为AR先验的条件,来作为前缀序列进行编码。此外,我们添加一个token,指示文本嵌入和图像嵌入之间的(量化)点积 z i ⋅ z t z_i\cdot z_t zizt。这使我们能够在较高的点积上调节该模型,因为较高的文本图像点积对应于能够更好地描述图像的文本。实际上,我们发现从分布的上半部分采样点积是有益的。
  对于扩散先验,我们使用具有因果注意力的transformer解码器进行训练,用于训练的序列按顺序由下面部分组成:编码文本,CLIP文本嵌入,扩散步骤嵌入,加噪CLIP扩散图像嵌入,以及final嵌入,其transformer输出被用于预测无噪CLIP嵌入。我们没有选择类似AR先验中以 z i ⋅ z t z_i\cdot z_t zizt为条件的扩散先验,取而代之的是,我们通过生成两个 z i z_i zi样本并选择具有和 z t z_t zt更高点积的样本来提高采样的质量。与使用Ho et al. 的 ϵ \epsilon ϵ预测公式不同,我们发现训练我们的模型以直接预测无噪 z i z_i zi并在此预测上使用于均方误差损失是更好的选择:
L p r i o r = E t ∼ [ 1 , T ] , z i ( t ) ∼ q t [ ∣ ∣ f θ ( z i ( i ) , t , y ) − z i ∣ ∣ 2 ] L_{prior}=\mathbb E_{t\sim [1,T],z_i^{(t)}\sim q_t}[||f_{\theta}(z^{(i)}_i,t,y)-z_i||^2] Lprior=Et[1,T],zi(t)qt[∣∣fθ(zi(i),t,y)zi2]

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 x x所需的所有残差信息。通过简单地用CLIP图像编码编码图像来获得前者。后者是通过使用解码器将DDIM逆应用于 x x x([11]中的附录F),同时以 z i z_i zi为条件时获得的。我们描述了通过这两部分表示进行的三种不同类型的操作。

3.1 Variations

在这里插入图片描述
  给定图像 x x x,我们可以生成相关的图像,这些图像共享相同的基本内容,但在其他方面有所不同(图3)。为了实现这种目标,我们将解码器应用于两部分表示 ( z i , x T ) (z_i,x_T) (zi,xT),并使用 η > 0 η>0 η>0的DDIM进行采样。使用 η = 0 η=0 η=0,解码器将变为确定性的,并将重建给定的图像 x x x η η η的较大值将随机性引入连续的采样步骤,从而导致以原始图像 x x x为中心的变化。随着 η η η的增加,这些变化告诉我们CLIP图像嵌入中捕获了哪些信息,从而可以在样本中保存,以及丢失了哪些内容,从而在样本中变化。

3.2 Interpolations

在这里插入图片描述
  也可以将两个图像 x 1 x_1 x1 x 2 x_2 x2混合在一起以进行变化(图4),从而遍历这两个图像在CLIP嵌入空间中包含的所有概念。为此,我们使用球面插值在它们的CLIP嵌入 z i 1 z_{i_1} zi1 z i 2 z_{i_2} zi2之间旋转,以产生中间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,θ) θ θ θ从0到1变化。沿着这种变化,可以产生两种中间DDIM潜在表示,第一个在其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。第二个将轨迹中所有插值固定为随机采样值。这导致 x 1 x_1 x1 x 2 x_2 x2之间的无限轨迹数量,且这些轨迹的终点通常不再与原始图像相吻合。 我们在图4中使用这种方法。

3.3 Text Diffs

在这里插入图片描述
  与其他模型进行图像表示相比,使用CLIP的关键优势是,它将图像和文本嵌入映射到同一潜在空间中,从而使我们能够应用基于语言指导的图像生成,例如我们在图5中显示的。为了修改图像以反映新的文本说明 y y y,我们首先获得目标文本的CLIP嵌入 z t z_t zt,以及描述当前图像原始CLIP文本嵌入 z t 0 z_{t_0} zt0。然后,我们通过计算差值和归一化来计算文本差异向量 z d = n o r m ( z t − z t 0 ) z_d=norm(z_t-z_{t_0}) zd=norm(ztzt0)。现在,我们可以使用球面插值在CLIP图像嵌入 z i z_i zi和文本差异向量 z d z_d zd之间旋转,得出中间CLIP表示 z θ = s l e r p ( z i , z d , θ ) z_θ=slerp(zi,zd,θ) zθ=slerp(zi,zd,θ),其中 θ θ θ从0增加到最大值,通常最大值在 [ 0.25 , 0.50 ] [0.25,0.50] [0.25,0.50]中。我们通过解码 z θ z_θ zθ产生最终输出,同时将基本DDIM噪声固定到 x T x_T xT中。

4.Probing the CLIP Latent Space

5.Text-to-Image Generation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值