DALL-E 系列:AI绘画背后的惊人真相!!【1个离奇内幕、3个意想不到、5大秘密揭示】

DALL-E 系列:AI绘图原理,根据用户给出的描述,生成与描述相匹配的图像

    • DALL-E 1
      • dVAE
      • Transformer
    • DALL-E 2
      • CLIP
      • 先验 prior
      • decoder(image)
    • DALL-E 3

 


论文地址:https://arxiv.org/pdf/2102.12092.pdf

DALL-E 的提出是为了解决图像生成的问题,即通过文字描述生成对应的图像。

DALL-E 文生图官网:https://labs.openai.com/

DALL-E 1

DALL-E算法分为三个阶段,分别训练 DVAE、DALL-E 和 CLIP 模型。

  • DVAE 用于图像特征编码和解码( 下图 Stage One 的 dVAE )
  • DALL-E 结合图像和文本特征生成图像(下图的 Stage Two)
  • CLIP用于图像排序和匹配( 下图 Sample Ganeration、Rerank using CLIP )

DALL-E的推理主要分为三个阶段,其中前两个阶段对应上图中的Stage One和Stage Two。

第一阶段,DALL-E 将一张256×256的图片分成32×32个小块。

每个小块都经过训练好的离散VAE模型的编码器进行处理。

编码器将每个小块映射到一个大小为8192的词表中,这个词表可以看作是一个包含很多不同特征的列表。

这样,每个小块都被表示为一个唯一的token,而不是原始的像素值。

最终,整张图片被表示为1024个(上图红色 l 1 . . . . l N l_{1}....l_{N} l1....lN)这样的token,其中每个token代表着图片的一个小块。

  • 1024 是把,输入图的 256x256 压缩成 32x32(1024)
  • 每个位置有 8192 种可能的值
  • 也就是说 dVAE 的 encoder 输出是维度为 32x32x8192 的 logits(每个类别的得分或概率)

这种表示方式可以帮助 DALL-E 更好地理解图片的结构和特征,从而在后续的生成过程中更好地控制和生成与给定图片相关的内容。

 
第二阶段,DALL-E使用 BPE 编码器对文本进行编码。

BPE是一种常用的文本编码技术,将文本分割成更小的单元,通过组合这些单元来表示更复杂的文本结构。

通过 BPE-encoder 对文本进行编码,最多可以得到256个token(上图绿色 l 1 . . . l m l_{1}...l_{m} l1...lm)。

如果文本不足256个token,就会进行填充,以达到256个token的长度。这样,每个token代表文本的一个部分或特征。

然后,将这256个文本token与之前得到的1024个图像token进行拼接。

得到一个长度为1280的数据(上图绿色+红色块)。

这个拼接的数据包含了文本和图像的信息。

最后,这个拼接的数据被输入到训练好的Transformer模型中。

 

第三阶段,DALL-E使用已经训练好的模型生成图像。

  • Sample Generation(上图)
  • Rerank using CLIP(上图)

首先,模型通过对输入的1280个token进行处理和解码,生成一张图像。

这个生成的图像可能与给定的文本相关,但也可能不太符合预期。

为了评估生成的图像与给定文本的匹配程度,DALL-E使用 CLIP 模型。

  • 前置知识:CLIP 模型

CLIP 模型是一个能够理解和衡量图像与文本之间关系的模型。通过将生成的图像和给定的文本输入到CLIP模型中,可以计算出它们之间的相似度或匹配程度。

然后,DALL-E对生成的图像进行采样,即生成多个不同版本的图像。

这些采样结果与给定文本一起,作为输入送入CLIP模型。

CLIP模型会对每个采样结果和给定文本进行评分,排序出最与给定文本匹配的生成图像。

  • 产生的结果再用 clip 选择一个最合适的进行输出。

这样,通过对模型生成的图像进行采样,并使用CLIP模型对采样结果进行排序,DALL-E能够找到与给定文本最匹配的生成图像。

这个过程可以提高生成图像的质量和与文本的关联性。

&nsbp;

dVAE

dVAE 是 VQVAE。

假设我们有一张猫的图像,它有大眼睛和尖耳朵。

对于VAE,会学习到这个猫图像的均值和方差,比如大眼睛的均值和方差、尖耳朵的均值和方差。然后,从这些高斯分布中采样,生成新的猫图像,可能会有稍微不同的大眼睛和尖耳朵。

