Help us understand the problem. What is going on with this article?

ディズニー顔に瞬時に変換するAI!ウワサの「Toonify」論文を解説!

オミータです。ツイッターで人工知能のことや他媒体の記事など を紹介していますので、人工知能のことをもっと知りたい方などは @omiita_atiimoをご覧ください!
他にも次のような記事を書いていますので興味があればぜひ!

ディズニー顔に瞬時に変換するAI!ウワサの「Toonify」論文を解説!

Toonify Yourself!」というWebサイトをご存知でしょうか。顔の画像をアップロードすると瞬時にディズニー顔に変換してくれるというもので、Twitterなどで話題になっていたのをご覧になった方も多く居るかと思います。論文から引用すると、以下図のように見事Toonifyされています。

toon_face_anime

"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)を一部改変

今回紹介する論文は、NeurIPS2020のWorkshopにサブミットされた"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)という論文で、Toonify Yourself!開発者によるその仕組みについての論文です。論文中では、下図のように浮世絵を写真化したものなどもあります。浮世絵がそのまま人っぽくなっていて個人的にツボです。(ちなみに、論文著者のJustin Pinkneyさんはイギリスの方のようです。)

toon_fig6

"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)より引用

論文を読むと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)
  • このサイトで簡単に試せるよ

toon_procedure

"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)を元に作成

1. 仕組みの解説

手順はとても単純です。ここでは例として、人の顔を浮世絵っぽくしてみましょう。つまり、「顔写真」と「浮世絵の顔」をミックスします。

1.1 顔写真で学習

toon_step1

"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)を元に作成

まず、顔写真(FFHQデータセット)で学習させます。ここではStyleGANを用いています。この時の重みを$p_{base}$とします。

1.2 浮世絵の顔でファインチューニング

toon_step2

"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)を元に作成

つづいて浮世絵の顔データセットでファインチューニングします。同じくStyleGANで学習し、初期値には先ほどの$p_{base}$を用いています。これによって得られた重みを$p_{transfer}$とします。

1.3 レイヤースワッピング

toon_step3

"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)を元に作成

最後に レイヤースワッピング(Layer Swapping) を行います。名前の通りレイヤーの一部を交換するだけです。今回で言うと、前半の層を浮世絵の重み$p_{transfer}$、後半の層を顔写真の重み$p_{base}$にしています。そのため、上右図のような輪郭が浮世絵でスタイルが顔写真の画像が出来上がりました。このときの重みを$p_{interp}$と呼んでいます。これだけです。

1.4 その他

StyleGANの論文[Karras, T.(CVPR'19)]で言われているように、StyleGANは層によって異なる特徴を生成しています。浅い層では顔の向きなどで、深い層では色合いなどを生成しています。そのため、前半の層の浮世絵重み$p_{transfer}$の割合をもう少し多くすると、次のような画像が出来上がります。だいぶ浮世絵ベースが強くなりましたね。

ukiyo-e_face

"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)

逆に浅い層を顔写真の重み$p_{base}$にして、深い層を浮世絵の重み$p_{transfer}$にした場合はどうなるでしょうか。この場合は顔写真ベースの浮世絵が出来上がります。下の画像がまさにその例です。歌舞伎感がすごいです。

face_ukiyo-e

"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)より引用

この$p_{interp}$を数式で書くと次のようになります。単純に解像度が$r_{swap}$の時に重みを切り替えるというだけです。

toon_eq

ちなみに本論文によると、2つのGANの重みを内挿してスタイルをミックスするという考えは、超解像を実現するESRGAN[Wang, X.(ECCVW'18)]というモデルで提案されたようです。この内挿についてさらに研究した論文は[Wang, X.(CVPR'19)]です。単に重みを内挿することによってスタイルをミックスできるのはとても面白いですね。

最後に、顔写真とアニメ画像でLayer Swappingした結果を載せます。

toon_face_anime

"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)を一部改変

2. 実験結果

仕組みの解説でも触れましたが、ここで結果をさらに載せます。

2.1 顔写真と浮世絵の合成

まずは浅い層を浮世絵、深い層をFFHQとした場合です。この時の境界は解像度が16x16の時です($r_{swap}=16$)。

toon_fig4

"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)より引用

続いて境界をもう少し深くして32x32とした時です($r_{swap}=32$)。一気に浮世絵が強くなりましたね。この画像たちが個人的に一番お気に入りです。

toon_fig6

"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)

最後に浅い層をFFHQ、深い層を浮世絵とします。つまり今までの逆ですね。境界は$r_{swap}=16$です。全体的に口が歪んでいるのがとても歌舞伎っぽいです。

toon_fig5

"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)より引用

2.2 顔写真とアニメ顔の合成

ここでは浅い層をFFHQ、深い層をアニメとしています。境界については論文には明記されていませんでした。完全にディズニー/ピクサー感がすごいですね。

toon_fig7

"Resolution Dependant GAN Interpolation for Controllable Image Synthesis Between Domains", Pinkney, Justin. and Adler, Doner.(2020)より引用

3. まとめと所感

簡単な手法でスタイルを混ぜることができる手法について紹介しました。Layer Swappingのような内挿については3つ以上のモデルに対しても適用することができ、また論文内ではFuture Worksとして、重みの内挿に別の関数を用いることチャネル方向でのSwappingなどが提案されています([Edo, C.(CVPR'20)]によるとStyleGANはチャネルごとに画像内の異なるパーツの生成に特化しているようです)。StyleGANの有効性もさらにいろいろと広がっていきそうですね。実装も層を入れ替えるだけなのでぜひ試してみてはいかがでしょうか!

Twitterで人工知能のことや他媒体の記事などを紹介していますので@omiita_atiimoもご覧ください。

こちらもどうぞ:

4. 参考

omiita
オミータです。東工大情報系修士2年です。(2020) 深層学習の研究しています。 ご連絡はメールまたはTwitterでお待ちしております。 ツイッター: https://twitter.com/omiita_atiimo
eaglys
"EAGLYSは、未だ活用しきれていない企業に眠るデータ資産を、 安全にデータ分析・AI構築・運用するサポートを行っています。"
https://eaglys.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away