简单理解VQGAN

news2024/12/22 18:56:34

简单理解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.coloradmin.cn/o/1458020.html

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

相关文章

Leetcoder Day15| 二叉树 part04

语言&#xff1a;Java/C 110.平衡二叉树 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 输入&#xff1a;root [3,9,20,null,null,15,…

计算机网络概论和数据通信基础

文章目录 计算机网络概论从物理构成上看&#xff0c;计算机网络包括硬件、软件和协议三大部分计算机网络的功能组成计算机网络的分类网络体系结构分层与体系结构接口、协议和服务数据传送单位OSI模型TCP/IP模型 数据通信基础数字信号调制为模拟信号正交振幅调制QAM 模拟数据编码…

Deep Learning with OpenCV DNN Module介绍

Deep Learning with OpenCV DNN Module介绍 1. 源由2. 为什么/什么是OpenCV DNN Module?2.1 支持的不同深度学习功能2.2 支持的不同模型2.3 支持的不同框架 3. 如何使用OpenCV DNN模块3.1 使用从Keras和PyTorch等不同框架转换为ONNX格式的模型3.2 使用OpenCV DNN模块的基本步骤…

SpringCloud-基于Feign远程调用

Spring Cloud 是一个用于构建分布式系统的开发工具包&#xff0c;它提供了一系列的微服务组件&#xff0c;其中之一就是 Feign。Feign 是一种声明式的 Web 服务客户端&#xff0c;它简化了在 Spring Cloud 中进行远程调用的过程。本文将介绍如何在 Spring Cloud 中使用 Feign 进…

五步解决 Ubuntu 18.04 出现GLIBC_2.28 not found的解决方法

Ubuntu 18.04 出现GLIBC_2.28 not found的解决方法 参考debian网址https://packages.debian.org/buster/并搜索想要的软件或者工具等&#xff0c;如libc6,有结果如下&#xff1a; 具体就不介绍了&#xff0c;请浏览官网了解。 第一步&#xff1a;添加软件源&#xff0c;在/et…

Linux装逼神器

使用的Linux为系统Ubuntu 22.04 Ubuntu系统如何下载&#xff1f;-CSDN博客 Mac使用VMware、PD、UTM虚拟机安装Ubuntu系统方法-CSDN博客 1、sl sl命令是一个有趣的火车模拟器&#xff0c;终端显示火车经过 #下载 parallelsubuntu:~$ sudo apt-get install sl#使用 parallel…

若依不分离版本部署流程

一、分离与不分离的区别 参考博客&#xff1a;前后端分离与不分离的本质区别&#xff01;_前后端分离本质-CSDN博客 概念适用场景前后端不分离前端页面看到的效果都是由后端控制&#xff0c;由后端渲染页面或重定向适合纯网页应用前后端分离后端仅返回前端所需的数据&#xf…

[力扣 Hot100]Day30 两两交换链表中的节点

题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 出处 思路 前两个结点先偷一手用交换val做&#xff0c;从链表第1…

使用主动检索增强生成 FLARE 实现更优越的 RAG

每日推荐一篇专注于解决实际问题的外文,精准翻译并深入解读其要点,助力读者培养实际问题解决和代码动手的能力。 欢迎关注公众号(NLP Research),及时查看最新内容 原文标题:Better RAG with Active Retrieval Augmented Generation FLARE 原文地址:https://blog.lance…

【CentOS】Linux 文件与目录管理

目录 1、目录的切换、新增和删除 &#xff08;1&#xff09;cd (change directory&#xff0c;切换目录) &#xff08;2&#xff09;pwd (显示目前所在的目录) &#xff08;3&#xff09;mkdir (make directory&#xff0c;建立新目录 ) &#xff08;4&#xff09;rmdir (…

神经网络——循环神经网络(RNN)

