生成模型 | 从 VAE 到 Diffusion Model (上)

在这里插入图片描述

文章目录

  • 一,GAN(对抗式生成网络)
  • 二,Auto-Encoder(AE) 和 Denoising Auto-Encoder (DAE)
  • 三,VAE
  • 四,VQ-VAE (Vector Quantized Variational Autoencoder)
    • VQ-VAE 2
    • 小总结:
  • 五,DALL-E (OpenAI) (2021.02)

一,GAN(对抗式生成网络)

  • 生成器: 给定一个随机噪声,生成比较真实的图像
  • 判别器:给一个生成的图像和真实的图像,让判别器去判断,哪个是真图片,哪个是假图片
  • 判别器和生成器会不断提升自身的能力,互相较量。 DEEP FAKE 火爆 大家可以试一试这个基于GAN的应用。
  • 缺点:
    • GAN的 训练不够稳定,因为他要同时训练两个网络,所以就有一个平衡的问题。训练不好的话,模型就坍塌 了
    • GAN 主要的目标就是“真实”, 所以他的 创造性不好。他的多样性来自于刚开始的随机噪声。他 不是一个概率模型,他的生成是隐式的,是通过一个网络去完成的,所以你不知道他做了什么,遵循什么分布,在数学上不优雅。
      在这里插入图片描述

二,Auto-Encoder(AE) 和 Denoising Auto-Encoder (DAE)

  • 自己重建自己:给定一个图片, 输入到一个Encoder 里面, 然后得到一个维度小很多的 特征,然后过一个 Decoder 解码器,最后得到一个图像。我们的目标函数呢,就是重建这个图像,所以是自己重建自己,自回归模型

  • 中间那个特征维度很小,所以也叫bottleneck

  • 主要目的是学习bottleneck特征的,把这个特征去做分类,分割,检测这些任务。并不是用来做生成的,他这里学到的不是一个概率分布。我们没法对他进行采样。

  • Denoising Auto-Encoder: 把输入的原始图片进行打乱 ,重建原始的图片。会让训练的模型更加的稳健。

AE 和 DAE 主要的目的是去学bottlenck的特征,用这个特征去做 下游任务,并不是用来做生成的。

Encoder- Decoder这个结构很好,如何用这个结构做图像生成呢? VAE来了。

在这里插入图片描述

三,VAE

VAE 学习的不是 特征了,而是一个分布, 作者假设这个 分布是一个高斯分布,这个分布就可以用 (均值,方差) 来表示

具体来说:当我们从编码器得到特征之后,我们在后面加 FC 层,用它去预测 均值 和 方差 , 然后就可以用下面的公式,采样一个 z 出来,这样VAE就可以做生成了,这个 z 就是一个可以从高斯分布中随机抽样出的一个样本

从贝叶斯概率的角度来看, VAE 学的是一个概率分布,他从分布里去抽样,所以他生成图片的多样性 比GAN好很多

缺点: VAE 不好把图片的尺寸做大,而且 z 的分布也不是很好学
在这里插入图片描述
在这里插入图片描述

四,VQ-VAE (Vector Quantized Variational Autoencoder)

DALL-E的第一版模型就是 在VQ-VAE的基础上做的.

把VAE量化 离散 了。

  • 为什么离散VAE呢? VAE 不好把图片的尺寸做大,而且 z 的分布也不是很好学
  • 取而代之的是,不去做分布的推测,而是 用一个codebook去代替了。
    • codebook可以理解为聚类的中心,codebook的大小一般为KXD(8192x512), 也就是8192个聚类中心
  • 输入一个图片进入编码器得到一个特征图,把特征图里面的向量 和 codebook 里面的向量做对比,看他和哪个聚类中心最接近,然后就把聚类中心这个编码 存到 Z 这个矩阵里, 一旦做好了聚类的分配,我们就不需要之前的特征图了,取而代之的是,把Z 中index 对应的codebook的特征拿出来,变成一个新的特征图 ,也就是一个量化后的特征 (quantized feature), 这个量化后的特征就非常可控了,他是从codebook里面来的,而不是一个随机的东西。所以优化起来相对容易。
  • 然后通过解码器重构一张图片。
