エンジニアリング

Thin-Plate Spline Motion Modelで写真の顔を動画の顔と同じように動かす

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が実現できます。簡単に高品質な自然なアニメーションを作成できます。悪用は厳禁ですが、誰でも誰にでもなれちゃう面白い技術、どなかたの参考になれば幸いです!