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だけじゃなくて色々遊んでみたくなるとても面白い技術です!