cedro-blog

SwapAEによる顔画像のアニメ化

1.はじめに

 顔画像をアニメ化する手法は色々提案されていますが、今回ご紹介するのは SwapAE(Swapping AutoEncoder) を利用して顔画像をアニメ化する手法です。

*SwapAEの論文は、2020.7に提出されました。

2.SwapAE とは?

 下記が SwapAEの概略で、Auto-encoderSwap の2つのコンポーネントで構成されています。Auto-encoder は、エンコーダによって画像を構造テクスチャーに埋め込み、デコーダによって元の画像に戻すことを学習します。

 一方、Swapは、エンコーダによって異なる画像を構造とテクスチャーに埋め込みますが、デコーダは Auto-encoder の構造Swap のテクスチャから画像を生成し、入力画像と出力画像を小さなパッチの単位で同じようにすることを学習します。

 学習が完了すると、ある画像の構造は変化させず、テクスチャだけ他の画像のものと入れ替える画像編集が可能になります。

 では、早速コードを動かしてみましょう。

3.コード

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

 まず、セットアップを行います。学習済みパラメータは、 韓国/NAVER社のweb漫画を元に stylegan2 で作られた naver-webtoon-facesSwapAE をダウンロードします。

 

 それでは、naver-webtoon-faces のアニメ出力を使って、SwapAE でテクスチャの入れ替えを行なってみましょう。

 1行目が naver-webtoon-faces のアニメ出力、2行目が SwapAE の Auto-encoder 出力 でこれは1行目と同じですね。3行目が SwapAE の swap 出力ということで、2〜8列目のテクスチャが1列目のものと入れ替わっています

 StyleGAN2は、テクスチャを入れ替えるロケーションを選択することによって効果が変わって来ます。ここではロケーションを変更した時の画像の変化をみてみましょう。

 1行目が元画像、2行目がロケーション1のテクスチャを1行目と入れ替えたもの、3行目がロケーション5のテクスチャを1行目と入れ替えたものです。ロケーションが低いほど影響度が強いことが分かります。

 今度は、naver-webtoon-faces の補完出力を元に、ロケーション1のテクスチャを入れ替えた動画を作ってみましょう。

 実写をアニメ化するときに、どのイメージにしようかと色々選べるので結構役に立ちそうです。

 では、また。

(オリジナルGithub): https://github.com/bryandlee/naver-webtoon-faces