对于VQVAE,会将这张猫的图像转换成一些离散的编码。比如选择一个表示大眼睛的编码和一个表示尖耳朵的编码。然后,通过解码器,可以使用这些编码来生成新的猫图像,可能会有稍微不同的大眼睛和尖耳朵的组合。

俩者区别:

VAE生成的样本可能会有一些模糊和平滑的效果,而VQVAE生成的样本则更加清晰和锐利。

  • VAE 只能在高斯分布的范围内生成样本,生成的图像或数据会比较平滑和连续,会有一些模糊和模糊的效果。
  • VQVAE通过直接匹配代码簿中的向量来生成,生成的样本会更加清晰和锐利,因为代码簿特定编码经过训练优化,能够更好地捕捉数据的重要特征、提供抽象表示能力,并生成清晰、锐利的样本。

因为这个词表是离散的,不可导。

dVAE 引入 Gumbel-Softmax-trick 解决不可导,就是通过引入随机性来近似最大值的选择,变得可导。

  • 使用一个特殊的 Gumbel 分布来加入随机噪声。
  • 使用softmax函数来对这些带有噪声的值进行归一化,以得到一个概率分布。
  • 最终,可以通过对这个概率分布进行采样,来选择最接近的编码。

在重建图像的过程中,通常使用一个分布来建模图像的像素值。传统的方法通常使用高斯分布来建模图像像素的概率分布。

提出了 logit-Laplace 分布(拉普拉斯变体)代替真实图像与高斯图像不匹配。

logit-Laplace分布是一种以 logit 函数为参数的 Laplace 分布。

与高斯分布相比,logit-Laplace分布能够更好地捕捉到图像中的边缘和细节,因为它的尾部分布更加重。

dVAE 就是在 VAE 只能高斯分布生成图像基础上,变成,特定编码表生成 + 引入随机性来近似最大值的选择 + 拉普拉斯变体。

如果对 dVAE 模块感兴趣,请猛击:《漫谈VAE和VQVAE,从连续分布到离散分布》

Transformer

Transformer 模块有:64层注意力,每层注意力62个头,每个头64注意力维度。

有 64 层注意力

  • 注意力层是神经网络模型中的一种组件,用于将模型的注意力集中在输入数据的不同部分上。

每层注意力有 62 个头

  • 注意力头是在注意力机制中的并行处理单元,可以同时关注输入数据中的不同位置和特征。

每个头 64 注意力维度

  • 每个头可以生成的注意力权重的数量,这些权重用于加权不同位置的输入数据。

attention层使用了行注意力mask、列注意力mask、卷积注意力mask三种稀疏注意力:

Transformer的输入:

  • pad embd 通过学习得到,为每个位置都训练了一个 pad embd,即 256 个pad embd。

  • 在对文本 token 进行 pad 时,使用对应位置的 pad embd。

DALL-E 2

论文地址:http://arxiv.org/abs/2204.06125
代码实现:https://github.com/lucidrains/DALLE2-pytorch

DALL-E 2 改进在于,生成高度逼真的图片。

模型分为 3 部分:CLIP(下图虚线之上)、先验Prior、decoder(image)

3 个模块各自训练。

CLIP

CLIP 模块目的是文本编码和图像对应。

  • 前置知识:CLIP 模型

 

先验 prior

先验 prior:

先将文本编码器中的文本拿出,把文本向量,输入 z t z_{t} zt

再从图像编码器中的图像拿出来,把图像向量,输入 z i z_{i} zi,输出 z i ′ z'_{i} zi

希望 输入 z i z_{i} zi,输出 z i ′ z'_{i} zi 越接近越好,根据这个来更新 prior(扩散模型实现)。

训练好 prior 后,走一遍流程:文本编码器 -> prior -> z t z_{t} zt,得到新图像。

 

decoder(image)

decoder(image):从图像特征还原出真实图像。


不过生成图像结构一样,增加多样性后又不一样:

DALL-E 2 不仅能文生图,还可以图像修补、图像风格迁移。

还有一些问题:容易把物体和属性混淆、文本放入图像能力不足、复杂场景细节处理不真实。

DALL-E 3

论文地址:https://cdn.openai.com/papers/dall-e-3.pdf

DALL-E 3 链接:https://openai.com/dall-e-3

