AIGC实战——多模态模型DALL.E 2

news2024/12/25 9:21:31

AIGC实战——多模态模型DALL.E 2

    • 0. 前言
    • 1. 模型架构
    • 2. 文本编码器
    • 3. CLIP
    • 4. 先验模型
      • 4.1 自回归先验模型
      • 4.2 扩散先验模型
    • 5. 解码器
      • 5.1 GLIDE
      • 5.2 上采样器
    • 6. DALL.E 2 应用
      • 6.1 图像变体
      • 6.2 先验模型的重要性
      • 6.3 DALL.E 2 限制
    • 小结
    • 系列链接

0. 前言

DALL.E 2OpenAI 设计用于文本生成图像的生成模型。该模型的第一个版本 DALL.E2021 年发布,引起了对生成多模态模型的广泛关注。在本节中,我们将介绍该模型的第二个版本 DALL.E 2,该模型于 2022 年发布,DALL.E 2 进一步促使我们了解人工智能 (Artificial Intelligence, AI) 解决多模态问题的能力。它不仅在学术上具有重要意义,同时迫使我们思考 AI 创造性过程中的角色问题,这种制造性问题一直以来被认为是人类独有的能力。

1. 模型架构

为了了解 DALL.E 2 的工作原理,我们首先必须了解其整体架构,如下图所示。

模型架构

我们需要了解以下三个关键组件:文本编码器 (Text encoder)、先验模型 (Prior) 和解码器 (Decoder)。首先,文本通过文本编码器生成文本嵌入向量。然后,这个向量经过先验模型转换成图像嵌入向量。最后,图像嵌入向量连同原始文本一起传递给解码器生成图像。我们将逐个介绍每个组件,以完整地了解 DALL.E 2 的工作原理。

2. 文本编码器

文本编码器 (Text encoder) 的目标是将文本提示 (prompt) 转换为表示文本提示概念意义的嵌入向量,在潜空间中表达。将离散的文本转换为连续的嵌入向量对于所有下游任务来说都是至关重要的,因为我们可以根据特定下游任务进一步操纵该向量。
DALL.E 2 中,并未从头开始训练文本编码器,而是使用了一个名为 CLIP (Contrastive Language-Image Pre-training) 的模型。因此,要理解文本编码器,我们需要首先了解 CLIP 的工作原理。

3. CLIP

CLIPOpenAI2021 年提出的,是一个能够有效地从自然语言中学习视觉概念的神经网络。它使用对比学习技术,将图像与文本描述进行匹配。该模型利用从互联网上获取的 4 亿个文本-图像对数据集进行训练。给定一张图片和一系列可能的文本描述, CLIP 的任务是找到与图片相匹配的描述。
对比学习背后的核心思想很简单,训练两个神经网络:一个将文本转换为文本嵌入向量的文本编码器,以及一个将图像转换为图像嵌入向量的图像编码器。然后,给定一批文本-图像对,使用余弦相似度比较所有文本和图像嵌入向量的组合,并训练网络最大化匹配的文本-图像对的得分,同时最小化错误的文本-图像对的得分,过程如下所示。

对比学习

CLIP 本身不是生成模型,它无法生成图像或文本。它更像是一个判别模型,因为最终输出的是关于给定集合中哪个文本描述与给定图像最匹配(或者反过来,哪个图像最能匹配给定的文本描述)的预测。
文本编码器和图像编码器都是 Transformer 模型,其中图像编码器是 Vision Transformer (ViT) 模型,将注意力机制应用于图像中。
CLIP 有趣的地方在于它可以用于从未接触过的任务上进行零样本预测。例如,假设我们想要使用 CLIP 来预测 ImageNet 数据集中给定图像的标签。我们可以通过使用一个模板(例如“一张<标签>的照片”)将 ImageNet 标签转换为句子,如下图所示。

将标签转换为句子

要预测给定图像的标签,我们可以将其通过 CLIP 图像编码器,并计算图像嵌入向量与所有可能的文本嵌入向量之间的余弦相似度,以找到得分最高的标签,如下图所示。

计算图像嵌入向量

无需重新训练 CLIP 神经网络,就可以将它轻松应用新任务。它使用语言作为共同域,通过该域可以表达任何标签集合。
使用这种方法,CLIP 在各种图像数据集标注挑战中都具有良好的性能表现,如下图所示。而其他在特定数据集上训练以预测给定标签集的模型,往往在应用于具有相同标签的不同数据集时性能交叉,因为它们倾向于高度优化在其训练集上训练的个别(异常)数据集。相比之下,CLIP 更加稳定,因为它学到了对完整文本描述和图像的深入概念理解,而不仅仅擅长类似“将单个标签分配给给定数据集中的图像”这类狭义的任务。

