DALLE2-文本图像生成

news/2024/11/7 17:07:09/

文章目录

  • 摘要
  • 算法
    • 解码器
    • prior
  • 图像处理
    • 变体
    • 插值
    • 文本差异
  • 限制

论文: 《Hierarchical Text-Conditional Image Generation with CLIP Latents》
github: https://github.com/lucidrains/DALLE2-pytorch
https://github.com/LAION-AI/dalle2-laion

摘要

CLIP已经被证明可以学习语义或风格表征,作者提出二阶段模型,给出文本描述,利用先验模型生成CLIP图像嵌入,解码器利用图像嵌入生成图像;解码器作者使用扩散模型;prior作者使用自回归及扩散模型,发现后者计算高效,生成样本质量高。

算法

(x,y)(x,y)(x,y)表示图像及对应caption,zi、ztz_i、z_tzizt为CLIP提取图像特征及文本特征;
DALLE2生成过程使用两个组件:
1、prior P(zi∣y)P(z_i|y)P(ziy基于caption yyy生成图像编码ziz_izi
2、decoder P(x∣zi,y)P(x|z_i, y)P(xzi,y)基于CLIP提取图像编码ziz_izi生成图像x,可选择使用caption y;
在这里插入图片描述
DALLE2文本图像生成过程如图2:
1、CLIP将文本进行编码,通过自回归或扩散模型(prior)生成图像编码先验,
2、图像编码通过扩散模型解码器(decoder)生成最终图像

解码器

作者使用扩散模型基于CLIP所生成的图像embedding生成图像,具体使用改进GLIDE,将CLIP embedding添加进timestep embedding中,映射CLIP embedding为4个额外token,与GLIDE文本编码器输出进行concat;

prior

解码器可将CLIP图像embedding ziz_izi生成图像x,先验器将caption y生成图像embedding ziz_izi;有两种方案:
1、AR(自回归先验):使用CLIP将图像embedding ziz_izi转换为离散序列,基于caption y进行自回归预测;
2、扩散先验;基于caption y使用高斯扩散模型对连续向量ziz_izi进行直接建模;
DALLE2中扩散先验,作者训练仅包含解码器的Transformer,其使用包括因果关系的mask在序列上进行:文本编码、CLIP文本embedding、扩散模型timestep embedding、噪声CLIP image embedding、最终Transformer输出embedding.

图像处理

变体

对于表征$(z_i,x_T)通过超参控制采样,η=0,则为重构原图,η越大引入更大随机性,如图3;
在这里插入图片描述

插值

如图4,对于两张图片x1,x2,通过CLIP进行编码zi1,zi2z_{i1},z_{i2}zi1zi2,两者进行插值;
在这里插入图片描述

文本差异

对于两文本输入通过CLIP进行编码zt,zt0z_t,z_{t0}ztzt0,计算向量差异zd,对zi、zdz_i、z_dzizd进行插值得到CLIP表征;
在这里插入图片描述

限制

1、DALLE2相对于GLIDE容易忽视两目标各自属性;
在这里插入图片描述
2、 解码器容易混合目标属性
在这里插入图片描述
3、难以生成连续文本
在这里插入图片描述


http://www.ppmy.cn/news/9078.html

相关文章

【JDK工具】jinfo、jps、jstack、jstat、jmap

目录一、前言二、关键工具2.1 jps 显示所有JAVA进程信息1. 参数信息2. 常用命令2.2 jinfo 查看虚拟机配置参数信息1. 查看虚拟机参数 jinfo -flags pid2. 查看虚拟机指定参数 jinfo -flag 具体参数 pid3. 查看环境变量 jinfo -sysprops pid4. 参数列表2.3 jstack1. 能排查哪些问…

Springboot扩展点之BeanDefinitionRegistryPostProcessor

前言通过这篇文章来大家分享一下,另外一个Springboot的扩展点BeanDefinitionRegistryPostProcessor,一般称这类扩展点为容器级后置处理器,另外一类是Bean级的后置处理器;容器级的后置处理器会在Spring容器初始化后、刷新前这个时间…

前端面试常考 | js原型与原型链

文章目录一. 什么是原型?二. 什么是原型链?一. 什么是原型? 在js中所有的引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象。 而在js中的引用类型包括:Object,Array,Date,Function 而所有函数都有…

Lc.152 乘积最大子数组

题目链接1 前言翻译成大白话:就是找一个数组,其连续子数组的乘积最大值。2 算法思路:一般求最值的问题首选动态规划。这道题与[LC.53 最大子序和]很类似。我们假设状态转移方程为:它表示以第 i 个元素结尾乘积最大子数组的乘积可是在这里&…

Spring是怎么回事?新手入门就看这篇吧

前言 今天壹哥给大家介绍一套开源的轻量级框架,它就是Spring。在给大家详细讲解Spring框架之前,壹哥先给大家介绍Spring框架的主要内容: Spring的基本概念 Spring核心思想之ioc Spring核心思想之aop Spring框架对事务的支持 在本系列文章…

哪吒S亮相广州车展,定位B级燃油车颠覆者

2022年收官,哪吒汽车宣布全年交付152073台,其中: •哪吒U 51021台; •哪吒V 98847台; •哪吒S 2003台(12月首月交付)。与此同时,在年末的广州车展,哪吒汽车携全系车型参展…

视觉slam中的相机类型

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 顾名思义,视觉 SLAM(又称 vSLAM)使用从相机和其他图像传感器采集的图像。视觉 SLAM 可以使用普通相机(广角…

【小程序】包与数据共享

文章目录使用 npm 包Vant WeappAPI Promise化全局事件共享MobX分包分包概念使用分包独立分包分包预下载使用 npm 包 目前,小程序中已经支持使用 npm 安装第三方包,从而来提高小程序的开发效率。但是,在小程序中使用npm 包有如下 3 个限制&am…