这里的codebook有点像 AE 里面的 bottlenet那块的特征,是拿去做high level 的任务的,也就是做分类,检测。 如果想让他做生成,我们还需要单独 再 训练一个prior 网络。

在这里插入图片描述

在视觉这边 BEIT 把 DALL-E训练好的 codebook 拿过去,然后把图片全都量化成这样子的特征图,拿这个去做Ground Truth,自监督的训练一个视觉网络。

  • 缺点:VQ-VAE 学习的是一个固定的codebook,就意味着他没有办法像 VAE 这样随机采样,生成对应的图片

VQ-VAE 2

  • 把模型变成层级式的,不仅做局部的建模,也做了全局的建模,还加上了attention,模型表达能力变强了
  • 同时,他还根据codebook 又去学了一个prior,
    • 作者这里训练了一个 pixelCNN 当作这个 prior 网络, 从而能够利用这个训练好的codebook来做图像的生成。 pixcelCNN 是一个自回归模型

小总结:

对于VQ-VAE来说,先训练了一个codebook, 然后又训练一个pixcelCNN去做生成。
pixcelCNN 是一个自回归模型,还有什么模型是自回归模型吗? GPT

在这里插入图片描述

五,DALL-E (OpenAI) (2021.02)

  • OpenAI 把pixcelCNN 换成了GPT。既然 language 那边做的又那么好,为什么不想个办法,用文本来引导图像生成呢?所以就有了DALL-E
  • 把文本特征和图像特征直接连接起来,就变成了一个有1280token的序列
  • 然后把序列给到GPT,随机把token做一下mask,然后GPT去自回归的还原这个mask token
  • 推理的时候,提供text,变成text embedding, 然后GPT 把文本特征 用自回归的方式 把图片生成出来

在这里插入图片描述

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

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

相关文章

硅谷裸机云服务器性能测评哪些内容

硅谷裸机云服务器,作为云计算领域的一股新兴力量,近年来受到了广泛关注。其强大的性能和灵活性为用户提供了更高效、更稳定的云计算服务。那么,硅谷裸机云服务器的性能测评究竟包括哪些内容呢?接下来,我们就来科普一下。 首先&am…

如何让大模型更聪明?

如何让大模型更聪明? *随着人工智能技术的飞速发展,大模型在多个领域展现出了前所未有的能力,但它们仍然面临着理解力、泛化能力和适应性等方面的挑战。那么,如何让大模型变得更聪明呢? 方向一:算法创新 …

留学培训行业PaaS应用系统架构的设计与实践

随着留学需求的增长和教育培训市场的不断扩大,留学培训行业正面临着越来越多的挑战和机遇。在这个背景下,利用PaaS(Platform as a Service)平台来构建留学培训行业的应用系统架构,将成为提升服务质量和效率的重要手段。…

Nacos 2.x 系列【8】集成 Spring Cloud Gateway

文章目录 1. 概述1.1 API 网关1.1 Spring Cloud Gateway 2. 集成案例2.1 入门案例2.2 动态路由 1. 概述 1.1 API 网关 API网关已经成为了微服务架构的一个标配组件,是系统对外的唯一入口。所有的客户端都通过统一的网关接入微服务,在网关层处理所有非业…

SSRF攻击技术

1、SSRF形成原因 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系…

思科模拟器--03.RIP协议路由--24.5.17

1.首先,先创建两个个人电脑:PC0和PC1和三个路由器:R1,R2和R3. (诀窍:建议用文本框标注一下重要简短的内容; 目的:降低失误概率,提高成功率!) 第0步:(个人电脑的IP,子网掩码和默认网关配置) 接着,可以先将个人电脑的IP和网关先配置一下…

ThreadLocal原理及使用

一、引言 在Java多线程编程中,ThreadLocal是一个非常有用的工具,它提供了一种将对象与线程关联起来的机制,使得每个线程都可以拥有自己独立的对象副本,从而避免了线程安全问题。然而,使用不当会导致内存泄漏问题。 二…

go 微服务框架kratos错误处理的使用方法及原理探究

通过go语言原生http中响应错误的实现方法,逐步了解和使用微服务框架 kratos 的错误处理方式,以及探究其实现原理。 一、go原生http响应错误信息的处理方法 处理方法: ①定义返回错误信息的结构体 ErrorResponse // 定义http返回错误信息的…

