エンジニアリング

Liquid Warping GAN with Attention 1枚の画像から人を検出して動画と同じダンスを踊らせる

2021年4月、torch 1.8+ with RTX30+ GPUsに対応したiPERCoreがリリースされました。1枚の画像から人を検出して1つの動画と同じダンスを踊らせるLiquid Warping GAN with Attentionという技術です。Google Colabでも動かすことができますが、今回は自分の環境で動かしてみます。

環境は以下の通りです。
Windows 10
RTX 3070
Anaconda

執筆者

私の環境ではdocs/install.mdのsetup.pyですんなり入らなかったので、備忘録もかねて…

Liquid Warping GAN with Attentionとは?

Liquid Warping GAN with Attentionというリファレンス(動画の人)に合わせて、ソース(静止画の人)の動画を生成するネットワークです。

https://github.com/iPERDance/iPERCore

Liquid Warping GAN with Attentionの環境構築

Liquid Warping GAN with Attentionを動かすのに必要なものはPytorchとiPERCoreというモジュールです。iPERCoreを動かすためには、今まで構築したStyleGAN3やAnimeGAN2用のPytorchではなく、他ライブラリも含め別バージョンのPytorchが必要になります。本記事では、そのインストールもご紹介します。

CUTA Toolkitのインストールは次の記事をご参照ください!

インストール概要

基本的にはGitHubのinstall docの通りでOKです。
https://github.com/iPERDance/iPERCore/blob/main/docs/install.md

が、私はうまくいかなかったので、requirementsの手順に沿って、一つ一つインストールしました。https://github.com/iPERDance/iPERCore/blob/main/requirements/full_reqs.txt

Pytorchインストール

私は仮想環境をAnacondaを使ってインストール。
https://www.anaconda.com/products/individual

iPERCOREという環境を作ってアクティブ、ローカルにiPERCOREというフォルダを作成します。作業フォルダにcdしたら、インストールを進めていきます。

まずはpipをインストールします。

pip install pip==20.2.4

※Anacondaを使っていますが、今回は全てpipでインストールをしています。

iPERCoreインストール

次にiPERCoreに対応するPytorchをインストールします。

pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 mmcv-full==1.2.0 -f https://download.pytorch.org/whl/cu111/torch_stable.html

次に必要なライブラリーをどんどんインストールします。
※めっちゃconflicts起こすけど、気にしない。

numpy>=1.19.3
scipy>=1.5.2
scikit-image>=0.17.2
opencv-python>=4.4.0.40
tensorboardX>=2.1
tqdm>=4.48.2
visdom>=0.1.8.9
easydict>=1.9
toml>=0.10.2

次にGitをダウンロードします。

conda install git

※ここだけconda使いましたw

そして、Gitから下記の3つをcloneします。

git+https://github.com/open-mmlab/mmdetection.git@8179440ec5f75fe95484854af61ce6f6279f3bbc

git+https://github.com/open-mmlab/mmediting@d4086aaf8a36ae830f1714aad585900d24ad1156

git+https://github.com/iPERDance/neural_renderer.git@e5f54f71a8941acf372514eb92e289872f272653

これでインストールは完了です!

構築完了

docs/scripts_runner.mdの通り、demo/motion_imitate.pyでassets/samples内の画像と動画を使って実行してみます。

python demo/motion_imitate.py --gpu_ids 0 \
   --image_size 512 \
   --num_source 2   \
   --output_dir "./results" \
   --assets_dir "./assets"  \
   --model_id   "donald_trump_2" \
   --src_path   "path?=./assets/samples/sources/donald_trump_2/00000.PNG,name?=donald_trump_2" \
   --ref_path   "path?=./assets/samples/references/akun_2.mp4,name?=akun_2,pose_fc?=300"

私はassets/samples/referencesのAv37667655_2.mp4を使って動画を生成してみました。

ところどころ不器用ですが、かなり精度が高くトレースして、ヌルヌルとダンスしているののが分かります。1枚の画像と1つのダンス動画で誰でもダンスの達人になれてしまうAI「Liquid Warping GAN with Attention」の「iPERCore」モジュール、sampleだけじゃなくて色々遊んでみたくなるとても面白い技術です!