持续创造,加快成长!这是我参加「日新计划 10 月更文挑战」的第24天,点击检查活动详情
论文地址:Hierarchical Text-Conditional Image Generation with CLIP Latents
赏析大师
Hierarchical Text-Conditional Image Generation with CLIP Latents
看一下标题啊,运用CLIP出来的特征来做一个层级式的文本到图画的生成器。
咱们能够取得三个线索:
-
用到了CLIP模型
CLIP模型作为DALLE 2的基础,先找到图片文本之间的关联。真个DALLE 2模型都离不开CLIP。
-
在DALLE 2中给定一个文本,CLIP就能够对文本编码取得对应的特征。
-
DALLE 2有一个prior模型,输入是文本特征,输出是图画特征。
-
把取得的图画特征传给DALLE 2的解码器,就能够生成图画了。
CLIP对DALLE 2来说很重要,不了解的能够先看一下介绍CLIP的文章:[CLIP打通文本图画壁垒,为AI图画生成打下
-
-
层级式
层级式是由于DALLE 2先生成一个6464的图画,再运用一个模型上采样生成一个256256,你以为这就完了吗,还有一个模型继续上采样到10241024,所以最终DALLE生成出来的是一个10241024的高清大图。
-
文本到图画生成
这个就没什么可说的了,现在text to image生成的工作发展地如火如荼。
DALLE 2是什么
之前OpenAI的CLIP现已做的挺好的了,既能获取到文本对应图片语义信息又能获取到图片的风格信息,既然信息现已能够抽取地这么好了,那只拿着它去做分类是不是很可惜,所以能不能多加运用呢?
为了能充分发挥CLIP的优势,所以作者测验运用CLIP取得的特征去做图画的生成,因而他们做了一个两阶段的模型。
-
prior:给定一个文本caption发生一个和CLIP模型相似的图画嵌入表明(image embedding)
-
decoder:通过图画嵌入表明解码生成对应的图画
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模型就能够拆解成两部分:
-
prior:P(zi∣y)P(z_i|y),依据输入文本yy发生图画的嵌入表明ziz_i。
-
decoder:P(x∣zi,y)P(x|z_i,y),依据文本yy和prior得到的图画嵌入表明ziz_i重建图片xx。当然文本yy也能够不加的。
整个过程的数学表明为:
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嵌入特征的图画的表明。其他的就和普通的分散模型完全相同了。
方针函数用的是:
这儿发现最终算方针函数用的是ziz_i,而不是猜测噪声,由于在DALLE 2中作者发现很风趣的一点是DDPM之后优化了分散模型,我们都从猜测图画转变到了猜测噪声上,但是在这个试验里作者发现直接去猜测特征得到的作用会更好。
以上便是整个DALLE 2 模型的办法介绍。图画生成这边的模型很难画结构,不看代码的话很难掌握全体办法,所以感兴趣的能够自己去再去过一下代码。当然了,不必找代码了DALLE 2不开源,所以我们只可意会了。