CLIP

CLIP 是根据其判别能力进行评估的,那么它如何帮助我们构建诸如 DALL.E 2 这样的生成模型呢?我们可以将经过训练的文本编码器作为 DALL.E 2 等较大模型的一部分使用,其权重被冻结。经过训练的编码器只是一个用于将文本转换为文本嵌入向量的通用模型,对于生成图像等下游任务非常有用。经过训练的文本编码器能够捕捉到丰富的文本概念理解,尽可能地与其匹配的图像嵌入向量具有相似性,而后者根据相匹配的图像生成。因此,它是我们从文本域过渡到图像域所需的第一部分。

4. 先验模型

先验模型将文本嵌入向量转换为 CLIP 图像嵌入向量,DALL.E 2 尝试了两种不同的方法来训练先验模型:

  • 自回归模型
  • 扩散模型

并证明了扩散模型优于自回归模型,且计算效率更高。在本节中,我们将同时介绍这两种方法并了解它们的区别。

4.1 自回归先验模型

自回归模型按顺序生成输出,通过对输出符号(例如单词、像素)进行排序,并根据先前的符号生成下一个符号,在递归神经网络、Transformer 和 PixelCNN 中我们已经学习了如何应用自回归模型。
DALL.E 2 的自回归先验 (Autoregressive prior) 模型是一个编码器-解码器 Transformer。它的训练目标是在给定 CLIP 文本嵌入向量的情况下重新生成 CLIP 图像嵌入,如下图所示。

自回归先验模型

该模型是在 CLIP 文本-图像对数据集上进行训练的。可以将其视为从文本域跳转到图像域所需的第二个部分,即将一个向量从文本嵌入潜空间转换为图像嵌入潜空间。
输入文本嵌入通过 Transformer 的编码器进行处理,以产生另一个表示,该表示与当前生成的输出图像嵌入一起馈送到解码器中。输出是逐元素生成的,强制将预测的下一个元素与实际的 CLIP 图像嵌入进行比较。
生成的顺序性意味着自回归模型的计算效率低于扩散先验模型。

4.2 扩散先验模型

[扩散模型]逐渐为生成建模的首选,在 DALL.E 2 中,使用了一个仅有解码器的 Transformer 作为先验模型,并使用扩散过程进行训练,训练和生成过程如下图所示。

扩散先验模型

在训练过程中,每个CLIP文本和图像嵌入对首先被连接成一个单一的向量。然后,图像嵌入在1000个时间步长内加入噪声,直到与随机噪声无法区分。然后,训练扩散先验 (Diffusion prior) 模型以预测上一个时间步的去噪图像嵌入。先验模型始终可以访问文本嵌入,因此可以根据这些信息对其预测进行调整,逐渐将随机噪声转变为预测的CLIP图像嵌入。损失函数是去噪步骤的平均均方误差。
为了生成新的图像嵌入,对随机向量进行采样,预处理相关的文本嵌入,并多次将其通过训练的扩散先验模型。

5. 解码器

DALL.E 2 的最后部分是解码器,根据文本提示和先验模型输出的预测图像嵌入生成最终图像。
解码器的架构和训练过程借鉴了生成模型 GLIDE (Guided Language to Image Diffusion for Generation and Editing)。GLIDE 能够根据文本提示生成逼真的图像,与 DALL.E 2 的工作方式非常相似。不同之处在于,GLIDE 并不使用 CLIP 嵌入,而是直接使用原始文本提示进行训练,如下图所示。

GLIDE

5.1 GLIDE

GLIDE 是一种扩散模型,其使用 U-Net 架构作为去噪器,使用 Transformer 架构作为文本编码器。它通过文本提示来消除添加到图像上的噪音。最后,训练一个上采样器,将生成的图像尺寸缩放为 1,024×1,024 像素。
GLIDE 模型中把包括 35 亿个可训练参数,其中包括 23 亿个用于视觉部分模型( U-Net 和上采样器)的参数和 12 亿个用于 Transformer 模型的参数,并在 2.5 亿个文本-图像对上进行训练。
扩散过程如下图所示。首先使用 Transformer 创建输入文本提示的嵌入,然后使用该嵌入指导 U-Net 进行去噪过程。当图像的输入、输出尺寸相同时(例如风格迁移、去噪等),U-Net 模型是完美的选择。

GLIDE

DALL.E 2 解码器同样使用 U-Net 去噪器和 Transformer 文本编码器架构,但还额外使用预测的 CLIP 图像嵌入进行条件控制。这是 GLIDEDALL.E 2 之间的关键差异,如下图所示。

