DALL·E 2 解读

2023-11-04

目录

一、导读

论文信息

CLIP(打通文本-图像模型)相关讲解:

扩散模型Diffusion Model相关讲解:

二、DALL·E 2 模型解读

DALL·E 2 模型总览

DALL·E 2 训练过程

DALL·E 2 推理过程(由文本生成图像过程)

三、DALL·E 2实验效果和不足之处

实验效果

不足之处

Reference

一、导读

论文信息

CLIP(打通文本-图像模型)相关讲解:

扩散模型Diffusion Model相关讲解:

二、DALL·E 2 模型解读

使用DALL·E 2 从文字(图片下方)生成对应的图像

DALL·E 2 模型总览

DALL·E 2 这个模型的任务很简单:输入文本text,生成与文本高度对应的图片。

它主要包括三个部分:CLIP,先验模块prior和img decoder。其中CLIP又包含text encoder和img encoder。(在看DALL·E 2之前强烈建议先搞懂CLIP模型的训练和运作机制)

DALL·E 2 模型框架总览。虚线上方:训练CLIP过程;虚线下方:由文本生成图像过程

DALL·E 2 训练过程

DALL·E 2是将其子模块分开训练的,最后将这些训练好的子模块拼接在一起,最后实现由文本生成图像的功能。

1. 训练CLIP,使其能够编码文本和对应图像

这一步是与CLIP模型的训练方式完全一样的,目的是能够得到训练好的text encoder和img encoder。这么一来,文本和图像都可以被编码到相应的特征空间。对应上图中的虚线以上部分。

2. 训练prior,使文本编码可以转换为图像编码

论文中对于该步骤作用的解释为:

A prior P(zi|y) that produces CLIP image embeddings zi conditioned on captions y .

实际的训练过程为:将CLIP中训练好的text encoder拿出来,输入文本y,得到文本编码zt。同样的,将CLIP中训练好的img encoder拿出来,输入图像 x 得到图像编码zi。我们希望prior能从zt获取相对应的zi。假设zt经过prior输出的特征为zi′,那么我们自然希望zi′与zi越接近越好,这样来更新我们的prior模块。最终训练好的prior,将与CLIP的text encoder串联起来,它们可以根据我们的输入文本y生成对应的图像编码特征zi了。关于具体如何训练prior,有兴趣的小伙伴可以精度一下原文,作者使用了主成分分析法PCA来提升训练的稳定性。

prior训练过程

在DALL·E 2 模型中,作者团队尝试了两种先验模型:自回归式Autoregressive (AR) prior 和扩散模型Diffusion prior [1]。实验效果上发现两种模型的性能相似,而因为扩散模型效率较高,因此最终选择了扩散模型作为prior模块。本文不具体解释扩散模型,大家可以查阅参考博文,或者我后期再整理相关知识。

3. 训练decoder生成最终的图像

论文中对于该步骤作用的解释为:

A decoder P(x|zi,y) that produces images x conditioned on CLIP image embeddingszi (and optionally text captions y ).

也就是说我们要训练decoder模块,从图像特征zi还原出真实的图像 x ,如下图左边所示。这个过程与自编码器类似,从中间特征层还原出输入图像,但又不完全一样。我们需要生成出的图像,只需要保持原始图像的显著特征就可以了,这样以便于多样化生成,例如下图右边的示例。

左:训练decoder的过程。右:图像经过img encoder再经decoder得到重建图像。顶部图像为输入。

DALL-E 2使用的是改进的GLIDE模型 [2]。这个模型可以根据CLIP图像编码的zi,还原出具有相同与 x 有相同语义,而又不是与 x 完全一致的图像。

DALL·E 2 推理过程(由文本生成图像过程)

经过以上三个步骤的训练,已经可以完成DALL·E 2预训练模型的搭建了。我们这事丢掉CLIP中的img encoder,留下CLIP中的text encoder,以及新训练好的prior和decoder。这么一来流程自然很清晰了:由text encoder将文本进行编码,再由prior将文本编码转换为图像编码,最后由decoder进行解码生成图像。

DALL·E 2 推理过程

三、DALL·E 2实验效果和不足之处

实验效果

看下DALL·E 2 在MS-COCO prompts上的生成效果:

DALL·E 2 在MS-COCO prompts上的生成效果

不足之处

本文作者提到了DALL·E 2的三个不足之处:

  1. DALL·E 2 容易将物体和属性混淆,比如下图 DALL·E 2(unCLIP) 与GLIDE的对比。提示的文字为:“a red cube on top of a blue cube”。

DALL·E 2与GLIDE由“a red cube on top of a blue cube”生成的图像

DALL·E 2 不容易将红色和蓝色分辨出来。这可能来源于CLIP的embedding过程没有将属性绑定到物体上;并且decoder的重建过程也经常混淆属性和物体,如下图所示,例如中间的柯基图片,有的重建结果将其帽子和领结的颜色搞反了。

decoder经常混淆属性和物体

2. DALL·E 2对于将文本放入图像中的能力不足,如下图所示,我们希望得到一个写着deep learning的标志,而标志却将单词/词组拼写得很离谱。这个问题可能来源于CLIP embedding不能精确地从输入地文本提取出“拼写”信息。

DALL·E 2由“A sign that says deep learning.”生成的图像

3.DALL·E 2 在生成复杂场景图片时,对细节处理有缺陷,如下图所示生成Times Square的高质量图片。这个可能来源于decoder的分层(hierarchy)结构,先生成64 × 64的图像,再逐步上采样得到最终结果的。如果将decoder先生成的图像分辨率提高,比如从64 × 64提升到128 × 128,那么这个问题可能可以缓解,但要付出更大计算量和训练成本的代价。

