オミータです。ツイッターで人工知能のことや他媒体の記事など を紹介していますので、人工知能のことをもっと知りたい方などは @omiita_atiimoをご覧ください!
他にも次のような記事を書いていますので興味があればぜひ!
ディズニー顔に瞬時に変換するAI!ウワサの「Toonify」論文を解説!
「Toonify Yourself!」というWebサイトをご存知でしょうか。顔の画像をアップロードすると瞬時にディズニー顔に変換してくれるというもので、Twitterなどで話題になっていたのをご覧になった方も多く居るかと思います。論文から引用すると、以下図のように見事Toonifyされています。
今回紹介する論文は、NeurIPS2020のWorkshopにサブミットされた"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)という論文で、Toonify Yourself!開発者によるその仕組みについての論文です。論文中では、下図のように浮世絵を写真化したものなどもあります。浮世絵がそのまま人っぽくなっていて個人的にツボです。(ちなみに、論文著者のJustin Pinkneyさんはイギリスの方のようです。)
論文を読むとToonify Yourself!で用いられている技術はとても単純なもので発想も面白いです。それではその仕組みについて見ていきましょう!
本記事の流れ:
- 忙しい方へ
- 仕組みの解説
- 実験結果
- まとめと所感
- 参考
原論文: "Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)
実装: こちらで公式実装が近日公開されるようです。(2020/10現在未公開)
0. 忙しい方へ
- 2つのスタイルを簡単にミックスできるよ
- 手順は次の3つだよ
- GANをデータセットAで学習(重み:$p_{base}$)。
- 同じGANをデータセットBで転移学習(重み:$p_{transfer}$)。
- 生成器の前半部分を$p_{base}$、後半部分を$p_{transfer}$(逆も可)としたGAN(重み:$p_{interp}$)を作成。(=Layer Swapping)
- このサイトで簡単に試せるよ
1. 仕組みの解説
手順はとても単純です。ここでは例として、人の顔を浮世絵っぽくしてみましょう。つまり、「顔写真」と「浮世絵の顔」をミックスします。
1.1 顔写真で学習
まず、顔写真(FFHQデータセット)で学習させます。ここではStyleGANを用いています。この時の重みを$p_{base}$とします。
1.2 浮世絵の顔でファインチューニング
つづいて浮世絵の顔データセットでファインチューニングします。同じくStyleGANで学習し、初期値には先ほどの$p_{base}$を用いています。これによって得られた重みを$p_{transfer}$とします。
1.3 レイヤースワッピング
最後に レイヤースワッピング(Layer Swapping) を行います。名前の通りレイヤーの一部を交換するだけです。今回で言うと、前半の層を浮世絵の重み$p_{transfer}$、後半の層を顔写真の重み$p_{base}$にしています。そのため、上右図のような輪郭が浮世絵でスタイルが顔写真の画像が出来上がりました。このときの重みを$p_{interp}$と呼んでいます。これだけです。
1.4 その他
StyleGANの論文[Karras, T.(CVPR'19)]で言われているように、StyleGANは層によって異なる特徴を生成しています。浅い層では顔の向きなどで、深い層では色合いなどを生成しています。そのため、前半の層の浮世絵重み$p_{transfer}$の割合をもう少し多くすると、次のような画像が出来上がります。だいぶ浮世絵ベースが強くなりましたね。
逆に浅い層を顔写真の重み$p_{base}$にして、深い層を浮世絵の重み$p_{transfer}$にした場合はどうなるでしょうか。この場合は顔写真ベースの浮世絵が出来上がります。下の画像がまさにその例です。歌舞伎感がすごいです。
この$p_{interp}$を数式で書くと次のようになります。単純に解像度が$r_{swap}$の時に重みを切り替えるというだけです。
ちなみに本論文によると、2つのGANの重みを内挿してスタイルをミックスするという考えは、超解像を実現するESRGAN[Wang, X.(ECCVW'18)]というモデルで提案されたようです。この内挿についてさらに研究した論文は[Wang, X.(CVPR'19)]です。単に重みを内挿することによってスタイルをミックスできるのはとても面白いですね。
最後に、顔写真とアニメ画像でLayer Swappingした結果を載せます。
2. 実験結果
仕組みの解説でも触れましたが、ここで結果をさらに載せます。
2.1 顔写真と浮世絵の合成
まずは浅い層を浮世絵、深い層をFFHQとした場合です。この時の境界は解像度が16x16の時です($r_{swap}=16$)。
続いて境界をもう少し深くして32x32とした時です($r_{swap}=32$)。一気に浮世絵が強くなりましたね。この画像たちが個人的に一番お気に入りです。
最後に浅い層をFFHQ、深い層を浮世絵とします。つまり今までの逆ですね。境界は$r_{swap}=16$です。全体的に口が歪んでいるのがとても歌舞伎っぽいです。
2.2 顔写真とアニメ顔の合成
ここでは浅い層をFFHQ、深い層をアニメとしています。境界については論文には明記されていませんでした。完全にディズニー/ピクサー感がすごいですね。
3. まとめと所感
簡単な手法でスタイルを混ぜることができる手法について紹介しました。Layer Swappingのような内挿については3つ以上のモデルに対しても適用することができ、また論文内ではFuture Worksとして、重みの内挿に別の関数を用いることやチャネル方向でのSwappingなどが提案されています([Edo, C.(CVPR'20)]によるとStyleGANはチャネルごとに画像内の異なるパーツの生成に特化しているようです)。StyleGANの有効性もさらにいろいろと広がっていきそうですね。実装も層を入れ替えるだけなのでぜひ試してみてはいかがでしょうか!
Twitterで人工知能のことや他媒体の記事などを紹介していますので@omiita_atiimoもご覧ください。
こちらもどうぞ:
4. 参考
-
"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)
原論文 -
Toonify Yourself!
本論文手法が用いられているWebアプリケーション。画像渡すだけで簡単にアニメ化できます。 -
Explained: A Style-Based Generator Architecture for GANs - Generating and Tuning Realistic Artificial Faces
StyleGANの解説記事 -
Reading: ESRGAN — Enhanced Super-Resolution Generative Adversarial Networks (Super Resolution & GAN)
ESRGANの解説記事。ESRGANは、2つのネットワークの重みを内挿する"Network Interpolation"を用いている超解像用GAN。 -
"Editing in Style: Uncovering the Local Semantics of GANs", Collins, Edo., Bala, Raja., Prince, Bob., Sabine Süsstrunk (CVPR'20)
StyleGANにおいては、特徴量マップのチャネルがそれぞれ画像の特定のパーツに寄与していることを示している論文。