GLIDE 与 GALL.E 2 差异

与所有扩散模型一样,为了生成新的图像,我们只需对一些随机噪声进行采样,以 Transformer 文本编码和图像嵌入为条件,多次通过 U-Net 去噪器进行处理,输出尺寸为 64 × 64 像素的图像。

5.2 上采样器

解码器的最后一部分是上采样器(两个独立的扩散模型)。第一个扩散模型将图像从 64 × 64 像素转换为 256 × 256 像素。第二个扩散模型再次将其转换为 1,024 × 1,024 像素,如下图所示。
使用上采样,可以令我们不必构建大型上游模型来处理高维图像。我们可以在整个过程中使用小尺寸图像,直到最后阶段再应用上采样器。这样可以节省模型参数,并确保上游训练过程更加高效。

上采样器

总之,DALL.E 2 利用预训练的 CLIP 模型生成输入提示的文本嵌入。然后,使用先验扩散模型将其转换为图像嵌入。最后,使用类似 GLIDE 的扩散模型,以生成输出图像,其条件是预测的图像嵌入和 Transformer 编码的输入提示。

6. DALL.E 2 应用

DALL.E2 能够以可信的方式将复杂、不同的概念结合起来,展示了人工智能和生成建模的重大飞跃。DALL.E 2 模型具有多种应用,其中之一是创建给定图像的变体。

6.1 图像变体

使用 DALL.E 2 解码器生成图像时,我们首先对由纯随机噪声组成的图像进行采样,然后在提供的图像嵌入的条件下,使用去噪扩散模型逐渐减少噪声量。选择不同的初始随机噪声样本将产生不同的图像。
为了生成给定图像的变体,我们只需要确定其图像嵌入,并将其馈送到解码器。我们可以使用原始的 CLIP 图像编码器来获得这个图像嵌入,该编码器明确设计为将图像转换为其 CLIP 图像嵌入。

图像变体

6.2 先验模型的重要性

先验模型的目的是利用预训练的 CLIP 模型向解码器提供有用的图像表示。但是,如果将文本嵌入(而非图像嵌入)直接传递给解码器,或者忽略 CLIP 嵌入,仅基于文本提示进行条件控制,这样是否会影响生成的质量?为了进行测试,可以尝试使用三种不同的方法:

  • 只使用文本提示作为解码器的输入(图像嵌入使用零向量)
  • 将文本提示和文本嵌入(将其视为图像嵌入)一起用作解码器的输入
  • 将文本提示和图像嵌入一起用作解码器的输入,即完整 DALL.E 2 模型

示例结果如下图所示。我们可以看到,当解码器缺乏图像嵌入信息时,它只能生成与文本提示大致近似的图像,无法捕获与刺猬和计算器之间的关系等关键信息。将文本嵌入视为图像嵌入进行处理的表现略好,但仍无法捕捉刺猬和计算器之间的关系。只有带有先验模型的完整模型才能生成准确反映提示中包含的所有信息的图像。

先验模型的重要性

6.3 DALL.E 2 限制

DALL.E 2 仍存在一些限制,包括属性绑定和文本生成,如下图所示。

DALL.E 2 限制

属性绑定是模型理解给定文本提示中单词之间关系的能力,尤其是属性与对象之间的关系。例如,根据“一个红色的立方体放在一个蓝色的立方体上方”生成的图像必须与“一个蓝色的立方体放在一个红色的立方体上方”有明显的区别。相比于 GLIDE 等早期模型,尽管生成的整体质量更好且更多样化,但 DALL.E 2 在这方面仍有所欠缺。
此外,DALL.E 2 无法准确地重现文本内容,这可能是因为 CLIP 嵌入并不捕捉拼写特征,而只包含文本的较高级表示。这些表示可以部分地成功解码为文本(例如,个别字母基本正确),但缺乏足够的组合理解以形成完整的单词。

小结

DALL.E 2OpenAI 提出的一个大规模文本生成图像模型,可以根据文本提示生成各种风格的逼真图像。它通过将预训练模型 CLIPGLIDE 中的扩散模型架构相结合完成任务。它还具有其他应用,例如通过文本提示编辑图像和提供给定图像的变体。虽然它也有一些局限性,例如不一致的文本渲染和属性绑定,但 DALL.E 2 是仍然一个非常强大的AI模型,推动了生成模型的发展。

系列链接

