テキストから人物動作を生成できるT2M-GPTアプリ

テキストから人物動作を生成できるT2M-GPTアプリ 機械学習

「ある動作を動画で他人に見せたい」
「言葉だけでは伝わりにくい動きを動画で表現したい」

このような場合には、この記事の内容が参考になります。
この記事では、テキストから人物動作を生成できる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.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月
3.112022年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を用いてテキストから人物動作を生成する

以上、T2M-GPTアプリの動作確認を説明しました。

タイトルとURLをコピーしました