Re:ゼロから始めるML生活

機械学習ド素人が、流行に乗ってニューラルネットとか勉強してみるブログ

【論文メモ:StackGAN】StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks

論文

[1612.03242] StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks

著者

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

Rutgers University, Lehigh University, The Chinese University of Hong Kong, Baidu Research

背景

テキスト表現を基に写実的画像を生成することは、コンピュータビジョンの大きな課題となっている。 先行研究では、文字の意味を反映した大まかな画像を生成することには成功していたが、詳細な部分の表現や物体の要素については表現できない問題があった。

目的とアプローチ

目的

テキスト表現に基づく高解像度の写実的画像の生成

アプローチ

StackGAN(Stacked Generative Adversarial Networks)による画像生成の段階的詳細化

  • 第一段階:テキスト表現から低解像度の画像を出力
  • 第二段階:第一段階の出力とテキスト表現から高解像度の画像を出力

提案手法

StackGANの全体構成を下記に示す。

f:id:nogawanogawa:20180414144515j:plain

StackGANは2段階の画像生成プロセス(Stage-Ⅰ GAN, Stage-Ⅱ GAN)から構成される。

Stage-Ⅰ GAN

Stage-Ⅰ GANでは、大まかな形状、ベースとなる色や背景画像の領域を描画する。

Stage-Ⅰ GANは入力としてテキスト表現を使用する。 先行研究で、テキストのエンコード非線形の変換となるため、Generatorへの入力となる潜在変数は偏りが生じることがわかっている。 一方で、潜在変数のベクトルは高次元(>100)になることが多く、入力の不連続性が大きくなり、不安定な学習になる恐れがある。

この問題を解決するために、平均(μ(φt ))、対角共分散行列(diagonal covariance matrix, Σ(φt))となるガウス分布(N (μ(φt ), Σ(φt )))から無作為に値をサンプリングする。 これにより、多様性を維持することができ、少ない入力テキスト表現から幅広い分布を生成することができる。

過学習を避けるために、Lossにカルバック・ライブラー情報量(Kullback-Leibler divergence)を用いた調整を加える。 下記にStage-Ⅰ GANでのGenerator, DiscriminatorのLossの算出式を示す。

f:id:nogawanogawa:20180429105102j:plain

その他

実装の詳細について下記に列挙する。

  • テキストの潜在変数(φt )はガウス分布の平均μと∑の値であるσの全結合層として組み込まれる
  • λ =1
  • c0 = μ0 + σ0 ⊙ ε
補足

多次元の正規分布に関してはこちら。 s0sem0y.hatenablog.com

入力に関しての全体像についてのイメージは下記のようになる。 f:id:nogawanogawa:20180429111152j:plain

テキストから得られるガウス分布と、予め用意したガウス分布を組み合わせて入力の多様性を維持する(偏りをなくす)ようです。

Stage-Ⅱ GAN

Stage-Ⅰ GANでは、画像に歪みや欠損が残る。 Stage-Ⅱ GANでは、細部を描画し低解像度画像の欠損を修正する。

Stage-Ⅱ GANでは、Stage-Ⅰ GANで出力された低解像度の画像とテキスト埋め込みベクトルを再使用する。

下記にStage-Ⅱ GANでのGenerator, DiscriminatorのLossの算出式を示す。

f:id:nogawanogawa:20180429112717j:plain

実装のパラメータ

実装のパラメータについて下記に列挙する。

アップサンプリングブロック
ダウンサンプリングブロック
パラメータ他
  • Ng =128
  • Nz =100
  • Mg =16
  • Md =4
  • Nd = 128
  • W0 = H0 = 64
  • W = H = 256
  • 始め600epochはStage-II GANを修正しながら実行、次の600epochはStage-I GANを修正しながら実行
  • バッチサイズ64のAdam Optimizerを使用
  • 学習率0.0002で100epochごとに学習率を半減する

評価

データセット

下記に示す2種類のデータセットを使用して評価を行う。

  • Caltech-UCSD Bird(CUB)
  • Oxford-102 flower

比較対象

下記に示す2つの先行研究と比較する。

  • GAN-INT-CLS
  • GAWWN

評価指標

Inception Score

画像分類器に生成画像を分類させ、下記の式によるInception Scoreを算出する。 (数値が大きいほど優れている)

f:id:nogawanogawa:20180503105733j:plain

Human Rank

各モデルによって生成された画像を被験者(人間)に見せてランク付けする。 (数値が小さいほど順位が高く、優れている)

多様性と画質に関する評価

Inception ScoreとHuman Rankの結果を以下の表に示す。

f:id:nogawanogawa:20180503105943j:plain

比較対象より提案手法が優れていることが分かる。 次に各モデルによって生成された画像(Caltech-UCSD Bird)を下記に示す。

f:id:nogawanogawa:20180414150455j:plain

また、各モデルによって生成された画像(Oxford-102 flower)を下記に示す。

f:id:nogawanogawa:20180414150507j:plain

先行研究のモデルより高解像度かつ細部まで表現できている事がわかる。

設計の妥当性評価

次に、設計の妥当性に関して評価する。

Stageの段階分け

ガウス分布(CA)の使用、テキストの二段階活用、Stageの段階分けに関する結果を下記の表に示す。 f:id:nogawanogawa:20180503112116j:plain

ガウス分布(CA)の使用、テキストの二段階活用をどちらも行った場合が最もInception Scoreが高いことが分かる。

次に、Stageごとの生成画像を下記に示す。 f:id:nogawanogawa:20180414150520j:plain

Stageを経る毎に輪郭がはっきり、高精細な画像になっていることが分かる。

また、入力Textに対して生成された画像と近しいTraning Setを下記に示す。 f:id:nogawanogawa:20180414150537j:plain

Datasetを学習して、正しく反映できている事がわかる。

ガウス分布による入力生成

先に示したTable 2で、128×128の画像のInception Scoreを見ると、CAを使用した場合の方がInception Scoreが向上する結果がわかった。

また、同じTextから生成された画像を下記に示す。 f:id:nogawanogawa:20180414150549j:plain

同じ入力から別々の画像が生成されていることがわかり、多様性が担保されていることが分かる。

入力Textへの対応評価

入力のTextを一部変化させた際の出力画像を下記に示す。 f:id:nogawanogawa:20180414150601j:plain

入力のTextの変化が正しく画像に反映されている事がわかる。

結論

テキスト表現を基に高解像度の写実的画像を生成することは、コンピュータビジョンの大きな課題となっている。 提案手法により、テキスト表現だけを入力する場合で初めて256×256の画像の生成に成功し、細部までの表現が可能になった。

実装

どう考えてもMacBook Airでは現実的な時間内で計算が終わらないので、今回は実装はありません。 ただでさえ、最近マシンパワーの限界を感じてるのに200 epochとか普通に考えてGPU使わなきゃ無理でしょう。。。←クズでごめんなさい。

AWSやらGoogle Colabの使い方を勉強したら、そのタイミングで別の記事で投稿します。

感想

GANで高解像度の画像を生成することは一つの大きなテーマになっているようです。 何に応用できるかまではまだわかりませんが、やり方くらいはマスターしたいですね。 引き続きがんばります。