AIGC实战——生成模型简介
AIGC实战——深度学习 (Deep Learning, DL)
AIGC实战——卷积神经网络(Convolutional Neural Network, CNN)
AIGC实战——自编码器(Autoencoder)
AIGC实战——变分自编码器(Variational Autoencoder, VAE)
AIGC实战——使用变分自编码器生成面部图像
AIGC实战——生成对抗网络(Generative Adversarial Network, GAN)
AIGC实战——WGAN(Wasserstein GAN)
AIGC实战——条件生成对抗网络(Conditional Generative Adversarial Net, CGAN)
AIGC实战——自回归模型(Autoregressive Model)
AIGC实战——改进循环神经网络
AIGC实战——像素卷积神经网络(PixelCNN)
AIGC实战——归一化流模型(Normalizing Flow Model)
AIGC实战——能量模型(Energy-Based Model)
AIGC实战——扩散模型(Diffusion Model)
AIGC实战——GPT(Generative Pre-trained Transformer)
AIGC实战——Transformer模型
AIGC实战——ProGAN(Progressive Growing Generative Adversarial Network)
AIGC实战——StyleGAN(Style-Based Generative Adversarial Network)
AIGC实战——VQ-GAN(Vector Quantized Generative Adversarial Network)
AIGC实战——基于Transformer实现音乐生成
AIGC实战——MuseGAN详解与实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1651842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker搭建代码审计平台sonarqube

docker搭建代码审计平台sonarqube 一、代码审计关注的质量指标二、静态分析技术分类三、sonarqube流程四、快速搭建sonarqube五、sonarqube scanner的安装和使用 一、代码审计关注的质量指标 代码坏味道 代码规范技术债评估 bug和漏洞代码重复度单测与集成 测试用例数量覆盖率…

WPF 图片显示某一部分区域

效果图&#xff1a; 代码&#xff1a; <Image Width"32"HorizontalAlignment"Right"Height"32"Source"../../Resources/Images/BLUEWOLF.jpg"><Image.Clip><PathGeometry><PathFigure StartPoint"32,32&quo…

区块链 | NFT 相关论文:Preventing Content Cloning in NFT Collections(三)

&#x1f436;原文&#xff1a; Preventing Content Cloning in NFT Collections &#x1f436;写在前面&#xff1a; 这是一篇 2023 年的 CCF-C 类&#xff0c;本博客只记录其中提出的方法。 F C o l l N F T \mathbf{F_{CollNFT}} FCollNFT​ and Blockchains with Native S…

基于springboot+mybatis+vue的项目实战之(后端+前后端联调)

步骤&#xff1a; 1、项目准备&#xff1a;创建数据库&#xff08;之前已经创建则忽略&#xff09;&#xff0c;以及数据库连接 2、建立项目结构文件夹 3、编写pojo文件 4、编写mapper文件&#xff0c;并测试sql语句是否正确 5、编写service文件 6、编写controller文件 …

二、双fifo流水线操作——verilog练习与设计

文章目录 一、案例分析二、fifo_ctrl模块设计2.1 波形设计&#xff1a;2.2 代码实现2.2.1 fifo_ctrl2.2.2 顶层文件top_fifo_ctrl&#xff08;rx和tx模块省略&#xff09;2.2.3 仿真文件tb_fifo_ctrl 2.3波形仿真 一、案例分析 案例要求&#xff1a;写一个 fifo 控制器&#x…

浅谈消息队列和云存储

1970年代末&#xff0c;消息系统用于管理多主机的打印作业&#xff0c;这种削峰解耦的能力逐渐被标准化为“点对点模型”和稍复杂的“发布订阅模型”&#xff0c;实现了数据处理的分布式协同。随着时代的发展&#xff0c;Kafka&#xff0c;Amazon SQS&#xff0c;RocketMQ&…

【EasySpider】EasySpider+mysql执行配置异常

问题 使用易采集工具操作时候&#xff0c;遇到一个执行异常&#xff0c;后来发现没有选择数据类型 Loading stealth.min.js MySQL config file path: ./mysql_config.json 成功连接到数据库。 Successfully connected to the database. Traceback (most recent call last):…

联发科技发布天玑9300+旗舰5G生成式AI芯片 | 最新快讯

5 月 7 日消息&#xff0c;联发科技今天举办了天玑开发者大会 2024。大会上&#xff0c;联发科技开启了“天玑 AI 先锋计划”&#xff0c;联合业界生态企业发布了《生成式 AI 手机产业白皮书》&#xff0c;分享了生成式 AI 端侧部署的解决方案“天玑 AI 开发套件”。同时&#…

WPF中页面加载时由于TreeView页面卡顿

