简单理解VQGAN

简单理解VQGAN

TL; DR:与 VQVAE 类似,隐层压缩表征+自回归生成的两阶段图像生成方法。增加感知损失和对抗损失,提高压缩表征模型解码出图片的清晰度。还可以通过编码并预置条件表征,实现条件生成。

隐层压缩表征+自回归生成:如何改进?

我们在之前介绍 vqvae 的文章中提到,vqvae 本身实际是一种图像的压缩表征模型,其编码器可以将真实的像素图片压缩为隐空间的小特征图,而其解码器可以将隐空间的特征小图重构为真实的像素图片。作为一种压缩表征模型,vqvae 本身并不能进行图像生成,需要根据训好的 vqvae 再训练一个自回归模型(如 PixelCNN),来对隐空间特征图进行采样,再用 vqvae 的解码器解码为新的真实图片。

vqvae 这种隐层压缩表征+自回归生成的两阶段图像生成方法是否还存在改进空间呢?答案当然是肯定的。实际上当时压缩表征和自回归生成两个阶段都有可以借鉴的改进思路。

首先,在隐层表征阶段,简单的 L2 重构损失只约束重构结果与原图像素值之间的差异,而无法约束图片感知效果的差异,会导致生成图片非常模糊,要考虑如何改进。比如增加更全面的监督信号的损失函数,如 LPIPS、对抗损失等。

然后,在自回归生成阶段,PixelCNN 还是太过简单了,要考虑是否存在更强力的模型。在当时,LLM 还没有展现出绝对的统治力,但是以 OpenAI 的 GPT 系列为代表的语言模型已经取得很大进展,并且其自回归的形式也十分适合用于隐空间特征图的采样。另外,当时 ViT 等 Transformer 在视觉领域的工作也已经出来了,相较于 CNN,Transformer 不存在局部性的归纳偏置,对图像全局构图的理解能力更好,并且表达能力更强,在大数据量下性能更好。

vqgan 这篇工作,正是基于上述几个点对 vqvae 做出了改进。

隐层感知压缩表征

在隐层压缩表征的训练上,vqvae 使用了 reconstruction loss、embedding loss 和 commitment loss 三部分损失。vqgan 整体上沿用了 vqvae 的思路,但是为了使 codebook 的语义感知更加丰富,同时避免单独的 L2 损失导致的解码图片模糊的问题,vqgan 做出了两个改进。

一是增加了感知损失,即 LPIPS。简单来说就是将重构图片过一个训练好的 VGG 网络,提取其各层特征图,要求其与原图的各层特征也尽可能接近。而不只是像 L2 损失那样,简单地要求生成结果的像素值与原图接近。这样一来,除了纹理特征之外,高层语义特征的一致性也得到了监督。

二是增加了对抗损失,具体来说,是一个 PatchGAN。PatchGAN 不止是要求辨别器分辨出真实图片和生成图片,而是更细粒度地要求分辨出每一个小图像块是真实的还是生成的。

在这里插入图片描述

从下图的对比中可以看到,增加了这两个损失的监督,VQGAN 的解码结果明显比 VQVAE 更加清晰锐利,没有那么模糊。

在这里插入图片描述

基于Transformer的自回归生成

无条件生成

训练好 vqgan 之后,需要训练一个自回归模型来进行采样。这一阶段的训练其实就是常见的自回归语言模型,根据已有的 token,去预测下一个 token,即 p ( s i ∣ s < i ) p(s_i|s_{<i}) p(sis<i) ,去最大化这个 likelihood p ( s ) = ∏ i p ( s i ∣ s < i ) p(s)=\prod_{i}p(s_i|s_{<i}) p(s)=ip(sis<i)

条件生成

对于给定条件 c c c 的条件生成,vqgan 的做法与文本生成领域 decoder-only 模型的 in-context learning 类似,就是将条件放到最前面即可,此时 likelihood 为 p ( s ∣ c ) = ∏ i p ( s i ∣ s < i , c ) p(s|c)=\prod_ip(s_i|s_{<i},c) p(sc)=ip(sis<i,c) 。注意对于条件的编码,需要重新训练一个新的 vqgan。

总结

vqgan 利用 Transformer 和感知损失等技术,从生成质量和可控生成上对 vqvae 进行了很有意义的改进。vqvae、vqgan这一路压缩表征的方法在 LDM、MultiModal Transformer 中都有很多的应用。

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

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

相关文章

将本地项目上传到svn服务端和git

