cedro-blog

StyleGAN2で、アニメキャラの上半身を生成する

1.はじめに

 通常、GANでアニメキャラを生成するというと顔のみです。しかし、今回ご紹介するのは、なんとアニメキャラの上半身を生成するGANです。

2.手法

 先週、AIアーティストAydaoさん(@AydaoAI)が作成したGANモデルを使った、This Anime Does Not Exist というHPが公開されました。このHPでは、GANを使って、この世界に存在しないアニメキャラクターを生成することが出来ます。

 HPを開くと、この様に画面一杯にアニメキャラクターがスクロールする形で生成されます。そして、生成するときの創造性(Creativity)と画面のスクロール速度(Speed)をスライダーで設定出来ます。

 GANをちょっとでも触ってみた人であれば、顔だけでなく上半身を画像生成することがどれほど大変なことか直ぐ分かると思います。Aydaoさんは、これを STyleGAN2を使い、膨大な学習データと転移学習・拡張によって実現しています。凄い!!!

 Aydaoさんの作ったモデルの学習済みの重みは公開されていますので、今回はそれを元に Google Colab でAydaoワールドを覗いてみたいと思います。

3.コード

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

 最初に、tensorflow1.15.0 を動かすために必要な cuda10.0 をインストールします(2022.10よりgoogle colab からcuda10.0が削除されたため)。

 まず、セットアップを行います。

 次に、seedで指定した2枚の画像をブレンドした画像を生成してみましょう。seed は整数であれば何でもかまいません。

 blending = 0.5 はブレンドするときの src_seed の比率です。 truncation_psi = 0.8 は画像を生成するときに学習画像からどれだけ離すか(創造的か)の設定です。

 「清楚なお嬢さん」と「ワイルドなお姉さん」を50:50でブレンドすると、「ワイルドなお嬢さん」が出来上がります。

 次に、seedで指定した2枚の画像をモーフィングする動画を生成してみます。duration_sec = 5.0 は モーフィング時間(sec)、mp4_fps = 20 は動画のフレームレートです。

https://cedro3.com/wp-content/uploads/2021/01/interp_5126-5805-5126-0.7.mp4

 2枚の画像の完成度が高いだけでなく、その中間画像も連続的で綺麗なことが分かります。

 最後に、創造性に関係する truncation_psi をもっと大きく(最大2.0)して、ランダムにグリッドでモーフィングする画像を生成してみましょう。ここで、random_seed は乱数の系列を表します。

 grid_width = 2 はグリッドの横の大きさ、grid_height = 2はグリッドの高さの設定です。 (ちなみに、grid_width = 1, grid_height = 1 だと動画を1つだけ生成します)

https://cedro3.com/wp-content/uploads/2021/01/random_grid_822.mp4

 モーフィングの途中でtruncation_psi を大きくしているので、より創造的な(変化の大きい)画像が生成されていることが分かります。また、学習データの中には、漫画のコマ割りの様なデータも含まれているようです。random_seed の数字を色々変えて楽しんでみて下さい。

 それにしても、Aydao ワールド、魅力的過ぎます。もう現実に戻って来れないかも。。。。

 では、また。

twitterへの投稿