DALL-E 3 经过精心设计,对提示词的完美遵循。

无论是整体的环境描写,还是精确到物体数量、着装、颜色这种细节叙述,DALL·E 3都能很好地理解,并生成对应的画作,丝毫不漏重点。

能够将抽象的想法和提示转化为异常准确的图像。

比如能将模糊的形容词,如繁华、讨价还价、脾气暴躁等词汇用绘画的方式演绎得活灵活现。

和 DALLE2 对比,在细节、清晰度、明亮度等方面都能看出两者生成的明显差异。

  • DALLE3 能够更有效地细化手部等小细节,更加准确地表示具体特定对象和它们之间关系的场景。

训练了一个“图像字幕器”(image captioner),专门用来给数据集中的图像重新生成文本描述。

用AI来合成文本训练出来的模型:


95%的图像用合成文本描述 + 5%图像依旧使用人工描述,CLIP的效果是最好的。

属于大力出奇迹。

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

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

相关文章

Android 原始方法实现Tablayout样式

源码: 【免费】Android原始方法实现Tablayout样式资源-CSDN文库 推荐: GitHub - hackware1993/MagicIndicator: A powerful, customizable and extensible ViewPager indicator framework. As the best alternative of ViewPagerIndicator, TabLayout …

PowerShell实战(一)PowerShell使用ImportExcel模块轻松操作Excel

目录 一、介绍 二、安装模块 三、操作示例 1、导出excel 2、读取Excel数据 3、导出包含图表的Excel 4、导出包含汇总列和图表的Excel 一、介绍 ImportExcel模块可以理解为基于PowerShell环境操作Excel的强大类库,使用它可以在 Windows、Linux 和 Mac 上都可以使用。…

119. 杨辉三角 II

