shugo's kitchen

コンピュータサイエンスを美味しく調理していきたい

StyleGAN アーキテクチャのざっくりまとめ

[tex: ]

StyleGANの論文を読んだので超ざっくりメモを残します。

StyleGANはGANによる画像処理にスタイル変換を組み合わせたもので、スケールごとにスタイルを変換できるところに目新しさがあります。

今流行りのWaifu Labsとかってこれの応用だったりするんでしょうか。

アーキテクチャ

  • 基本的にgeneratorを頑張る研究であり、discriminatorやloss functionなどについては一切いじらないという方針。
    f:id:shugo256:20190803014635p:plain
    StyleGAN Architecture
  • 従来のもの(a)とは異なりMapping networkとSynthesis networkに別れている
  • Mapping networkでは乱数として生成される潜在変数zを8層のMLPによってスタイル変換のための別の潜在空間Wへと写像される。従来の研究ではzをそのまま用いていたが、zの分布は下図(b)のように超球として固定されていて、(a)のようなデータセットの空間に対応できない。(というか無理やり歪ませて超球に押し込めていた) 例えば性別とヒゲの量の二軸からなる潜在空間を考えた時に、これが綺麗な円になることはまずないだろう(ヒゲの生えた女性はあんまりいない)。 (b)のような歪んだ空間上だと2点間を連続的に移動する時の画像の変化が途中で不自然になることがあるらしい。
    f:id:shugo256:20190803014733p:plain
    StyleGAN_LatentSpace
  • こうして得られたwはAffine変換Aによって2*channel次元ベクトルyに変換され、チャネルごとに下式のように平均\muと分散sをいじることでスタイル変換を施す。これによりAdaINの直後のCNNではこのスタイル変換が直接効くが、その次のAdaINによってまた統計的性質は変わってしまうので、層ごとのスタイル変換が可能らしい。

\begin{align} AdaIN(x_i, y) = y_{s, i} \frac{x_i - \mu(x_i)}{ s (x_i) } + y_{b, i} \end{align}

  • 冒頭の図では8x8までしか書いていないが、本当はこれが1024x1024まで続いており、各ブロックに与えるwを変えることでスケールごとのスタイル変換が可能となっているのがこの研究のミソ
      - Coanrse Style(4x4~8x8)
         顔の形、髪型、メガネ、姿勢など
      - Middle Style(16x16~32x32)
         顔の特徴、目など
      - Fine Style(64x64~1024x1024)
         全体の色合いなど
    
  • さらに各層ではAffine変換Bを施したNoiseを付加している。 それぞれの層にどれだけの大きさのノイズを与えるかを調整することで、髪の流れやシワなど確率的な部分を変えられるようだ。 ~32x32のノイズは髪の大まかな流れを 64x64~のノイズは細かい髪質やシワを 制御しており、ノイズを全く付加しないと絵みたいなぼやぼやっとした画像になる (=平均的)
  • さらにさらにwをそのまま使うのではなく、W空間における平均値とパラメータψを用いることで計算されるw' = \overline{w} + \psi(w - \overline{w})を用いることで、ブロックごとに平均顔からどの程度離れたスタイル変換を施すかを調整できる。
  • 小さすぎると面白みがないけど大きすぎると乱れる場合があるというイメージ この辺の説明はyoutubeを見ると非常にわかりやすい

より詳しくは

StyleGAN解説 CVPR2019読み会@DeNA

A Style-Based Generator Architecture for Generative Adversarial Networks を読んだ - Qiita

StyleGAN: A Style-Based Generator Architecture for Generative Adversarial Networks - 機械学習奮闘記