无人机飞手前途分析

无人机飞手的前途充满了各种可能性和挑战,这主要得益于无人机技术的快速发展和广泛应用。以下是对无人机飞手前途的一些分析: 1. 技术发展与需求增长:随着无人机技术的不断进步,其应用场景也在持续扩大。从地理测绘、巡检、农林植…

IT学习笔记--Kafka

Kafka概述: 定义: Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。 消息队列消息队列的两种模式: 点对点模式: 消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。 消息被消费以后&#…

Linux中解决普通用户使用不了sudo问题

目录 sudo的使用场景sudo使用不了的原因解决方法 sudo的使用场景 之前我们介绍了文件的权限问题 如果一个普通用户想去执行一个它命令之外的权限,只能使用sudo 比如普通用户使用yum去安装软件,需要sudo yum xxxx sudo使用不了的原因 这里我们用普通用户…

小恐龙跳一跳源码

小恐龙跳一跳源码是前两年就火爆过一次的小游戏源码,不知怎么了今年有火爆了,所以今天就吧这个源码分享出来了!有喜欢的直接下载就行,可以本地单机直接点击index.html进行运行,又或者放在虚拟机或者服务器上与朋友进行…

SAP-FICO-凭证编号控制

成本凭证编号KANK 如果自己的公司下没有,直接复制系统原有的就可以。使用系统默认即可。 如果不维护 会报错“CO-凭证编号分配对于成本控制范围****中的商业事务COIN无效” 财务凭证编号FBN1 可以用OBH2批量复制编号范围。 物料账期MMPV 财务账期OB52

python使用base加密解密

原理 base编码是一种加密解密措施,目前常用的有base16、base32和base64。其大致原理比较简单。 以base64为例,base64加密后共有64中字符。其加密过程是编码后将每3个字节作为一组,这样每组就有3*824位。将每6位作为一个单位进行编码&#xf…

1个逗号,提升Python代码质量

有些时候,我们会在Python代码中看到列表或其他科迭代对象的结尾会存在一个逗号: 而且编辑器和解释器都容许这种逗号的存在,它就叫作拖尾逗号。 通常是为了在频繁地增减数组元素的时候同时保证语法的正确,且拖尾逗号不占用数组的长…

MySQL 主备环境搭建 docker

MySQL 主备环境搭建 docker 拉取docker镜像 sudo docker pull mysql:8.0 启动容器 docker run -p 3339:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD123456 -d mysql:8.0docker run -p 3340:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD123456 -d mysql:8.0配置 M…

基于xilinx fpga RFSOC系列的Ultrascale+ RF Data Converter ip详解说明

目录 1 概述2 IP功能2.1 ADC性能2.2 DAC性能3 IP端口4 代码框架4.1 ADC功能框图4.2 DAC功能框图5 收发数据时序5.1 ADC数据格式5.2 DAC数据格式6 时钟配置6.1 ADC/DAC参考时钟7 数据格式配置模式7.1 ADC的配置模式7.1.1 Real -> real;7.1.2 Real ->IQ;7.1.3 IQ -> IQ;…

【设计模式】JAVA Design Patterns——Bridge(桥接模式)

🔍目的 将抽象与其实现分离,以便二者可以独立变化。 🔍解释 真实世界例子 考虑一下你拥有一种具有不同附魔的武器,并且应该允许将具有不同附魔的不同武器混合使用。 你会怎么做? 为每个附魔创建每种武器的多个副本&…

当代人工智能三教父——深度学习三巨头

文章目录 引言 人物介绍 突出贡献 专业名词解释 引言 今天下午闲来无事翻阅了一下csdn首页的头条文章——《27 岁天才创始人 Joel Hellermark 分享了自己和“AI 教父” Geoffery Hinton 的最新采访》 感觉挺有意思,就从头到尾的看了一遍,里面有很多…

pyqt5与yolov5进行视频检测(一)——登录操作

项目效果展示 一、登录界面 二、主界面 目前在更新中。。。 一、设计 二、登录代码 注意:下面会导入主界面的包,图片资源自己设计一下,密码保存时没设计加密,需要自行设计 main_window主界面下文会设计from main_window impor…