L = L V G + λ L G A N L = L_{VG} + \lambda L_{GAN} L=LVG+λLGAN
其中, λ \lambda λ是控制两种误差比例的权重。作者在论文中使用了一个公式来自适应地设置 λ \lambda λ。和普通的GAN一样,VQGAN的编码器、解码器(即生成器)、codebook会最小化误差,鉴别器会最大化误差
有了一个保真度高的图像压缩模型,我们可以进入下一步,练习一个生成压缩图像的模型。
2.2 创新点2-基于 Transformer 的压缩图像生成模型
如前所述,经VQGAN得到的压缩图像与真实图像有一个本质性的不同:真实图像的像素值具有一连性,相邻的颜色更加相似,而压缩图像的像素值则没有这种一连性。压缩图像的这一特性让探求一个压缩图像生成模型变得异常困难。多数强大的真实图像生成模型(比如GAN)都是输出一个一连的浮点颜色值,再做一个浮点转整数的操作,得到最终的像素值。而对于压缩图像来说,这种输出一连颜色的模型都不实用了。因此,之前的VQVAE使用了一个能建模离散颜色的PixelCNN模型作为压缩图像生成模型。但PixelCNN的表现不够优秀。
恰好,功能强大的Transformer天生就支持建模离散的输出。在NLP中,每个单词都可以用一个离散的数字表示。Transformer会不停生成表示单词的数字,以达到生成句子的效果。
为了让Transformer生成图像,我们可以把生成句子的一个个单词,酿成生成压缩图像的一个个像素。但是,要让Transformer生成二维图像,还需要克服一个问题:在生成句子时,Transformer会老师成第一个单词,再根据第一个单词生成第二个单词,再根据第一、第二个单词生成第三个单词……。也就是说,Transformer每次会根据之前所有的单词来生成下一单词。而图像是二维数据,没有先后的概念,怎样让像素和笔墨一样有先后序次呢?
VQGAN的作者使用了自回归图像生成模型的常用做法,给图像的每个像素从左到右,从上到下规定一个序次。有了先后序次后,图像就可以被视为一个一维句子,可以用Transfomer生成句子的方式来生成图像了。在第 i i i步,Transformer会根据前 i − 1 i-1 i−1个像素 s < i s_{<i} s<i生成第 i i i个像素 s i s_i si,
2.3 创新点4-带束缚的图像生成
在生成新图像时,我们更希望模型可以或许根据我们的需求生成图像。比如,我们希望模型生成「一幅优美的风景画」,又或者希望模型在一幅草图的底子上作画。这些需求就是模型的束缚。为了实现带束缚的图像生成,一般的做法是先有一个无束缚(输入是随机数)的图像生成模型,再在这个模型的底子上把一个表示束缚的向量插入进图像生成的某一步。
把束缚向量插入进模型的方法是需要计划的,插入束缚向量的方法每每和模型架构有着密切关系。比如假设一个生成模型是U-Net架构,我们可以把束缚向量和当前特性图拼接在一起,输入进U-Net的每一大层。
为了实现带束缚的图像生成,VQGAN的作者再次借鉴了Transformer实现带束缚笔墨生成的方法。许多自然语言处置惩罚任务都可以当作是带束缚的笔墨生成。比如机器翻译,其实可以当作在给定一种语言的句子的前提下,让模型「随机」生成一个另一种语言的句子。比如要把「健耀访问非洲」翻译成英语,我们可以对之前无束缚笔墨生成的Transformer做一些修改。 也就是说,给定束缚的句子 c c c,在第 i i i步,Transformer会根据前 i − 1 i-1 i−1个输出单词 s < i s_{<i} s<i以及 c c c生成第 i i i个单词。表示束缚的单词被添加到了所有输出之前,作为这次「随机生成」的额外输入。
我们同样可以把这种头脑搬到压缩图像生成里。比如对于MNIST数据集,我们希望模型只生成09这些数字中某一个数字的手写图像。也就是说,束缚是种别信息,束缚的取值是09。我们就可以把这个0~9的束缚信息添加到Transformer的输入之前,以实现由种别束缚的图像生成
在论文4.3节中,作者验证了使用VQGAN的须要性。作者训了两个模型,一个直接让Transformer做真实图像生成,一个用VQGAN把图像边长压缩2倍,再用Transformer生成压缩图像。经比较,使用了VQGAN后,图像生成速率快了10多倍,且图像生成效果也有所提升。
另外,作者还做了有关图像边长压缩比例 f f f的溶解实验。作者固定让Transformer生成 16 × 16 16\times16 16×16的压缩图片,即每次练习时用到的图像尺寸都是 16 f × 16 f 16f\times16f 16f×16f。之后,作者练习了不同 f f f下的模型,用各个模型来生成图片。效果表现 f = 16 f=16 f=16时效果最好。这是因为,在固定Transformer的生成分辨率的前提下, f f f越小,Transformer的感受野越小。假如Transformer的感受野过小,就学习不到充足的信息。