描述 : 给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和 题目 : LeetCode 119. 杨辉三角 II : 119. 杨辉三角 II 分析 : 这道题用二维数组来做 . 解析 : class Solution {pub…

GPT-4V with Emotion:A Zero-shot Benchmark forMultimodal Emotion Understanding

GPT-4V with Emotion:A Zero-shot Benchmark forMultimodal Emotion Understanding GPT-4V情感:多模态情感理解的zero-shot基准 1.摘要 最近,GPT-4视觉系统(GPT-4V)在各种多模态任务中表现出非凡的性能。然而,它在情感识别方面的功效仍然是个问题。本文定…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Spring的AOP前奏

第一章 AOP前奏 1.1 代理模式 代理模式:我们需要做一件事情,又不期望自己亲力亲为,此时,可以找一个代理【中介】 我们【目标对象】与中介【代理对象】不能相互转换,因为是“兄弟”关系 1.2 为什么需要代理【程序中…

css+html横向滚动+固定宽

没什么好说的&#xff0c;快上代码&#xff01; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Do…

微服务实战系列之ZooKeeper(上)

前言 历经1个多月的创作和总结&#xff0c;纵观博主微服务系列博文&#xff0c;大致脉络覆盖了以下几个方面&#xff1a; 数据方面&#xff08;缓存&安全&#xff09; 比如Redis、MemCache、Ehcache、J2cache&#xff08;两级缓存框架&#xff09;、RSA加密、Sign签名…传…

Pycharm enable IntelliBot #patched后,工程无法打开

#本地环境# Pycharm&#xff1a;2023.12 Pro 对应robot pkg版本&#xff1a; robotframework 6.1 robotframework-databaselibrary 1.2.4 robotframework-pythonlibcore 4.1.2 robotframework-requests 0.9.4 robotframework-seleniumlibrary 6.1.…

各种不同语言分别整理的拿来开箱即用的8个开源免费单点登录(SSO)系统

各种不同语言分别整理的拿来开箱即用的8个开源免费单点登录&#xff08;SSO&#xff09;系统。 单点登录&#xff08;SSO&#xff09;是一个登录服务层&#xff0c;通过一次登录访问多个应用。使用SSO服务可以提高多系统使用的用户体验和安全性&#xff0c;用户不必记忆多个密…

electron与cesium组件入门应用功能

electron与cesium组件入门应用功能 运行应用效果图&#xff1a; electron应用目录&#xff0c;需要包括三个文件: index.html main.js package.json (一)、创建一个新项目 目录名称&#xff1a;project_helloWolrd (二)、生成package.json文件 npm init --yes(三&#x…

短视频账号矩阵系统3年技术独立源头正规开发搭建

短视频账号矩阵3年技术独立开发打造是一个非常有挑战性和前景的项目。以下是一些建议&#xff0c;帮助你成功打造一个成功的短视频账号矩阵&#xff1a; 1. 确定目标受众&#xff1a;首先需要明确你的目标受众是谁&#xff0c;了解他们的兴趣爱好、年龄、性别等&#xff0c;以便…

【Logback技术专题】「入门到精通系列教程」深入探索Logback日志框架的原理分析和开发实战技术指南(上篇)

深入探索Logback日志框架的原理分析和开发实战指南系列 Logback日志框架Logback基本模块logback-corelogback-classiclogback-accessLogback的核心类LoggerAppenderLayoutLayout和Appender filterlogback模块和核心所属关系 Logbackj日志级别日志输出级别日志级别介绍 Logback的…

向华为学习:基于BLM模型的战略规划研讨会实操的详细说明,含研讨表单(四)

2023年只剩下不到10天了&#xff0c;如何科学、系统地制定2024年的公司战略&#xff1f;如果您还没有找到好的方法&#xff0c;或者对过去的方法不是很满意&#xff0c;或者想探索习方法&#xff0c;不妨来看看华为和许多标杆企业在用的——基于BLM模型来组织战略规划。 前面三…

Word写大论文常见问题(持续更新)

脚注横线未定格 解决方案&#xff1a;“视图”-“草图”&#xff0c;“引用”-“显示备注”-选择“脚注分隔符”&#xff0c;把横线前的空格删掉。 2.PPT做的图插入word中清晰度太低 解决方案&#xff1a;PPT-图形-“另存为图片”-“可缩放矢量图格式”-粘贴到word中。 3.E…

Linux - 非root用户使用systemctl管理服务

文章目录 方式一 &#xff08;推荐&#xff09;1. 编辑sudoers文件&#xff1a;2. 设置服务文件权限&#xff1a;3. 启动和停止服务&#xff1a; 方式二1. 查看可用服务&#xff1a;2. 选择要配置的服务&#xff1a;3. 创建自定义服务文件&#xff1a;4. 重新加载systemd管理的…

【可用性】Redis作为注册中心配合Spring Task的高可用案例

需求&#xff1a; 假设当前有一个短信服务是多节点集群部署&#xff0c;我们希望每个服务节点在启动时能将服务信息"注册"到redis缓存中&#xff0c;所有服务节点每隔3分钟上报一次&#xff0c;表示当前服务可用。每个服务还会作为哨兵节点每隔10分钟查询一次redis&a…

CRM客户登记管理系统:企业数字化转型的必备工具

客户登记管理系统&#xff08;CRM&#xff09;是一种用于记录和管理客户信息的软件系统。它用于存储和跟踪客户的基本信息、联系方式、交易历史、服务请求等关键数据&#xff0c;以便企业能够更好地了解客户、提供个性化的服务&#xff0c;并进行有效的销售和营销活动。 CRM系统…

扫描电镜操作的注意点有哪些

扫描电子显微镜&#xff08;SEM&#xff09;是一种高分辨率的显微镜&#xff0c;用于观察微观尺度的表面形貌。在操作SEM时&#xff0c;需要注意一些关键的操作注意点&#xff0c;以确保获得高质量的显微图像和保护仪器的正常运行。以下是一些常见的扫描电子显微镜操作注意点&a…

【分治算法】运算的优先级

最典型的回溯算法就是归并排序&#xff0c;核心逻辑如下&#xff1a; public void sort(int[] nums, int lo, int ho){int mid (lo hi) / 2;//对数组的两部分分别排序sort(nums,lo, mid);sort(nums, mid1,hi);//合并两个排好序的子数组merge(nums, lo, mid, hi); }添加括号的…

uniapp 用于开发H5项目展示饼图,使用ucharts 饼图示例

先下载ucharts H5示例源码&#xff1a; uCharts: 高性能跨平台图表库&#xff0c;支持H5、APP、小程序&#xff08;微信小程序、支付宝小程序、钉钉小程序、百度小程序、头条小程序、QQ小程序、快手小程序、360小程序&#xff09;、Vue、Taro等更多支持canvas的框架平台&#…