「ある動作を動画で他人に見せたい」
「言葉だけでは伝わりにくい動きを動画で表現したい」
このような場合には、この記事の内容が参考になります。
この記事では、テキストから人物動作を生成できるT2M-GPTアプリについて解説しています。
本記事の内容
- T2M-GPTとは?
- T2M-GPTアプリのシステム要件
- T2M-GPTアプリのインストール
- T2M-GPTアプリの動作確認
それでは、上記に沿って解説していきます。
T2M-GPTとは?
T2M-GPTとは、テキスト記述からの人物動作の生成を行う技術のことです。
PyTorchで実装したモノが、以下のページで公開されています。
Mael-zys/T2M-GPT: T2M-GPT
https://github.com/Mael-zys/T2M-GPT
T2M-GPTで具体的にできることは、次のような動画(MP4)の生成です。
(MP4からGIFアニメに変換しています)
この人物動作は、次のテキストから生成しています。
A man rises from the ground, walks in a circle and sits back down on the ground.
これ以外のサンプルは、プロジェクト自体の公式ページで確認できます。
https://mael-zys.github.io/T2M-GPT/
サンプルを見るよりも、早く実際に試したいとなりますよね。
以下のページから試すことが可能です。
Generate Human Motion – a Hugging Face Space by vumichien
https://huggingface.co/spaces/vumichien/generate_human_motion
上記ページのことをT2M-GPTアプリと呼びます。
試せると言いましたが、T2M-GPTアプリはサーバーの込み具合によっては動きません。
正直、待つより自分でT2M-GPTアプリを用意した方が早いかもしれません。
実際、私自身がそうしました。
これ以降では、このT2M-GPTアプリについて説明します。
以上、T2M-GPTについて説明しました。
次は、T2M-GPTアプリのシステム要件を説明します。
T2M-GPTアプリのシステム要件
T2M-GPTアプリは、Hugging Face上で公開されています。
このT2M-GPTアプリのシステム要件を説明します。
ただし、これはT2M-GPT公式が公開しているものではありません。
GitHub・Colab上のデモを参考にして、第三者が開発したようです。
でも、公式のColabデモよりも使いやすくなっています。
また、ColabやHugging Faceは両方ともLinuxベースです。
そもそも、GitHubのソースもLinxu前提で動かすようになっています。
そのような中で、Windowsでも動作させることができました。
そのことより、サポートOSは以下と記載しておきます。
- Windows
- Linux
あと、Pythonバージョンはポイントになります。
現状では、Python 3.9までがサポート対象になると思います。
Python 3.10では、ダメでした。
おそらく、Python 3.11も同じくNGでしょう。
その原因は、Matplotlibにあります。
Matplotlib 3.4.3とバージョンが指定されています。
このバージョンの3.4.3では、以下のPythonがサポート対象となります。
そのため、ここはPython 3.9ぐらいにしておきましょう。
現状のPython公式開発サイクルは、以下。
バージョン | リリース日 | サポート期限 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
3.11 | 2022年10月25日 | 2027年10月 |
Python 3.9なら、まだまだサポート期限内です。
あとは、以下は事前にインストールしておきましょう。
- PyTorch(GPU版)
- FFmpeg
PyTorchは、CPU版でもまともに動かないはずです。
GPU版PyTorchのインストールは、次の記事で解説しています。
また、FFmpegもインストール必須です。
FFmpegのインストールは、次の記事で説明しています。
以上、T2M-GPTアプリのシステム要件を説明しました。
次は、T2M-GPTアプリのインストールを説明します。
T2M-GPTアプリのインストール
T2M-GPTアプリのインストールは、Python仮想環境の利用をオススメします。
Python仮想環境は、次の記事で解説しています。
検証は、次のバージョンのPythonで行います。
> python -V Python 3.9.13
そして、システム要件であるGPU版PyTorch・FFmpegをインストール済という状況です。
このような状況において、次の手順でT2M-GPTアプリのインストールを進めます。
- T2M-GPTの取得(GitHubから)
- T2M-GPTアプリの取得(Hugging Faceから)
- requirements.txtを使った一括インストール
それぞれを下記で説明します。
T2M-GPTの取得(GitHubから)
次のコマンドでGitHUbからリポジトリを取得します。
git clone https://github.com/Mael-zys/T2M-GPT.git
リポジトリルートへ移動しておきます。
cd T2M-GPT
基本的には、ここで処理を行います。
T2M-GPTアプリの取得(Hugging Faceから)
T2M-GPTアプリのファイル
https://huggingface.co/spaces/vumichien/generate_human_motion/tree/main
上記ページでファイルを確認できます。
すべてを手動でダウンロードするのは、現実的ではありません。
ここでは、次のツールを使います。
huggingface_hubを利用すると、自動的にファイルをダウンロードしてくれます。
huggingface_hubをインストールできたら、次のコードを実行します。
from huggingface_hub import snapshot_download snapshot_download( repo_id="vumichien/generate_human_motion", repo_type="space", revision="main", cache_dir="./")
上記コードを実行すると、ダウンロード処理が開始されます。
ダウンロードは、そこそこ時間がかかります。
処理が完了すると、ディレクトリ上に「spaces–vumichien–generate_human_motion」を確認できます。
そして、「snapshots」以下にあるファイル・ディレクトリをコピーします。
「16f05bc11fabcf6a4d2f4c986334e68b8ad6eb79」は、リポジトリのバージョンです。
バージョンが更新されれば、この値も変わってきます。
この長たらしいディレクトリより下のモノをコピーしましょう。
コピーしたファイルは、リポジトリルートに保存します。
requirements.txtを使った一括インストール
リポジトリルートには、コピーしたrequirements.txtが存在しています。
requirements.txt
git+https://github.com/openai/CLIP.git numpy==1.23.3 matplotlib==3.4.3 matplotlib-inline==0.1.2 transformers h5py smplx shapely freetype-py imageio networkx numpy Pillow pyglet==1.4.0a1 PyOpenGL PyOpenGL_accelerate six trimesh sphinx sphinx_rtd_theme sphinx-automodapi mapbox_earcut chumpy gdown MoviePy ffmpeg gradio==3.12
このrequirements.txtを利用して、必要なモノを一気にインストールします。
pip install -r requirements.txt
追加で、次のコマンドを実行しておきます。
pip install ./pyrender
以上、T2M-GPTアプリのインストールを説明しました。
次は、T2M-GPTアプリの動作確認を説明します。
T2M-GPTアプリの動作確認
T2M-GPTアプリの動作確認は、以下の手順で行います。
- ファイル・モデルの設置
- app.pyの修正
- T2M-GPTアプリの起動
それぞれを以下で説明します。
ファイル・モデルの設置
T2M-GPTアプリの動作確認を行うには、依存するファイル・モデルが必要です。
それらを配置するためのスクリプトは、用意されています。
bash dataset/prepare/download_glove.sh bash dataset/prepare/download_extractor.sh bash dataset/prepare/download_model.sh
上記スクリプトが実行できるなら、実行しましょう。
Windowsであれば、代わりに以下を実行します。
download_glove.shの代わり
gdown --fuzzy https://drive.google.com/file/d/1bCeS6Sh_mLVTebxIgiUHgdPrroW06mb6/view?usp=sharing Expand-Archive glove.zip Remove-Item glove.zip
download_extractor.shの代わり
mkdir checkpoints cd checkpoints gdown --fuzzy https://drive.google.com/file/d/1o7RTDQcToJjTm9_mNWTyzvZvjTWpZfug/view gdown --fuzzy https://drive.google.com/file/d/1tX79xk0fflp07EZ660Xz1RAFE33iEyJR/view Expand-Archive t2m.zip Expand-Archive kit.zip Remove-Item t2m.zip Remove-Item kit.zip cd ..
download_model.shの代わり
mkdir pretrained cd pretrained gdown 1LaOvwypF-jM2Axnq5dc-Iuvv3w_G-WDE Expand-Archive VQTrans_pretrained.zip Remove-Item VQTrans_pretrained.zip cd ..
最終的に以下のような構成になれば、OK。
app.pyの修正
app.py
pyrenderはすでにインストール済みのため、6行目は不要です。
11、12行目のパスを変更します。
あと、Windowsの場合には4行目をコメントにしておきます。
そうしないと、次のようなエラーが出てしまいます。
ImportError: ('Unable to load EGL library', "Could not find module 'EGL' (or one of its dependencies). Try using the full path with constructor syntax.", 'EGL', None)
T2M-GPTアプリの起動
起動するには、app.pyを実行します。
初回実行時は、「vumichien/T2M-GPT」をダウンロードします。
そのため、その分だけ待たされることになります。
正常に起動すると、コンソールに以下のように表示されます。
Running on local URL: http://127.0.0.1:7860 To create a public link, set `share=True` in `launch()`.
ブラウザで「http://127.0.0.1:7860」にアクセスしましょう。
まずは、次のような画面が見えたらOKです。
次に、以下のようプロンプトを入力します。
「Method」は、とりあえず「fast」を選択。
入力に問題なければ、「Generate」ボタンをクリック。
しばらくすると、次のような動画が表示されます。
「fast」は、簡易版です。
「slow」にすると、棒人間ではなく人間のように表現されます。
もちろん、その分だけ生成には時間がかかります。
以下の動画では、「fast」と「slow」の両方を同時に確認できます。
以上、T2M-GPTアプリの動作確認を説明しました。