神经网络——循环神经网络&#xff08;RNN&#xff09; 文章目录 神经网络——循环神经网络&#xff08;RNN&#xff09;一、循环神经网络&#xff08;RNN&#xff09;二、循环神经网络结构1、一对一&#xff08;One to One&#xff09;2、一对多&#xff08;One to Many&#…

架构师蓝图: 理解软件风格与模式

本文介绍了10种软件架构风格及其对应设计模式&#xff0c;梳理了各个风格的优缺点和适用场景&#xff0c;帮助读者在架构选项过程中能有的放矢&#xff0c;做出更适合业务场景的架构设计。原文: The Architect’s Blueprint: Understanding Software Styles and Patterns with …

早春氛围感穿搭~清新甜美的女童外套

告别臃肿的冬季 迎接浪漫清爽的春天吧 属于女孩子的甜美氛围感穿搭 一件粉粉嫩嫩的外套值得拥有 两侧实用口袋简单大方的款式 怎么穿都很好看哦&#xff01;

从入门到精通:成为文件批量改名高手的必修之路

从入门到精通&#xff1a;成为文件批量改名高手的必修之路 在数字世界中&#xff0c;我们经常需要处理大量的文件&#xff0c;其中一项重要的任务就是对文件进行重命名。虽然许多操作系统都提供了简单的文件重命名工具&#xff0c;但对于需要批量处理大量文件的用户来说&#…

三防平板丨手持工业平板丨ONERugged工业三防平板丨推动数字化转型

随着科技的发展&#xff0c;数字化转型已经成为企业转型升级的必由之路。而在数字化转型中&#xff0c;三防平板作为一种重要的工具&#xff0c;可以极大地推动企业的数字化转型。本文将从以下几个方面探讨三防平板如何推动数字化转型。 一、提高工作效率 ONERugged加固平板的…

什么是LoRA(Low-Rank Adaptation)?

低秩适应&#xff08;LoRA&#xff09; 低秩适应&#xff08;LoRA&#xff09;是一种创新技术&#xff0c;它使得在保持预训练神经网络的基础上进行高效定制成为可能&#xff0c;比如在扩散模型或语言模型中的应用。这种方法的核心优势在于其能够通过仅训练相对较少的参数来实…

泰山派摄像头使用-opencv流程

1. 泰山派添加camera 连接摄像头连接到usb接口,查看dev设备: # 在终端中输入如下命令&#xff0c;可以查看到camera设备资源&#xff1a; ls /dev/video* 检查板卡上的camera设备资源示例 也可以使用v4l2命令查看 v4l2-ctl --list-devices v4l2-ctl --list-devices是一个命令…

人工智能_PIP3安装使用国内镜像源_安装GIT_普通服务器CPU_安装清华开源人工智能AI大模型ChatGlm-6B_002---人工智能工作笔记0097

接着上一节来看,可以看到,这里 创建软连接以后 [root@localhost Python-3.10.8]# ln -s /usr/local/python3/bin/python3 /usr/bin/python3 [root@localhost Python-3.10.8]# python3 -V Python 3.10.8 [root@localhost Python-3.10.8]# pwd /usr/local/Python-3.10.8 [root@…

绿色化 数据库 MongoDB 和 mysql 安装

绿色化 数据库 MongoDB 和 mysql 安装 【1.1】 前言 为什么要绿色化 安装呢&#xff1f;因为系统老升级&#xff0c;老重装&#xff01;&#xff01;也方便了解下数据库配置和库在那 绿色软件喜欢一般放在 D盘tools目录里 D:\tools\ 数据库 MongoDB D:\tools\MongoDB 数…

【Emgu CV教程】6.11、图像平滑之快速非局部平均去噪

文章目录 一、函数介绍1.FastNlMeansDenoising()函数2.FastNlMeansDenoisingColored() 二、举例1.原始素材2.灰度图FastNlMeansDenoising()快速非局部平均去噪3.彩色图像FastNlMeansDenoisingColored()快速非局部平均去噪 一、函数介绍 “快速非局部平均去噪” 是消除图像噪声…