一、SVN 1.创建svn库,下面生成了三个文件夹,branches指分支,trunk下可以放项目 2.在本地checkout,填入svn库的地址,因为是新建的,所以checkout的是空文件夹 把自己的项目复制到trunk下,在项目上 右键-TortoiseSVN-add add完之后 右键-svn commit 3.idea打开这个项目,将项目跟…

QPaint绘制自定义仪表盘组件01

网上抄别人的&#xff0c;只是放这里自己看一下&#xff0c;看完就删掉 ui Dashboard.pro QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomm…

第3.4章:StarRocks数据导入——Routine Load

注&#xff1a;本篇文章阐述的是StarRocks-3.2版本的Routine Load导入机制 一、概述 Routine Load&#xff08;例行导入&#xff09;支持用户提交一个常驻的导入任务&#xff0c;可以将消息流存储在 Kafka 的Topic中&#xff0c;通过订阅Topic 中的全部或部分分区的消息&#…

使用JDBC操作数据库(IDEA编译器)

目录 JDBC的本质 ​ JDBC好处 JDBC操作MySQL数据库 1.创建工程导入驱动jar包 2.编写测试代码 ​相关问题 JDBC的本质 官方(sun公司) 定义的一套操作所有关系型数据库的规则&#xff0c;即接口各个数据库厂商去实现这套接口&#xff0c;提供数据库驱动jar包我们可以使用这…

基于FPGA的二维DCT变换和逆变换verilog实现,包含testbench

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 数据导入到matlab显示图像 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer:…

Git详解及 github与gitlab使用

目录 1.1 关于版本控制 1.1.1 本地版本控制 1.1.2 集中化的版本控制系统 1.1.3 分布式版本控制系统 1.2 Git简介 1.2.1 Git历史 1.3 安装git 1.3.1 环境说明 1.3.2 Yum安装Git 1.3.3 编译安装 1.4 初次运行 Git 前的配置 1.4.1 配置git 1.4.2 获取帮助 1.5 获取 G…

C++ Primer 笔记(总结,摘要,概括)——第3章 字符串、向量和数组

目录 3.1 命名空间的using声明 3.2 标准库类型string 3.2.1 定义和初始化string对象 3.2.2 string对象上的操作 3.2.3 处理string对象中的字符 3.3 标准库类型vector 3.3.1 定义和初始化vector对象 3.3.2 向vector对象中添加元素 3.3.3 其他vector操作 3.4 迭代器介绍 3.4.…

Ps:灰度模式

Ps菜单&#xff1a;图像/模式/灰度 Image/Mode/Grayscale 灰度 Grayscale模式是一种特定的色彩模式&#xff0c;用于处理没有彩色信息的图像。 在灰度模式下&#xff0c;图像不包含颜色&#xff0c;只显示黑色、白色及其间的灰色阶。 这种模式对于需要强调光影、纹理和形状而不…

小马识途分享抖音百科创建的步骤

在玩抖音的时候&#xff0c;不知道注意到抖音的搜索结果没有&#xff0c;有时候会去搜索框搜索一个品牌或人物名称&#xff0c;搜索框下面翻几下大概率就会出现百科词条&#xff0c;这个词条就是抖音百科。抖音的百科属于头条百科&#xff0c;因为这两个平台都属于字节跳动旗下…

MES选型与实施浅谈(2)

四、MES实施规划与推进 面向数字化工厂的MES实施需要从多个维度、多种方法来综合考虑,以有效推进MES实施。考虑到MES实施的复杂性,基于以往的MES项目实施经验,我们将MES实施过程归纳为四个阶段,即启动、规划、实施、运维。 1、启动。此阶段为MES实施之前的准备期。动员企…

ElasticSearch之结构化搜索

写在前面 本文看下es的结构化搜索&#xff0c;结构化搜索顾名思义就是对结构化数据的搜索&#xff0c;那么什么是结构话数据呢&#xff1f;我的理解是具有一定规则的数据就是结构化&#xff0c;在es中包括但不限于如下&#xff1a; 1:Boolean只有true和false 2:整数就是整数&…

机器学习基本概念(李宏毅课程)

目录 一、概念:1、机器学习概念:2、深度学习概念&#xff1a; 二、深度学习中f(.)的输入和输出&#xff1a;1、输入&#xff1a;2、输出&#xff1a; 三、三种机器学习任务&#xff1a;1、Regression回归任务介绍&#xff1a;2、Classification分类任务介绍&#xff1a;3、Stru…