2022年3月に発表された、Thin-Plate Spline Motion Model for Image Animationという機械学習で顔写真を動画の顔の動きに合わせてアニメーションさせる技術を紹介します。Google Colabでも動かすことができますが、今回は自分の環境で動かしてみます。
環境は以下の通りです。
Windows 10
RTX 3070
Anaconda
どちらがソースか分からないぐらい高品質なアニメーションを作ることができるThin-Plate Spline Motion Modelをご紹介します!
Thin-Plate Spline Motion Modelとは?
Driving(ドライビングビデオ)に従ってSource (ソース画像)にモーションを転送することで画像を動かします。
https://github.com/yoyo-nb/Thin-Plate-Spline-Motion-Model
Thin-Plate Spline Motion Modelの環境構築
Liquid Warping GAN with Attentionを動かすのに必要なものはPytorchとThin-Plate Spline Motion Modelというモジュールです。Thin-Plate Spline Motion Modelを動かすためには、Pytorchをインストールします。
インストール概要
AnacondaにPytorchをインストールしてGitHubのrequirements.txtのライブラリをインストールすればOKです。
https://github.com/yoyo-nb/Thin-Plate-Spline-Motion-Model/blob/main/requirements.txt
Pytorchインストール
私は仮想環境をAnacondaを使ってインストール。
https://www.anaconda.com/products/individual
Python3.9でThinPlateSplineMotionModelという環境を作ってアクティブ、ローカルにThinPlateSplineMotionModelという作業フォルダを作成します。コマンドプロントからcd ThinPlateSplineMotionModelで作業フォルダに移動したら、インストールを進めていきます。
Pytorchインストールは以下の記事を参考にしてください。
Thin-Plate Spline Motion Modelインストール
Thin-Plate Spline Motion Modelをgit pullします。
https://github.com/yoyo-nb/Thin-Plate-Spline-Motion-Model
次にrequirements.txtをインストールします。
pip install -r requirements.txt
これでインストールは完了です!
Thin-Plate Spline Motion Modelセットアップ
checkpointsというフォルダを作成し、その中にvox.pth.tar(目や口など顔の表情)、ted.pth.tar(上半身)、taichi.pth.tar(全身)、mgif.pth.tar(動物絵)をダウンロードして格納します。
https://cloud.tsinghua.edu.cn/f/da8d61d012014b12a9e4/?dl=1 -O checkpoints/vox.pth.tar
https://cloud.tsinghua.edu.cn/f/483ef53650b14ac7ae70/?dl=1 -O checkpoints/ted.pth.tar
https://cloud.tsinghua.edu.cn/f/9ec01fa4aaef423c8c02/?dl=1 -O checkpoints/taichi.pth.tar
https://cloud.tsinghua.edu.cn/f/cd411b334a2e49cdb1e2/?dl=1 -O checkpoints/mgif.pth.tar
構築完了
では早速demo.pyを動かしてみます。
python demo.py --config config/vox-256.yaml --checkpoint checkpoints/vox.pth.tar
サンプルのDriving(ドライビングビデオ)やSource (ソース画像)で作ってみた動画がこちら。精度高くトレースしていることが分かります!
自分で用意したDriving(ドライビングビデオ)やSource (ソース画像)を使う場合はassetsフォルダの中に格納します。加えて、ファイルの書き出し用にresultというフォルダを作っておくと便利です。
Driving(ドライビングビデオ)の仕様はmp4で正方形で顔が中心にくるようにしてください。Source (ソース画像)の仕様はjpgまたはpngの正方形でDriving(ドライビングビデオ)と同じく顔が中心にくるようにしてください。
どちらも内部処理で一度256×256の正方形にリサイズして扱われます。
python demo.py --config config/vox-256.yaml --checkpoint checkpoints/vox.pth.tar --source_image assets/○○○.png --driving_video assets/○○○.mp4 --result_video result/○○○.mp4
reslutフォルダにモーション転送されたmp4の動画が生成されます。
Thin-Plate Spline Motion Modelを使うと、話している顔、人の動き、ピクセルアニメーションなど、様々なオブジェクトのImage Animationが実現できます。簡単に高品質な自然なアニメーションを作成できます。悪用は厳禁ですが、誰でも誰にでもなれちゃう面白い技術、どなかたの参考になれば幸いです!