Progressive Growing of GANの論文を流し読む

Progressive Growing of GANの論文を読むことになったので流し読みした。

これがもう一つの方の論文。

この前読んだ別のはこっち

High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANsの論文を流し読む

めっちゃ長いと思ったら半分以上appendix。英語弱者に優しい。

Progressive Growing of GANポイント

  • 段階的に深くしながらGANを学習することで学習が安定しかつ学習が早くなった
スクリーンショット 2018-02-28 0.23.39
我々の訓練は左端の4×4の画像を生成するGとDのペアから始める。訓練を進めるにつれてGとDを外側に追加して増やしていく。すべての層は学習中はつねに学習可能としていく。NxNはサイズNのCNNである。今回の工夫で学習が早くなり、訓練の時間を大幅に短縮できた。
  • GANでは意味のないDとGの競争になりがちだがそうさせない幾らかの工夫もまとめた
  • 高解像度な画像は細部を見れば本物かどうかわかりやすいのでDiscriminatorが有利にGeneratorが不利になる。あと画像が大きくなりメモリが足りなくなるので、minibatchの数を抑えなくてはならなくなる。そうなると精度が落ちる。
  • 段階的に層を増やしながら訓練するときもいつもどの層も訓練可能な状態に設定。
  • 層を増やすときにその変わりようにショックを与えないように、層を加える前の出力と新しい層の出力ブレンドして、段々新しい層に更新していく。
  • この方法で学習すると精度向上と2~6倍の学習時間の短縮が見込める
  • “minibatch discrimination”を改良してパラメータなしな手法を開発し、訓練画像から種類の異なる画像を生成できることを確認

Progressive Growing of GAN斜め読み

高画質なものは詳細がGeneratorで雑になるため適切にDiscriminatorとGeneratorを訓練するのが難しいとされてきた。また大きな画像はその分メモリも消費するため、minibatchのサイズも必然的に小さくしなくてはならない。そうなると精度も落ちる。

訓練はGeneratorもDiscriminatorも同時に同じ大きさで訓練し、解像度をあげるときも同期して変更した。拡大するタイミングでも常に全ての層で学習可能な状態を保っていた。工夫点として、いきなり解像度をあげると既に学習済みの解像度の小さい画像に対する層に突然の更新がかかってしまうため、新しい入力を少しずつブレンドしていく形で学習させている。

GANは訓練画像の一部のデータの特徴をつかみがちな傾向がある。これの解決策はSalimansの提案する”minibatch discrimination”で、各ミニバッチごとの統計情報を取得して最終的な生成物もそれにならうようにする。Discriminatorの最終層にminibatchレイヤを接続して統計情報を算出する。今回の研究ではこれを簡素にして余計なハイパーパラメータがないようにした。ただDiscriminatorをUnrollする方法やrepelling regularizerの方がよいかもしれない。

GANを評価する方法はいくらかあるが訓練画像とどう違うかを考慮していなかったり、細部まで評価できなかったので、新しくLaplacianPyramidとSliced Wasserstain Distanceを用いた方法を提案する。

後の詳細はAppendixにいろいろありますね。。

結果(論文より抜粋)

スクリーンショット 2018-03-02 0.36.58.png

 

おわりに

何度見ても精度が素晴らしい。工夫点はいくらかあるがそこまで大変なものもない感じ。ここまでできるんだったらだいぶ強くなってきたんではないかと思うけどなぁ。

About the author

Comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です