示例&#xff1a;右侧界面的数据根据左侧TreeView的选项加载不同的数据&#xff0c;页面加载时会把所有的数据加载一遍&#xff0c;导致页面卡顿。 解决办法&#xff1a; <Setter Property"IsSelected" Value"{Binding IsSelected}"/>

【@ohos.events.emitter (Emitter)】

ohos.events.emitter (Emitter) 本模块提供了在同一进程不同线程间&#xff0c;或同一进程同一线程内&#xff0c;发送和处理事件的能力&#xff0c;包括持续订阅事件、单次订阅事件、取消订阅事件&#xff0c;以及发送事件到事件队列的能力。 说明&#xff1a; 本模块首批接…

Windows下安装人大金仓数据库

1、点击安装包进行安装 2、双击进行安装 3、点击确定 4、接着选择下一步 5、勾选接收 6、选择授权文件 7、显示授权文件信息 8、选择安装位置 9

SEO之高级搜索指令(二)

初创企业需要建站的朋友看这篇文章&#xff0c;谢谢支持&#xff1a; 我给不会敲代码又想搭建网站的人建议 新手上云 &#xff08;接上一篇。。。。&#xff09; 5 、inanchor: inanchor:指令返回的结果是导入链接锚文字中包含搜索词的页面。百度不支持inanchor:。 比如在 Go…

解读TO B软件企业财报:回看2023,展望2024

随着2023年全年财报的陆续公布&#xff0c;TO B软件企业的未来方向愈发清晰。这些企业不仅在技术革新、财务稳健、客户多元化、AI应用和全球化战略上取得了显著进展&#xff0c;更在激烈的市场竞争中展现出了顽强的生命力。 然而&#xff0c;这一切的成就并非没有代价&#x…

[虚拟机+单机]梦幻契约H5修复版_附GM工具

本教程仅限学习使用&#xff0c;禁止商用&#xff0c;一切后果与本人无关&#xff0c;此声明具有法律效应&#xff01;&#xff01;&#xff01;&#xff01; 教程是本人亲自搭建成功的&#xff0c;绝对是完整可运行的&#xff0c;踩过的坑都给你们填上了 视频演示 [虚拟机单…

领域驱动设计架构演进

领域驱动设计由于其强调对领域的深入理解和关注业务价值,其架构演进依赖于领域的变化和特定领域中的技术实践。 初始阶段 一个单体架构,所有的功能都集成在一个应用程序中,领域模型可能还不完全清晰,甚至并未形成。这个阶段主要是为了验证产品的可行性,快速迭代并尽快推…

开抖音小店需要交多少保证金?全类目选择,一篇了解

哈喽~我是电商月月 做抖音小店前大家都会搜索“入驻抖音小店需要准备什么东西&#xff1f;”其中就包含了一项&#xff1a;类目保证金的缴纳 那到底要交多少钱&#xff1f;很多新手朋友还是不太了解 今天我就给大家解答这个问题&#xff0c;首先&#xff0c;我们要知道抖店的…

华为eNSP综合实验-网络地址转换

实验完成之后,在AR1的g0/0/1接口抓包,查看地址转换 实现私网pc访问公网pc 实验命令展示 SW1: vlan batch 12 #创建vlan interface e0/0/1 #进入接口配置vlan端口 port link-type access port default vlan 12 q interface e0/0/2 #进入接口配置vlan端口 port link-type ac…

很好的Baidu Comate,使我的编码效率飞起!

文章目录 背景及简单介绍Baidu Comate安装功能演示总结 &#x1f381;写在前面&#xff1a; 观众老爷们好呀&#xff0c;这里是前端小刘不怕牛牛频道&#xff0c;今天牛牛在论坛发现了一款便捷实用的智能编程助手&#xff0c;就是百度推出的Baidu Comate。下面是Baidu Comate评…

20232810 2023-2024-2 《网络攻防实践》实验八

一、实践内容 1.1 恶意代码 1.1.1 简介 定义&#xff1a;恶意代码&#xff08;Malware,或Malicious Code&#xff09;指的是使计算机按照攻击者的意图执行以达到恶意目标的指令集。 指令集合&#xff1a;二进制执行文件、脚本语言代码、宏代码、寄生在文件或者启动扇区的指令…

CrossOver软件安装成功但找不到为什么 用 CrossOver 安装的 Windows 软件在哪

如果我们想要在 Mac 上安装 Windows 软件&#xff0c;除了安装双系统和安装虚拟机&#xff0c;更多的人会选择安装 CrossOver 这款非常好用的系统兼容软件。在用 CrossOver 安装的 Windows 软件之后&#xff0c;这些软件我们可以在哪里可以找到呢&#xff1f; 如果使用CrossOve…