We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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)
text-to-imageのタスクにおいて、段階的な高解像度化(Stacking)によって生成を行うモデルにMemory Networksのメモリ構造を導入した。
StackGANに代表される、Stack構造における高解像度化は、高解像度の画像を生成するのに重要な技術だが、以下の問題点が挙げられる。
これらの問題を、Memory Networksのようなメモリ構造の導入によって解決した。
本手法の肝であるメモリ構造は、図2の下図のように、前段の画像特徴量マップと単語特徴量から計算される。簡単のため、前者を画像ベクトル列、後者を単語ベクトル列と呼ぶことにする。
である。特に、Gated Memory WritingとDynamic MemoryとGated Responseについて説明する。
本手法では、メモリにあたる部分は画像ベクトル列と単語ベクトル列から動的に作成される。
(7)式で、各単語ベクトルの、画像特徴量マップに対する重要度g^wを計算する。ここで、画像特徴量マップは画像ベクトル列の平均ベクトルで表される。
(8)式で、単語ベクトルと画像ベクトル列の平均ベクトル間のゲーティングにより、単語w_iに対応するメモリm_iが算出される。 注:M_w, M_rはそれぞれ1x1 convolutionで単語ベクトルと画像平均ベクトルをメモリの次元N_mまで落とす操作。g^wはスカラなので実際には各ベクトル要素に対してブロードキャストされる
以上により、単語数と同じ数のメモリ列mが作成される。
Dynamic MemoryではMemory Networkと同様key addressingとvalue readingを行う。ここで、keyとvalueはそれぞれ1x1convolutionのΦ_k(m)、Φ_v(m)によって計算される。
key addressingでは、画像ベクトル列rをクエリとしてkeyへのaddressing操作を(4)式のように行う。ここで、出力のα_i,jは単語ベクトルw_iに対応するメモリm_iから画像ベクトルr_jへのattentionである(あるピクセルに対して、どの単語が重要かを表していると考えられる)
以上の操作を全ての画像ベクトル列に対して行うと、(単語数)×(画像ベクトル列のサイズ)だけattentionができる。(8)式のように、各画像ベクトルに対して単語方向のattentionで重みづけされたvalueが出力ベクトルoとして算出される。
(9)式のResponse Gateでは、更新された画像ベクトルと前の画像ベクトル間でゲーティングを行い、どちらを重視するかを決定する。
text-to-imageのタスクによく用いられる、CUB datasetとCOCO datasetを用いて実験を行い、評価尺度としてinception score, FID用いてtext-to-imageの各手法と比較し、提案手法の優位性を示した。
Ablation studyとして、dynamic memory(M), memory writing gate (WG), response gate (RG)の組合せを試し、全てのモジュールがある場合が一番良い結果となることを示した。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
0. 論文
DM-GAN: Dynamic Memory Generative Adversarial Networks for Text-to-Image Synthesis (CVPR2019)
1. どんなもの?
text-to-imageのタスクにおいて、段階的な高解像度化(Stacking)によって生成を行うモデルにMemory Networksのメモリ構造を導入した。
2. 先行研究と比べてどこがすごい?
StackGANに代表される、Stack構造における高解像度化は、高解像度の画像を生成するのに重要な技術だが、以下の問題点が挙げられる。
これらの問題を、Memory Networksのようなメモリ構造の導入によって解決した。
3. 技術や手法のキモはどこ?
本手法の肝であるメモリ構造は、図2の下図のように、前段の画像特徴量マップと単語特徴量から計算される。簡単のため、前者を画像ベクトル列、後者を単語ベクトル列と呼ぶことにする。
である。特に、Gated Memory WritingとDynamic MemoryとGated Responseについて説明する。
Gated Memory Writing
本手法では、メモリにあたる部分は画像ベクトル列と単語ベクトル列から動的に作成される。
(7)式で、各単語ベクトルの、画像特徴量マップに対する重要度g^wを計算する。ここで、画像特徴量マップは画像ベクトル列の平均ベクトルで表される。
![image](https://user-images.githubusercontent.com/7993233/56466326-2fdf5100-644b-11e9-8e19-fa49bb585cc4.png)
(8)式で、単語ベクトルと画像ベクトル列の平均ベクトル間のゲーティングにより、単語w_iに対応するメモリm_iが算出される。
注:M_w, M_rはそれぞれ1x1 convolutionで単語ベクトルと画像平均ベクトルをメモリの次元N_mまで落とす操作。g^wはスカラなので実際には各ベクトル要素に対してブロードキャストされる
以上により、単語数と同じ数のメモリ列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として算出される。
Gated Response
(9)式のResponse Gateでは、更新された画像ベクトルと前の画像ベクトル間でゲーティングを行い、どちらを重視するかを決定する。
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](https://user-images.githubusercontent.com/7993233/56466837-0249d600-6452-11e9-98ab-e253c63dc3e7.png)
6. 次に読むべき論文は?
コメント
The text was updated successfully, but these errors were encountered: