VQ-VAE-2

news/2024/11/22 20:23:14/

原文链接:Generating Diverse High-Fidelity Images with VQ-VAE-2
加载速度慢点这里:中科院镜像

由于科研需要,最近在学习图像生成相关的文献知识,VQ-VAE-2是我目前了解到的比较新的生成模型,一开始搜索到的其实是PixelCNN,然后发现它是16年的工作,然后继续搜索相关工作,在Google DeepMind找到了VQ-VAE-2,由此发现了一系列相关工作。这里就从VQ-VAE-2开始,毕竟是目前性能相对好的模型,先尽快学习看看能不能用上。(VQ-VAE-2的发展过程可以参考这里:From Autoencoder to Beta-VAE)

代表样例

在这里插入图片描述
在这里插入图片描述作者在论文中表示,VQ-VAE 生成了可以媲美当前最佳 GAN 模型(BigGAN-deep)的图像,且避免了GAN的缺点,如缺乏多样性和ModeCollapse。

生成模型综述

作者将目前的生成模型分为两种类别:

  1. Likelihood based models:VAEs、基于flow的模型和自回归(autoregressive)模型;
  2. Implicit generative models:GANs

这些模型都会存在某些方面的缺陷,如样本质量、多样性、生成速度等,接下来稍做分析:

  • GAN生成的样本并不能完全捕捉真实分布中的多样性。另一方面,针对生成对抗网络的评价非常困难,目前依然缺少一个较通用的度量标准,用于在测试集中判断模型是否过拟合。

  • 基于似然的模型不存在像GAN一样的问题但是直接在像素空间最大化likelihood存在困难,首先在像素空间上NLL(negative log-likelihood,这个概念目前还不是很清楚,大概就是用来衡量样本质量,基于似然的模型的主要任务就是优化此项) 不能很好的度量样本质量,其次这些模型缺少对于全局结构的关注。目前,也存在着一些针对这些问题的优化方法,这里不做讨论。

  • 既然存在这些问题,所以 “In this paper”,作者利用了有损压缩(lossy compression)的思想。JPEG图像压缩技术已经可以做到去除80%的数据量,而对图像不造成显著影响。在VQ-VAE(一代)中,就已经提出,通过自编码器的vetor-quantizing intermediate representations(量化的向量中间百表征,这里还不清楚具体是什么,VQ就是指这个啦)将图像压缩到discreate latent space。这样产生的表征比原图小30多倍,但仍然可以使解码器重建图像,几乎无损。接下来采用PixelSnail(一种基于self-attention的SOTA的PixelCNN)对这些离散表征的先验知识建模,从这些先验知识采样最终decoder得到的图像同样高质量,而且速度也是30多倍的快,这样就可以训练高分辨率图像。这里用的编码解码器结构和VQ-VAE一样(区别就是提出了一个分层结构)

背景知识

  1. VQ-VAE

    关于VQ-VAE的详细解析以后再写,这里为了理解VQ-VAE2先介绍
    简单来说,还是一个Encoder-Coder结构。Encoder用来把图像转换为离散隐性空间的序列,Decoder从这些离散变量中重建图像。
    具体一点,输入图像 x x x,通过编码器(此时编码器作为一个非线性的mapping)生成向量 E ( x ) E(x) E(x),然后采用最近邻重构,将 E ( x ) E(x) E(x)替换为codebook的中的一个nearest prototype vector,解释一下codebook,可以理解为一个离散的编码表,举一张人脸图像为例,codebook就包括头发颜色,脸型,表情和肤色等等。因此,量化就是通过编码表,把自编码器生成的向量 E ( x ) E(x) E(x)离散化。在这里插入图片描述
    解释一下codebook,可以理解为一个离散的编码表,举一张人脸图像为例,codebook就包括头发颜色,脸型,表情和肤色等等。因此,量化就是通过编码表,把自编码器生成的向量 E ( x ) E(x) E(x)离散化。
    解码器通过另一个非线性函数重建数据,重建错误的梯度从解码器反向传播到编码器,采用straight-through gradient estimator(这里先不展开,就当这是一种方法)
    VQ-VAE还引入了codebook loss和commitment loss来align编码表codebook的向量空间和encode的输出。这里也不展开说,以后读VQ-VAE的时候再详细分析。这里先贴出公式, s g sg sg是停止梯度操作:
    在这里插入图片描述
    文中给出了VQ-VAE的implementation:
  • 代码
  • 样例
  1. PixelCNN

    先贴一段原文,下次再补充在这里插入图片描述
    具体的这篇博客讲的很详细:图片生成模型——gated pixelCNN

VQ-VAE-2框架

