1.はじめに
前回の「StyleGAN2の潜在空間に、新垣結衣は住んでいるのか?」 では、学習済みStyleGAN2モデルは学習に使っていない新規画像についても、高い画像生成能力を持っていることが分かりました。
今回は、学習済みStyleGAN2モデルを使って、学習に使っていない新規画像をどの程度画像編集できるかを見て行きたいと思います。
なお、コードは Google Colab で作成し Github に上げてありますので、自分でやってみたい方は、この「リンク」をクリックし表示されたシートの先頭にある**「Colab on Web」**ボタンをクリックすると動かせます。
*このブログで使用している画像は全てStyleGAN2の学習には使用していない新規画像です(前回ご紹介した方法で作成しています)。
2.Style Mixing とは?
StyleGANは、今までのGANの様に1個の潜在変数から画像生成するのではなく、Mapping network を使って18個の潜在変数w(これをstyleと呼びます)から画像生成しています。この特徴を生かすと Style Mixing と呼ばれる編集が可能になります。
18個の潜在変数w0〜w17は、9段階の解像度のレイヤ (4×4, 8×8, 16×16, 32×32, 64×64, 128×128, 256×256, 512×512, 1024×1024)に各2個づつ接続されています。
解像度によって潜在変数が画像生成に影響する内容は異なり、低解像度では顔の向き、顔の形、髪型など大局的なものに影響し、解像度が上がるに従って、目・口など細部のものに影響します。
ここで、画像Aと画像Bの潜在変数wのある部分だけ入れ替えることによって2つの画像の特徴を混ぜ合わせることが出来、これをStyle Miximgと呼んでいます。
3.顔の向き
この画像は、青枠のRow_picの潜在変数 w0, w1 を赤枠の Col_pic のものに入れ替えた結果を表しています。w0, w1 は主に顔の向きやメガネの有無くらいにしか影響を与えないので、顔の向きだけを独立して変えることができます。
*実際は、そのまま置き換えると効きが弱かったので、Col_pic の w0, w1 を1.4倍して、Row_pic と入れ替えています。
4.笑い
この画像は、Row pic の w4, w5 をCol_picに入れ替えたものです。笑いのポイントである口の形に影響を与えるのは主に w4, w5 です。口の開け方が割とそのまま移動している感じですので、笑い方のニュアンスも編集できそうです。
5.メガネ
この画像は、Row_picの w0, w1, w2 をCol_picに入れ替えたものです。メガネに影響与えるのは主にw0, w1, w2 です。顔の向きと被ってしまうので、顔の向きも同時に変わります。
興味深いのは、メガネの形がそのまま移動するのではなく、Row_pic が個別に持つメガネの属性があるようです。従って、意図した形のメガネを掛けさせることは難しいです。
6.若さ
この画像は、Row_picの w4, w5, w6, w7 をCol_picに入れ替えたものです。顔の形や髪型が影響するw2, w3はそのままにして、口の形に影響するw4, w5 と目の形に影響する w6, w7だけを入れ替えています。目と口の形を変えると、結構幼さが出ます。
*実際は、そのまま置き換えると効きが強すぎたので、w4, w5, w6, w7 について、Row_pic : Col_pic=2:8でミックスして、Row_picに入れています。
7.歳を重ねる
先程同様、顔の形や髪型が影響するw2, w3はそのままにして、口の形や目の形に影響する w4, w5, w6, w7 だけを入れ替えています。目と口の形を変えるだけでも、少し歳をとった様に見えます。
*実際は、そのまま置き換えると効きが強すぎたので、w4, w5, w6, w7 について、Row_pic : Col_pic=4:6でミックスして、Row_picに入れています。
8.男性化
これはおまけです。同じく、w4, w5, w6, w7だけを入れ替えていますが、結果はイマイチですね(笑)。
9.まとめ
これは、顔画像の要素と関係する主な潜在変数wをの関係を大まかにまとめたものです。w8以上はコントラストや色などへの影響に留まり、直接顔の形には影響しないようです。
学習済みStyleGAN2モデルは新規画像についても、高い画像編集能力を秘めているように思います。