はじめに
@Kim_Burton さんのAIに自分だけの美女を生成してもらうという記事を読んで,美女生成を実際に学習からトライしているのを見たのがきっかけです.
僕が先日フォーラム顔学2020で発表してきた内容とカスっていたので自分のやり方でこのテーマをマネしてみます.引用先の記事では一から学習を行っているので,画像の条件などをそろえるのも大変です.じゃあ学習しなければいいのでは?というのが僕の考えです.今日は自分のやってる研究を含めて少し紹介したいと思います.詳細や実装はまだ研究がまとまりきっていないので伏せます.
深層生成モデルと潜在変数について
StyleGAN2は高解像度の顔画像生成モデルのSOTAです.NVIDIAが開発をしたモデルで,表現力が非常に高く潜在変数空間も滑らかなことで知られています.Image2StyleGANと呼ばれる技術も研究がなされており,データセットに存在しないような現実の顔画像でも再構成可能であることが分かっています.
近年の深層生成モデルは,基本的には潜在変数と生成画像が1:1対応をしています.なので,生成画像が所望の画像と同じになるように潜在変数に最適化処理をかけてあげれば実在する人の顔画像を再現することができます.
StyleGAN2で再実装して僕の顔でやってみた結果が以下です.そこそこの精度が出ていると思います.
右が本物で左が再構成画像です.
潜在変数に関する記事はこちらが非常にわかりやすいです.ともかく,深層生成モデルは潜在変数から画像を生成するので,1:1で対応づいているということがわかれば大丈夫です.
アイドル顔を生成する方法
先ほども説明した通り,StyleGAN2は所望の顔画像を再現することができます.これはすなわち「ある人物の顔画像に対応する潜在変数を得ている」と言えます.なので,潜在変数空間上に好みの女性の画像をどんどん埋め込んで(Image Embedding)やってその分布を計算すれば,好みのアイドル分布を取得することができます.
分布さえ得られてしまえばあとはサンプリングで新たにその分布からサンプル潜在変数を取得して,好みのアイドル顔サンプルを生成するだけです.
AKB48からアイドル顔を生成する
あんまりアイドルに詳しくないので、とりあえずアイドルグループとしてAKB48さんの画像を使わせていただきました.
使った画像は公式サイトのメンバー一覧です.僕が画像を取ってきた時とものが変わっているので、生成画像のテイストが若干変わると思います.AKB48の方の顔を再構成したものを勝手にアップすると勝手に改変して公開したことになってしまう(著作者人格権など)のではないかと思うので,あくまでも分布を作成するまでに得た結果は公開しません.
前述の手法でメンバーの顔を潜在変数空間上に埋め込んでその分布を計算,その分布からサンプル潜在変数を取ってきてStyleGAN2で生成しました.
どうでしょうか?それなりにちゃんとアイドル顔が生成できたと思います.こんな感じで、もう画像生成系は再学習が不要な時代になってきていると思います.巨人の肩に乗らせていただきましょう.
ちなみに,@Kim_Burton さんの記事でも挙げられているように平均顔は顔が集団として持つ特徴を捉えることができます.これは潜在変数空間上でもおそらく同じことが言えると思います.
一応AKB48の潜在変数空間上の平均顔もおまけで載せておきますね.重ね合わせ法を使わないので普通の平均顔みたいにぼやけたりしません.
さいごに
フォーラムでも発表しましたし、そろそろかなと思って少しだけ研究の内容を記事にしました.
実装の詳細やコードに関しては修論が落ち着いて気が向いたら公開しようと思います.それでは.