DALL·E 2由“A high quality photo of Times Square.”生成的图像

待更新内容:代码实现以及上手使用(OpenAI仍未开源,目前可先使用非官方实现代码)

Reference

[1] Denoising diffusion probabilistic models

[2] GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DALL·E 2 解读 的相关文章

随机推荐

  • html——多文件上传(基于springboot后台)

    一 文件的上传 1 前端html上传文件 1 html代码
  • python定时运行py文件_Python 定时运行脚本

    1 代码 Python 代码 coding utf 8 import sys import os import datetime import time class ArgsDealwith def arg environment self
  • ubuntu系统git代码提交

    上传代码步骤 git status git add git commit m ti jiao dai ma 如果是多行log 则为如下命令 git commit m ti jiao dai ma 注意多行时对应的是单引号 git push
  • Mysql外键设置中CASCADE、NO ACTION、RESTRICT、SET NULL区别意义

    CASCADE 对父表进行delete update操作时 子表也会delete update掉关联的记录 更新 删除主表中记录时自动更新 删除子表中关联记录 RESTRICT 如果想要删除 更新父表的记录时 而子表中有关联该父表的记录 则
  • (23)目标检测算法之YOLOv6 (1)全流程指南:环境安装、模型配置、训练及推理

    目标检测算法之YOLOv6 1 全流程指南 环境安装 模型配置 训练及推理 本文向将介绍 YOLOv6 的整体框架 并提供详细的教程链接 官方论文 YOLOv6 A Single Stage Object Detection Framewo
  • websocket 注入 service对象的方法

    websocket注入service对象的方法 SpringBoot WebSocket SpringBoot WebSocket 本人使用 Autowired 发现注入不进去 断点发现service对象为null 猜测是 ServerEn
  • Android Https相关完全解析 当okHttp遇到Https

    一 概述 其实这篇文章理论上不限于okhttp去访问自签名的网站 不过接上篇博文了 就叫这个了 首先要了解的事 okhttp默认情况下是支持https协议的网站的 比如https www baidu com https github com
  • 输入网址后,会经历哪些步骤

    一 域名解析 DNS解析 通过主机名 最终得到该主机对应的IP地址的过程 叫做域名解析 DNS的解析步骤 参考文章 https blog csdn net Lammonpeter article details 81358387 1 检查浏
  • ESP32-C2模组使用AT固件示例

    ESP32C2 AT固件使用 ESP32 C2模组 如图1 1所示 图1 1 ESP32 C2模组 ESP32 C2开发板 如图1 2所示 图1 2 ESP32 C2开发 方案亮点 1 完整的 Wi Fi 子系统 符合 IEEE 802 1
  • vscode java导入jar包

    配置setting json include 列表中是jar包的路径 java project referencedLibraries include lib jar
  • jeesite4文件上传

    图片上传 一般情况下的图片上传 1 添加图片上传标签 2 修改service中的save方法 将图片保存到实体属性中 1 修改图片上传标签 修改后的如下 效果 将图片保存到对象的拓展表中 1 代码如下 2 注意事项 一般情况下的图片上传 1
  • el-table :span-method=“arraySpanMethod“ 合并单元格 vue3

    垂直方向上合并单元格 具体使用data就是接口获取的值表格数据 state rowMergeArrs rowMergeHandle state needMergeArr data span method arraySpanMethod co
  • 第10章 生物医学信号小波分析

    一 小波的定义及特点 二 连续小波变换 三 离散小波变换 第一部分是尺度函数 相当于低通滤波 第二部分是小波函数 相当于高通滤波 向下箭头是降阶处理 抽取法 四 心电信号的小波分析 去掉2 1 2 2 2 8对应的信号 然后进行重构 心电信
  • 你真的了解SEO搜索引擎优化吗?

    你真的了解SEO搜索引擎优化吗 小陈这就带你了解seo 说到SEO搜索引擎优化 谁都知道百度搜索引擎 谷歌搜索引擎 还有神马 搜狗等 朗朗上口 似乎都挺了解的 但你真的了解SEO搜索引擎优化吗 近日 小编看到了有关这方面的内容 茅塞顿开 想
  • C++实现弧度转角度,亲测可用

    代码在这里 拿走不谢
  • 最近大火的 prompt 论文集锦

    近来作为nlp领域新宠 prompt频频出现在大众视野 小编整理了一些优质论文 欢迎大家一起交流 1 论文名称 P Tuning v2 Prompt Tuning Can Be Comparable to Fine tuning Unive
  • Unity--Physics.OverlapSphere的参数LayerMask和GameObject的layer

    Layer介绍 Unity中是用int32来表示32个Layer层 int32表示二进制一共有32位 0 31 在Unity中每个GameObject都有Layer属性 默认的Layer都是Default 在Unity中可编辑的Layer共
  • buck芯片能产生负压吗?

    buck芯片能产生负压吗 1 前言 2 分析 1 前言 有的运放需要正负压供电 负压的产生一般是由电源芯片处理 将正压转换为负压 那么问题来了 buck能产生负压么 2 分析 开关电源有三种基本拓扑 buck boost buck boos
  • 敏捷开发系列之旅 第三站(认识FDD特征驱动开发)

    上篇文章中 我们探讨了 什么是XP极限编程 以及极限编程的管理思想 核心价值观等等 在敏捷开发之旅的第三站 我想要和大家一起分享FDD特征驱动开发方法 特征驱动开发 Feature Driven Development 还是老规矩 讨论之前
  • DALL·E 2 解读

    目录 一 导读 论文信息 CLIP 打通文本 图像模型 相关讲解 扩散模型Diffusion Model相关讲解 二 DALL E 2 模型解读 DALL E 2 模型总览 DALL E 2 训练过程 DALL E 2 推理过程 由文本生成