持续创造,加快成长!这是我参加「日新计划 10 月更文挑战」的第24天,点击检查活动详情


论文地址:Hierarchical Text-Conditional Image Generation with CLIP Latents

赏析大师

Hierarchical Text-Conditional Image Generation with CLIP Latents

看一下标题啊,运用CLIP出来的特征来做一个层级式的文本到图画的生成器

咱们能够取得三个线索:

  1. 用到了CLIP模型

    CLIP模型作为DALLE 2的基础,先找到图片文本之间的关联。真个DALLE 2模型都离不开CLIP。

    • 在DALLE 2中给定一个文本,CLIP就能够对文本编码取得对应的特征。

    • DALLE 2有一个prior模型,输入是文本特征,输出是图画特征。

    • 把取得的图画特征传给DALLE 2的解码器,就能够生成图画了。

    CLIP对DALLE 2来说很重要,不了解的能够先看一下介绍CLIP的文章:[CLIP打通文本图画壁垒,为AI图画生成打下

  2. 层级式

    层级式是由于DALLE 2先生成一个6464的图画,再运用一个模型上采样生成一个256256,你以为这就完了吗,还有一个模型继续上采样到10241024,所以最终DALLE生成出来的是一个10241024的高清大图

  3. 文本到图画生成

    这个就没什么可说的了,现在text to image生成的工作发展地如火如荼。

DALLE 2是什么

之前OpenAI的CLIP现已做的挺好的了,既能获取到文本对应图片语义信息又能获取到图片的风格信息,既然信息现已能够抽取地这么好了,那只拿着它去做分类是不是很可惜,所以能不能多加运用呢?

为了能充分发挥CLIP的优势,所以作者测验运用CLIP取得的特征去做图画的生成,因而他们做了一个两阶段的模型。

  • prior:给定一个文本caption发生一个和CLIP模型相似的图画嵌入表明(image embedding)

  • decoder:通过图画嵌入表明解码生成对应的图画

DALLE 2 文本到图像生成都给我卷起来

prior

prior要做的是拿到一个caption之后将其转换为文本嵌入,然后再将其转化成图片嵌入。

这儿用的是一个预练习好的CLIP模型(图片虚线的上半部分)。咱们知道CLIP模型是有两部分的,一个文本编码器和一个图画编码器。

看一下图片虚线的下半部分:

  • caption → text embedding这一步用的是CLIP的文本编码器

  • 然后prior的另一部分的作用是text embedding → image embedding

CLIP的图画编码器出来的成果在这儿作为prior出来的成果的ground truth。

作者在这儿提了一下,运用prior生成image embedding能够进步图画生成的多样性。此外prior的规划还有一个原因:关于同一个caption,可能会有许多的图片与之对应,因而CLIP两个编码器输出的内容并不是完全一致的,因而在这儿需求一个单独的prior模型将文本嵌入“翻译”为可能与之相匹配的图画嵌入。

decoder

这一部分便是用的分散模型。运用分散模型能够确保图画生成的多样性。基于给定图画的特征能够生成多种多样的图片,还能确保语义信息和风格。

在这儿作者是做了试验,测验运用了自回归模型和分散模型,最终还是发现分散模型比较香,功率又高生成作用又好。


论文办法介绍

数据集

令 和CLIP模型相同,练习数据集也是图片和文本对pair(x,y)pair(x,y)。给定图片xx,令ziz_i是CLIP出来的图画嵌入表明,ztz_t为CLIP出来的文本嵌入表明,整个DALLE 2模型就能够拆解成两部分:

  1. prior:P(zi∣y)P(z_i|y),依据输入文本yy发生图画的嵌入表明ziz_i

  2. decoder:P(x∣zi,y)P(x|z_i,y),依据文本yy和prior得到的图画嵌入表明ziz_i重建图片xx。当然文本yy也能够不加的。

整个过程的数学表明为:

P(x∣y)=P(x,zi∣y)=P(x∣zi,y)P(zi∣y)P(x \mid y)=P\left(x, z_i \mid y\right)=P\left(x \mid z_i, y\right) P\left(z_i \mid y\right)

decoder

Guidance

关于分散模型,为了进步其评价方针的数值体现和加快采样,研究人员现已探讨出多种多样的引导分散的技巧,团体能够看这儿:Guidance,让分散模型的方针更能打 – ()

在DALLE 2的decoder顶用的办法是CLIP guidance + classifier-free guidance。便是说DALLE 2中的guidance可能来自于文本,也可能来自于CLIP模型, 在这儿随机将10%的CLIP的特征表明设置为\phi,在练习过程中随机去掉50%的文本caption。

层级式生成

这儿便是为了进步生成图片的质量,先用模型生产64 64 的小图,再运用两个上采样模型,使分辨率逐步进步到256 256,10241024。

为了进步练习的稳定性,练习过程中加了许多噪声。在网络结构上,由于用的都是U-Net,运用的都是卷积操作,不是运用Transformer,因而练习出来的模型能够用在恣意大小的图上, 而不再需求考虑图画编码的长短。

prior

作者在这儿运用了两种模型:

自回归模型(autoregressive) prior:

自回归是输入文本特征,加上CLIP的图画特征去做生成,这样不断去猜测就能够了。但是之前讲CLIP的时分咱们就提到,OpenAI的人现已意识到练习猜测式的模型功率很低。为了让练习变得更快速,他们还用了许多加快技巧。总归便是很麻烦,论文中也没具体写,这儿就不多赘述。关于自回归模型为什么不太行以及不了解CLIP的能够看:CLIP打通文本图画壁垒,为AI图画生成打下基础 – ()

分散模型(Diffusion) prior:

由于prior的输入输出都是embedding,所以在这儿分散模型的网络用的就不是U-Net了,而是直接练习的一个只用decoder的Transformer,用来处理序列信息。

这儿的输入许多:

  • encoded text:编码之后的输入文本

  • CLIP text embedding:CLIP 模型核算的文本的嵌入表明

  • embedding for the diffusion timestep: 当前分散模型的时刻步

  • noised CLIP image embedding:带噪的CLIP 图画嵌入表明

  • a Transformer embedding:Transformer 自己的嵌入特征表明

这些所有的输出组合起来,拿去猜测没加过CLIP嵌入特征的图画的表明。其他的就和普通的分散模型完全相同了。

方针函数用的是:

Lprior=Et∼[1,T],zi(t)∼qt[∥f(zi(t),t,y)−zi∥2]L_{\text {prior }}=\mathbb{E}_{t \sim[1, T], z_i^{(t)} \sim q_t}\left[\left\|f_\theta\left(z_i^{(t)}, t, y\right)-z_i\right\|^2\right]

这儿发现最终算方针函数用的是ziz_i,而不是猜测噪声,由于在DALLE 2中作者发现很风趣的一点是DDPM之后优化了分散模型,我们都从猜测图画转变到了猜测噪声上,但是在这个试验里作者发现直接去猜测特征得到的作用会更好。


以上便是整个DALLE 2 模型的办法介绍。图画生成这边的模型很难画结构,不看代码的话很难掌握全体办法,所以感兴趣的能够自己去再去过一下代码。当然了,不必找代码了DALLE 2不开源,所以我们只可意会了。