分为两阶段:

  1. 训练一个分层的VQ-VAE用于图像编码到前面提到的离散隐空间
    Stage1算法框图
    Stage1 流程图
    和VQ-VAE不同之处在于,这里使用了分层的VQ,作者提到其动机是把全局信息(如shape和geometry)和局部信息(如纹理)分开建模。如图所示,top level用于model全局信息,bottom level用于model局部细节(原文中还有再加middle level,实验结果表明加了middle level之后,生成的图像清晰度更高)。框图中,原图为256 * 256,通过下采样得到 64 * 64的表征,然后再量化为bottom level的latent map;另一方面,64 * 64再降为32 * 32,量化得到top level的latent map。解码器分别从两个隐层中重建图像,重建的loss即上面的公式2。

  2. 在用所有的图像数据构建的离散隐空间拟合一个PixelCNN先验
    在这里插入图片描述
    在这里插入图片描述
    经过Stage1,将图片编码为了整数矩阵,所以在Stage2用自回归模型PixelCNN,来对编码矩阵进行拟合(即建模先验分布)。通过PixelCNN得到编码分布后,就可以随机生成一个新的编码矩阵,然后通过编码表 E E E映射为浮点数矩阵,最后经过 d e o c d e r deocder deocder得到一张图片。

总结

总体来说VQ-VAE-2实现图像生成分两步走:

  1. 训练编解码器,使其能够很好的复现图像
  2. 训练PixelCNN自回归模型,使其能够拟合编码表分布,从而通过随机采样,生成图片

对于VQ-VAE-2的简单理解先到这里,后续再对PixelCNN等自回归模型进行分析。


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

相关文章

三极管工作状态判断

要三极管工作在放大状态&#xff0c;就给它加适合大的基极电流Ib&#xff0c;以至于0<Ib<Ic/β&#xff0c;并且计算出来的Vce>1v&#xff0c;以保证三极管工作在线性放大区。 要三极管工作在饱和状态&#xff0c;就给它加足够大的基极电流Ib&#xff0c;以至于Ib>…

示波器听课笔记-1

示波器听课笔记 视频链接-https://www.bilibili.com/video/BV15J41137qP?p1 --立创EDA 课程内容分为以下六个小节&#xff1a; 1、 示波器波形怎么看 2、 Cursor光标测量键的使用 3、 触发电平旋钮让一个抖动的波形稳定 4、 如何使用示波器的触发功能 5、 用示波器探头上的调节…

基于Java人力资源管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

使用Python实现.mat文件转换、读取

目录 一、前言 二、将excel文件转换为mat文件 三、读取mat文件并进行可视化 四、将mat文件转换为excel文件 一、前言 有时候我们拿到一个数据文件不是excel或者csv的怎么办呢&#xff1f;比如&#xff1a;你可恶的合作伙伴测实验数据时&#xff0c;用MATLAB丢给你一个mat…

电脑突然无法显示硬盘并提示SMART错误的修复办法尝试

电脑突然无法显示硬盘并提示SMART错误的修复办法尝试 在使用电脑过程中&#xff0c;会遇到机械硬盘突然无法显示的问题&#xff0c;我们可以尝试以下办法 PS:如果你是在使用过程中&#xff0c;突然卡死&#xff0c;然后硬盘无法显示&#xff0c;而且出现SMART错误&#xff0c;…

移动硬盘分区误删后修复手记

移动硬盘分区误删后修复手记 首先&#xff0c;向大家郑重推荐国产软件《易我分区表医生》&#xff01; 周末发现家里一台电脑中了木马&#xff0c;导致了上网账户被人窃取&#xff0c;损失了很多银子&#xff01;因此只能重新安装系统。为安全起见&#xff0c;决定把硬盘的2个分…

修复计算机有什么用,电脑硬盘坏道修复了对以后电脑使用有什么影响吗?

满意答案 shhlove918 推荐于 2017.09.13 采纳率&#xff1a;47% 等级&#xff1a;12 已帮助&#xff1a;2792人 影响一&#xff1a;硬盘坏道后&#xff0c;可能会表现为在打开、运行或拷贝某个文件时硬盘会出现操作速度变慢&#xff0c;且有可能长时间操作还不成功或表现为长…

移动硬盘无法读取怎么修复?

有时候碰到硬盘插上电脑&#xff0c;却无法使用的情况&#xff1b;今天我就碰到了。。。。。。 百度的很多办法都试过&#xff0c;所用都无效&#xff1b;包括下载插件恢复数据也是无用的&#xff0c;下插件还一大堆垃圾插件一起下载&#xff0c;导致电脑变得卡死&#x1f62d;…