cedro-blog

VToonifyによる顔動画のアニメ化

1.はじめに

 従来、StyleGANベースで顔動画のアニメ化をしようとすると、顔の位置合わせや顔以外の詳細部分の欠落などの問題がありました。今回ご紹介するVToonifyは、これらの問題を解消する技術です。

*この論文は、2022.9に提出されました。

2.VToonifyとは?

 下記が VToonify のアーキテクチャーで、DualStyleGANを変形させたものと考えることが出来ます。

 DualStyleGANは、定数を入力として低解像度レイヤから高解像度レイヤへと順次アップサンプリングするジェネレータを使います。そこへ、コンテンツとスタイルの潜在変数を入力して生成画像をコントロールします。このとき、低解像度レイヤは基本構造に影響し、高解像度レイヤは詳細部分に影響します。

 一方、VToonifyは、画像(W×H)をダウンサンプリングしたものを入力として高解像度レイヤ以降をアップサンプリングするジェネレータ(G)を使います。そして、エンコーダ(E)のダウンサンプリング部分とジェネレータ(G)のアップサンプリング部分をUネット構造で接続(multi-scale content condition)することによって、入力画像の顔の位置合わせを不要にしています。

 つまり、コンテンツの潜在変数を「画像のダウンサンプリング+multi-scale content conditio」 に置き換えた形と言うことが出来ます。 そして、ジェネレータ(G)のアップサンプリングをさらに2段階掛けること(2W×2H, 4W×4H)によって詳細部分の欠落を防止しています。

3.コード

 コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンク」をクリックし表示されたノートブックの先頭にある「Open in Colab」ボタンをクリックすると動かせます。

 まず、セットアップを行います。ランタイム「psp_env」は認識されていません。という表示が出ることがありますが、無視して頂ければOKです。この、セットアップは最初に1回実行すればOKです。

 

 そして、モデルの選択を行います。style_typeで、cartoon026〜caricature068の7種類のモデルから1つを選択して実行します。このモデル選択は、モデルを変更する度に実行します。ここでは、cartoon026 を選択して実行します。

 

 最初に、画像でやってみましょう。picで画像を指定してクロップします。自分の用意した画像を使用する場合は、dataフォルダにアップロードして下さい。ここでは、01.jpg で実行します。

 

 画像をアニメ化し、変換前後の比較画像を表示します。なお、変換前画像はbefor.jpg、変換後画像は after.jpg に保存されます。

 比較画像をダウンロードします(google chrome専用です)。なお、この画像は download フォルダに保存されます。

 

 次に、動画でやってみましょう。video で動画を指定してクロップします。自分の用意した動画を使用する場合は、dataフォルダにアップロードして下さい。ここでは、03.mp4 で実行します。

 

 動画をアニメ化し、変換前後の比較動画を表示します。なお、変換前動画はbefor.mp4、変換後動画は after.mp4 に保存されます。

 比較動画をダウンロードします(google chrome専用です)。なお、この動画は download フォルダに保存されます。

 

 動画をもう1つやってみましょうか、今度は video = 02.mp4 です。

 

 7つあるモデルのアニメ化サンプルは以下のようです。ちなみに、arcane077は男性向けのモデルです。

 VToonify によって顔動画の様々なアニメ化が実用的になって来ましたね。

 では、また。

(オリジナルgithub)https://github.com/williamyang1991/VToonify

(twitter投稿)