VQ-VAE

Generating Diverse High-Fidelity Images with VQ-VAE-2

摘要

  本文主要研究VQ-VAE在大尺度图像生成器上的应用,我们改进了自回归的先验来生成比以前更加优秀的图片,本文使用的是简单的编码和解码器,他们的速度比较快,VQ-VAE需要一个在潜在空间自回归的模型,他的速度要快于像素空间回归,

多层次结构的VQ-VAE能够产生强大的先验,这样会使生成图片的质量在多脸图像中要优于其他的,并且不会产生模型塌陷,多样性缺失的问题。

 

文中使用,有损压缩的方式,将生成模型从非必要的信息中解放出来,首先将图片压缩到一个离散的编码空间中,这样的话使得信息的表示少了30倍,并且能够使得解码器从这个空间中重新构成图片,压缩图片模型可以使用PixelSnail的算法,使用的是带有Attention的pixelCNN实现的。经过采样,图像的重构依然能够保持很好的质量。同时这类模型的训练和采样的速度也是基于像素模型的30倍。本文中的改进能够很好的保留原始VQ-VAE快速简单的特点。

VQ-VAE

  1. VQ-VAE就是使用encoder将图像编码,然后使用decoder将图像解码,其中encoder和decoder共享一个code book,编码器将图像x编码成E(x),之后这个向量根据它和标准的向量之间的距离进行量化,然后就是讲E(x)转化成距离它最近的标准编码,并且将这种标准编码给decoder

  1. VQ-VAE接近对齐编码空间与codebook的标准向量还有两个附加步骤
  1. codebook-loss  应用到标准变量中,选择出和E(x)匹配的标准向量e。
  2. commitment-loss 之应用到encoder的权重,主要是为了在选择标准向量的时候,避免出现太多的抖动,

      其中sg表示终止梯度运算的算子

  1. 使用平滑指数的方法来代替codebook loss

其中ni 表示E(X) mini_batch中使用ei标准码的数量,gamma是参数在0,1之间,

  1. 一般来说,PixelCNN是用概率模型来表示。

算法

文中的方法是两级方法,首先训练一个VQ-VAE来编辑头像到一个潜在空间,人后训练一个,然后在根据先验的潜在空间,训练一个PixelCNN

训VQ-VAE编码器解码器

生成图像

 

从理解上来看,训练分成两步,第一步训练VQ-VAE,第二部训练先验。

训练VQ-VAE包含训练两个编码器,将两个编码器的编码结果共同输入生成器用来生成图像。

 

具体算法

 

  1. 这一部分使用的是分级算法,首先由一个Ebottom获得全局特征的latent map然后又有一个 Etop获取局部特征。其中会有一个残差链接。这样的分层结构能够使编码器提取到更多的图片特征,并且能够减少重构时候的错误。
  2. 对于256的图片有两层encoder,第一层生成的latent map是64,第二层生成的latent map是32。

根据latent code学习先验

  1. 为了进一步的压缩图像,并且能够从第一步的训练模型中采样,使用神经网络训练先验分布,本文从latent code中学习一个先验模型,训练先验模型能够显著的提升编码器的表现。

这种方式能够减少边缘部位与先验的差别。从训练好的先验分布中采样,有点类似于解码器在训练中探索一样,能够得出更加好的输出。训练先验的目的就是训练出这个分布。从而实现类似于图片的损失较小的压缩, 真实在的熵与训练熵的差别越小,那么解码器生成的图片就越真实。

在VQ-VAE框架中,先验是由PixelCNN产生的,在训练的第二步中,top latent map的先验代表着图像的整体结构,本文将残差项应用于它,这样的话就能够捕捉到,与整体相互背离的局部特性,但是在bottom latent map中,使用残差项并不能起到很好的作用,但是我们发现使用来自上曾分布的条件栈,会有很好的表现。

在训练的时候,训练top-level的先验,加入了attention机制,但是在训练bottom-level的时候没有用到这个机制。

 

总体结构

  1. 第一训练一个编码器,然后让编码器解码器能够和好的复现图像。
  2. 第二部是推理过程使用自回归的方式到latent  map的空间中,然后到空间中随机采样,能够生成图片。

 

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值