Taming Transformers for High-Resolution Image Synthesis (VQ-GAN)
2021.11.22 Asuka
year : #2021
tag : #GAN #Vector-Quantised
Paper
どんなものか ( 要約、システムのI/Oなど)
CNNとTransformerのいいとこ取りで計算量を減らしつつ高解像度でリアルな画像を生成する。
取り上げた理由
先行研究と比べてすごいところ、貢献
既存の問題点:従来のGANsやVAEに用いられてきたCNNは、局所的な特徴を捉えるため対局的な特徴を見ることができない。一方ViTはそのようなバイアスを持たないが、(高解像度の画像を再構成する際など)Decodeするシーケンスが長くなると全てのトークンのSelf-Attention Mapをq,k,vを用いて計算するため、計算コストが二次関数で増える。
貢献:CNNとTransformerのいいとこ取りをすることで、計算量を減らしつつ高解像度(1Mpixels超え)の画像を生成する。
手法
CNNはフィルターの範囲を見ることでしか特徴量を捉えられない
メリット
ViTに比べて計算が少ない
フィルターは画像全体をスライドしその後誤差逆伝播により損失が取られるため、画像全体で共有された重みを学習しており、汎用的に特徴を捉えることが可能
デメリット
局所的な特徴のみしかとってこれない
https://gyazo.com/f91091fd6c32f599732f8e71881522f6
仮説:局所的な特徴を捉える際にはCNNを用いて、大局的な特徴を捉える場合はTransformerを使うことで計算量を減らしつつロバストな表現を獲得できるのではないか?
CNNを用いてCodebookを学習
Codebookから決定されたベクトル(画像のグリッド毎の特徴量の集合)をもとにTransformerで画像を再構成する
さらにGANのアーキテクチャを参考にする。Discriminatorによってグリッド毎にReal or Fakeを判定させることで、Codebookがより局所的な情報を捉えるようにする。これには、Transformerが大局的な特徴を学習することに集中させるメリットがある。
生成画像の制御を行うためにオブジェクトのクラスやレイアウトに関する条件を追加することも可能。
アーキテクチャ
1:CNN EncoderEによって入力画像xから特徴量zを抽出
2:zをもとにCodebookZを学習し、量子化されたベクトルzqをTransformerで逐次的に作成する
3:zqをCNN DecoderGに渡して画像G(zq) = G(q(E(x)))を生成する
4:CNN DiscriminatorでReal / Fakeを識別させる(これからサーベイ)
VQ Loss
https://gyazo.com/4909a8f02992d45e57473f6c8a668d72
sgは、Stop Gradient(学習を止めてる)
初項:画像の再構成の損失
第2項:Codebookの学習(Encoder側をStop GradientにすることでzqがE(x)に近づくように更新される)
第3項:Commitment Loss(これからサーベイ)
GAN Discriminator Loss
https://gyazo.com/cade79aa0dd39b203d3ade9a4f3f9be4
これをLossとして計算することで何がメリットになる?GANのDiscriminatorを使うことによるメリットは?
Transformer Loss
検証方法
定量評価
定性評価
議論、課題
次に読むべき論文
コメント
参考文献
https://www.analyticsvidhya.com/blog/2021/07/understanding-taming-transformers-for-high-resolution-image-synthesis-vqgan/
https://speakerdeck.com/himidev/vision-transformerfalsesikumi