当前位置:首页 > 技术 > 正文内容

DALL·E 2 文本到图像生成都给我卷起来

Lotus2022-12-19 10:19技术

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

赏析大师

Hierarchical Text-Conditional Image Generation with CLIP Latents

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

我们可以获得三个线索:

  1. 用到了CLIP模型

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

    • 在DALL·E 2中给定一个文本,CLIP就可以对文本编码获得对应的特征。

    • DALL·E 2有一个prior模型,输入是文本特征,输出是图像特征。

    • 把获得的图像特征传给DALL·E 2的解码器,就可以生成图像了。

    CLIP对DALL·E 2来说很重要,不了解的可以先看一下介绍CLIP的文章:[CLIP打通文本图像壁垒,为AI图像生成打下

  2. 层级式

    层级式是因为DALL·E 2先生成一个64×64的图像,再使用一个模型上采样生成一个256×256,你以为这就完了吗,还有一个模型继续上采样到1024×1024,所以最后DALL·E生成出来的是一个1024×1024的高清大图

  3. 文本到图像生成

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

DALL·E 2是什么

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

为了能充分发挥CLIP的优势,所以作者尝试使用CLIP获得的特征去做图像的生成,因此他们做了一个两阶段的模型。

  • prior:给定一个文本caption产生一个和CLIP模型类似的图像嵌入表示(image embedding)

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

image.png

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)$。给定图片$x$,令$z_i$是CLIP出来的图像嵌入表示,$z_t$为CLIP出来的文本嵌入表示,整个DALL·E 2模型就可以拆解成两部分:

  1. prior:$P(z_i|y)$,根据输入文本$y$产生图像的嵌入表示$z_i$。

  2. decoder:$P(x|z_i,y)$,根据文本$y$和prior得到的图像嵌入表示$z_i$重建图片$x$。当然文本$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,让扩散模型的指标更能打

在DALL·E 2的decoder中用的方法是CLIP guidance + classifier-free guidance。就是说DALL·E 2中的guidance可能来自于文本,也可能来自于CLIP模型, 在这里随机将10%的CLIP的特征表示设置为$\phi$,在训练过程中随机去掉50%的文本caption。

层级式生成

这里就是为了提高生成图片的质量,先用模型生产64 × 64 的小图,再使用两个上采样模型,使分辨率逐步提高到256 × 256,1024×1024。

为了提高训练的稳定性,训练过程中加了很多噪声。在网络结构上,由于用的都是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嵌入特征的图像的表示。其他的就和普通的扩散模型完全一样了。

目标函数用的是:

$$ 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] $$

这里发现最后算目标函数用的是$z_i$,而不是预测噪声,因为在DALL·E 2中作者发现很有趣的一点是DDPM之后优化了扩散模型,大家都从预测图像转变到了预测噪声上,但是在这个实验里作者发现直接去预测特征得到的效果会更好。


以上就是整个DALL·E 2 模型的方法介绍。图像生成这边的模型很难画框架,不看代码的话很难把握整体方法,所以感兴趣的可以自己去再去过一下代码。当然了,不用找代码了DALL·E 2不开源,所以大家只可意会了。

原文链接

扫描二维码推送至手机访问。

版权声明:本文来源于网络,仅供学习,如侵权请联系站长删除。

本文链接:https://news.layui.org.cn/post/1145.html

分享给朋友:

“DALL·E 2 文本到图像生成都给我卷起来” 的相关文章

Android平台实现mp4文件实时推送RTMP|轻量级RTSP服务|GB28181平台

好多开发者有这样的诉求,想把本地录制的MP4文件,以实时流数据的形式,推送到RTMP服务器,注入轻量级RTSP服务,或者对接到GB28181平台,这块前几年我们就有对接。 本次以MediaExtractor为例,先利用MediaExtractor,把mp4文件的音视频数据分离,然后调用我们publisher模块,实现编码后的数据对接到RTMP服务器、轻量级RTSP服务或GB28181平台即可,废...

一次服务器被入侵的处理过程分享

下文中的,给文件和目录加锁,是指给文件和目录增加了一些属性,只读等。 chattr +ia 目录 一、服务器入侵现象 二、服务器排查和处理 2.1、服务器被入侵的可能原因 2.2、排查和处理步骤 三、本次入侵需要带来启示的点 四、本次服务器被入侵的一些启示 一、服务器入侵现象 近期有一个朋友的服务器(自己做了网站)好像遭遇了入侵,具体现象是: 服务器 CPU 资源长期 1...

CentOS 7.9 安装 MySQL 5.7.35

CentOS 7.9 安装 MySQL 5.7.35 1 下载地址:https://downloads.mysql.com/archives/community/ 2 mysql5.7.35 安装包上传到linux服务器 使用Xftp 或者wget在服务器上下载 # 推荐使用wget yun install -y wget wget https://downloads.mysql.com/ar...

.Net CLR GC plan_phase二叉树和Brick_table

楔子 别那么懒,勤快点。以下取自CLR PreView 7.0。 主题 GC计划阶段(plan_phase)主要就两个部分,一个是堆里面的对象构建一颗二叉树(这颗二叉树的每个节点包含了诸如对象移动信息等等,此处不述)。但是,这个二叉树如果过于庞大(对象太多的情况),则成了性能瓶颈(从根节点遍历需要查找的节点的空间和时间复杂度)。于是乎,第二个部分Brick_table出现了,它主要是分割这个庞大的...

谣言检测(PLAN)——《Interpretable Rumor Detection in Microblogs by Attending to User Interactions》

论文信息 论文标题:Interpretable Rumor Detection in Microblogs by Attending to User Interactions论文作者:Ling Min Serena Khoo, Hai Leong Chieu, Zhong Qian, Jing Jiang论文来源:2020,AAAI论文地址:download 论文代码:download...

微软出品自动化神器Playwright(Playwright+Java)系列(四) 之 浏览器操作

写在前面 今天是国庆节的最后一天,明天又要上班了,真的是感觉好像才开始放假一样,还是因为失恋没缓过来吗? 我的国庆七天 第1天,当了近半天的司机,陪家人去各大超市去购物,下午在家躺····· 第2-5天,重感冒,鼻涕不止,浑身酸痛乏力,两卷卫生纸下去,鼻子已经废了,真的是躺平了······ 第6天,打嗝不止,干咳、嗓子发炎肿了、鼻子烧了、嗓子基本说不出话了······ 综上,真的这个假期过的好累,...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。