Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DM-GAN: Dynamic Memory Generative Adversarial Networks for Text-to-Image Synthesis (CVPR2019) #1

Open
SeitaroShinagawa opened this issue Apr 21, 2019 · 0 comments

Comments

@SeitaroShinagawa
Copy link

SeitaroShinagawa commented Apr 21, 2019

0. 論文

DM-GAN: Dynamic Memory Generative Adversarial Networks for Text-to-Image Synthesis (CVPR2019)

1. どんなもの?

text-to-imageのタスクにおいて、段階的な高解像度化(Stacking)によって生成を行うモデルにMemory Networksのメモリ構造を導入した。

2. 先行研究と比べてどこがすごい?

StackGANに代表される、Stack構造における高解像度化は、高解像度の画像を生成するのに重要な技術だが、以下の問題点が挙げられる。

  1. Stack構造による段階的生成において、最初の段階で失敗すると後段の処理もコケる問題
  2. 特にtext-to-imageにおいて、各段階の解像度ごとに各単語と画像のコンテンツに対する対応関係の重要度は変わるはず(例:低解像度では全体の色に関する単語が重要だが、高解像度になると詳細なパーツの形に関する単語にも重要度がいくはず) しかし、StackGANに代表されるStack構造のモデルではどの解像度の段階の生成でも固定の文ベクトルから生成を行っている問題

これらの問題を、Memory Networksのようなメモリ構造の導入によって解決した。

3. 技術や手法のキモはどこ?

image

本手法の肝であるメモリ構造は、図2の下図のように、前段の画像特徴量マップと単語特徴量から計算される。簡単のため、前者を画像ベクトル列、後者を単語ベクトル列と呼ぶことにする。

  • 画像ベクトル列: ピクセル数だけ存在、各ピクセルのベクトルはおそらくチャネル方向の次元数のベクトル(例:512x8x8の画像特徴量マップでは、次元数512の画像ベクトル8*8=64個で構成された画像ベクトル列)
  • 単語ベクトル列:単語数だけ存在

である。特に、Gated Memory WritingとDynamic MemoryとGated Responseについて説明する。

Gated Memory Writing

本手法では、メモリにあたる部分は画像ベクトル列と単語ベクトル列から動的に作成される。

(7)式で、各単語ベクトルの、画像特徴量マップに対する重要度g^wを計算する。ここで、画像特徴量マップは画像ベクトル列の平均ベクトルで表される。
image

(8)式で、単語ベクトルと画像ベクトル列の平均ベクトル間のゲーティングにより、単語w_iに対応するメモリm_iが算出される。
注:M_w, M_rはそれぞれ1x1 convolutionで単語ベクトルと画像平均ベクトルをメモリの次元N_mまで落とす操作。g^wはスカラなので実際には各ベクトル要素に対してブロードキャストされる

image

以上により、単語数と同じ数のメモリ列mが作成される。

Dynamic Memory

Dynamic MemoryではMemory Networkと同様key addressingとvalue readingを行う。ここで、keyとvalueはそれぞれ1x1convolutionのΦ_k(m)、Φ_v(m)によって計算される。

Key Addressing

key addressingでは、画像ベクトル列rをクエリとしてkeyへのaddressing操作を(4)式のように行う。ここで、出力のα_i,jは単語ベクトルw_iに対応するメモリm_iから画像ベクトルr_jへのattentionである(あるピクセルに対して、どの単語が重要かを表していると考えられる)

Value Reading

以上の操作を全ての画像ベクトル列に対して行うと、(単語数)×(画像ベクトル列のサイズ)だけattentionができる。(8)式のように、各画像ベクトルに対して単語方向のattentionで重みづけされたvalueが出力ベクトルoとして算出される。

image

Gated Response

(9)式のResponse Gateでは、更新された画像ベクトルと前の画像ベクトル間でゲーティングを行い、どちらを重視するかを決定する。

image

4. どうやって有効だと検証した?

text-to-imageのタスクによく用いられる、CUB datasetとCOCO datasetを用いて実験を行い、評価尺度としてinception score, FID用いてtext-to-imageの各手法と比較し、提案手法の優位性を示した。

5. 議論はある?

Ablation studyとして、dynamic memory(M), memory writing gate (WG), response gate (RG)の組合せを試し、全てのモジュールがある場合が一番良い結果となることを示した。
image

6. 次に読むべき論文は?

コメント

  • 基本となるネットワーク構造やロス関数は主にAttnGANを踏襲している
  • Discriminatorにおいて、提案モデルのDM-GANはAttnGANと違ってspectral normalizationを使っており、dynamic memoryの構造がどの程度性能情報に寄与しているか不明
  • 個人的な実験の結果、AttnGANでspectral normalizationを用いた実験をCUB datasetについて行った結果のinception scoreを下図に示す。この結果、AttnGAN+spectral normalizationで0.1ポイント程度の上昇が確認された。このことから、提案手法のメモリ構造自体は0.3ポイント程度の上昇に寄与していると考えられる。
    image
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant