shimopino / papers-challenge

Paper Reading List I have already read
30 stars 2 forks source link

StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks #7

Open shimopino opened 4 years ago

shimopino commented 4 years ago

論文へのリンク

著者・所属機関

Han Zhang, Tao Xu, Hongsheng Li, Shaoting Zhang, Xiaogang Wang, Xiaolei Huang, Dimitris Metaxas

投稿日時(YYYY-MM-DD)

2016-12-10

1. どんなもの?

テキストから画像を生成するタスクにおいて、GANを多段構成にすることで高解像度な画像の生成に成功した。また入力となるテキストに対するデータ増強手法としてConditioning Augmentationを提案した。

image

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

既存のモデルではアップサンプリングを単純に増やしたGANでは、高解像度の画像を生成することができず、学習も不安定になってしまう。

これは入力となるテキストの分布が、高次元な画像の分布と重なっていないためである。そこで一度に高解像度な画像を生成するのではなく、最初に荒い画像を生成し、次に荒い画像を入力として細部を描画する多段構成にすることで、入力と出力間のデータの分布が離れすぎないようして、高解像度な画像を生成することに成功した。

3. 技術や手法の"キモ"はどこにある?

3.1 Conditioning Augmentation

Generatorへの入力となるテキストは、通常RNNなどのエンコードを使用して文ベクトルや単語ベクトルに変換されたものになる。これらのベクトルは非常に高次元(>100)であり、データが限られている状況ではベクトル空間が不連続になってしまい、Generartorがデータの分布を学習することが難しくなってしまう。

そこでベクトルの平均と標準偏差をもつガウス分布のノイズを加え、入力ベクトルの微細な変動にネットワークが影響を受けないように学習させる。

image

モデルの中では、以下のようにテキストから得られた文ベクトルに対してノイズを加え、Generatorへの入力としている。

image

3.2 StackGAN

StackGANの全体像は以下であり、低解像度の画像を生成する1段目のGANと、より高解像度な画像を生成する2段目のGANで構成されている。

それぞれGeneratorの入力が異なっており、最初はノイズを加えた文ベクトルとノイズベクトルを結合させたものを入力し、2段目以降は1つ前のGeneratorが生成した画像と文ベクトルを入力に受け取る。

この計算を続けていくことで、高解像度な画像が生成できるようになる。

image

採用する損失関数は、敵対的損失関数とConditioning Augmentationへの正規化項で構成されている。なおDiscriminatorには、Reedらが提案した matching-aware discriminatorを使用している。

image

このDiscriminatorは、以下の学習ペアを採用している。

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

既存のモデルと高解像度な画像の生成結果を比較した。既存のモデルは低解像度の画像しか生成することができず、また低解像度であっても崩れていることがあるが、StackGANではより高解像度な画像を安定して生成することができている。

image

各モデルとInception Scoreと人間による判定結果を比較した場合でも、StackGANは既存のモデルを上回る性能を発揮していることがわかる。

image

StackGANで生成される1段目の画像と2段目の画像を比較する。1段目で画像の全体像や背景色などを荒く作り上げ、2段目で粗い部分をより詳細に描いていることがわかる。

image

また本論文で提案されたConditioning Augmentationの性能を検証した。同じ解像度を出力するモデルであっても、CAを適用したモデルのほうがより高いISを達成していることがわかる。

image

5. 議論はあるか?

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

論文情報・リンク

shimopino commented 4 years ago

https://github.com/hanzhanggit/StackGAN