- https://openaccess.thecvf.com/content/CVPR2021/papers/Esser_Taming_Transformers_for_High-Resolution_Image_Synthesis_CVPR_2021_paper.pdf
- https://git.io/JLlvY
- 问题引入
- CNN结构有inductive bias,会更关注于局部的交互,但是effective,transformer结构computational但是可以进行long-range的interaction,本文想要做的就是结合两种结构的优点来完成超大尺寸图片的合成;
- 首先使用CNNs来学习context rich vocabulary(codebook),之后使用transformer来model composition;
- 总的来说就是transformer的时间复杂度和sequence lence成平方的关系,所以将transformer based的方法直接扩展到高分辨率图片的生成计算复杂度很大,所以本文提出首先使用CNNs来得到一个codebook,之后再这个空间上使用transformer based的方法;
- methods
- Codebook的获得:discrete codebook Z = { z k } k = 1 K ⊂ R n z Z=\{z_k\}^K_{k = 1}\subset\mathbb{R}^{n_z} Z={zk}k=1K⊂Rnz, n z n_z nz是codebook的code维度,encoder E E E,decoder G G G,给出一张图片 x x x,首先经过encoder得到 z ^ = E ( x ) ∈ R h × w × n z \hat{z} = E(x)\in\mathbb{R}^{h\times w\times n_z} z^=E(x)∈Rh×w×nz,之后对应每一个 z ^ i j ∈ R n z \hat{z}_{ij}\in\mathbb{R}^{n_z} z^ij∈Rnz,寻找到它在codebook中最近的一个code z k z_k zk组成 z q = q ( z ^ ) : = ( a r g m i n z k ∈ Z ∣ ∣ z ^ i j − z k ∣ ∣ ) ∈ R h × w × n z z_q = q(\hat{z}):=\left( argmin_{z_k\in Z}||\hat{z}_{ij}-z_k|| \right)\in\mathbb{R}^{h\times w\times n_z} zq=q(z^):=(argminzk∈Z∣∣z^ij−zk∣∣)∈Rh×w×nz,之后将 z q z_q zq经过decoder得到reconstruction的结果 x ^ = G ( z q ) = G ( q ( E ( x ) ) ) \hat{x}=G(z_q) = G(q(E(x))) x^=G(zq)=G(q(E(x))), q q q是一个量化的操作,是不可微的,此处通过straight through gradient estimator实现,也就是直接将decoder的梯度复制到encoder来使得模型可以端到端的训练,损失函数是 L V Q ( E , G , Z ) = ∣ ∣ x − x ^ ∣ ∣ 2 + ∣ ∣ s g [ E ( x ) ] − z q ∣ ∣ 2 2 + β ∣ ∣ s g [ z q ] − E ( x ) ∣ ∣ 2 2 L_{VQ}(E,G,Z) = ||x - \hat{x}||^2 + ||sg[E(x)]-z_q||^2_2 + \beta||sg[z_q]-E(x)||^2_2 LVQ(E,G,Z)=∣∣x−x^∣∣2+∣∣sg[E(x)]−zq∣∣22+β∣∣sg[zq]−E(x)∣∣22,其中第一项是重建损失, s g [ ⋅ ] sg[\cdot] sg[⋅]是stop gradient的操作;VQGAN在VQVAE的基础上增加了discriminator以及perceptual loss, L G A N ( { E , G , Z } , D ) = [ log D ( x ) + log ( 1 − D ( x ^ ) ) ] L_{GAN}(\{E,G,Z\},D) = [\log D(x) + \log(1 - D(\hat{x}))] LGAN({E,G,Z},D)=[logD(x)+log(1−D(x^))],总的优化目标: a r g m i n E , G , Z m a x D E x ∼ p ( x ) [ L V Q ( E , G , Z ) + λ L G A N ( { E , G , Z } , D ) ] arg\ min_{E,G,Z}max_D\mathbb{E}_{x\sim p(x)}\left[ L_{VQ}(E,G,Z) + \lambda L_{GAN}(\{E,G,Z\},D) \right] arg minE,G,ZmaxDEx∼p(x)[LVQ(E,G,Z)+λLGAN({E,G,Z},D)],其中 λ = ∇ G L [ L r e c ] ∇ G L [ L G A N ] + δ \lambda = \frac{\nabla_{G_L}[L_{rec}]}{\nabla_{G_L}[L_{GAN}] + \delta} λ=∇GL[LGAN]+δ∇GL[Lrec];
- 有了codebook,一张原始图片量化之后 z q = q ( E ( x ) ) ∈ R h × w × n z z_q = q(E(x))\in\mathbb{R}^{h\times w\times n_z} zq=q(E(x))∈Rh×w×nz,进行展平得到 s ∈ { 0 , ⋯ , ∣ Z ∣ − 1 } h × w , s i j = k , ( z q ) i j = z k s\in\{0,\cdots,|Z| - 1\}^{h\times w},s_{ij}=k,(z_q)_{ij} = z_k s∈{0,⋯,∣Z∣−1}h×w,sij=k,(zq)ij=zk,于是图片的生成任务建模成自回归式的next index prediction的任务