Python
Windows
3d-pose-baseline

Windows への 3d-pose-baseline-vmd の導入手順

この記事は【目次】MMDモーショントレース自動化への挑戦の為の導入手順になります。
ノンエンジニアの方向けに、できるだけ平易に記載した…つもりです。

miu200521358/3d-pose-baseline-vmd

2Dの骨格位置情報から3Dの関節情報に変換するライブラリの私的改変版。

1. TensorFlow の導入

Installing TensorFlow on Windows

Tensorflow には、CPU版とGPU版がありますが、ここでは、CUDAバージョンとの兼ね合いで、CPU版を導入します。(詳しくは上記URL参照)

1.1. Anaconda のインストール

capture001169.jpg

1. Downloads | Anaconda ページから、3.6用(左側)のインストーラをダウンロードする。

※メアドの入力が求められますが、「No Thanks」でキャンセルできます。

capture001170.jpg

2. 「Next >」押下

capture001171.jpg

3. 「I Agree」押下

capture001172.jpg

4. 「Just Me」のチェックボックスのまま、「Next >」押下

capture001173.jpg

5. インストール先のパスを設定して、「Next >」押下

capture001174.jpg

6. オプションはそのままで、「Install」押下

capture001175.jpg

7. しばし待つ

capture001176.jpg

8. 完了したら、「Next >」押下

capture001177.jpg

9. VSCode(コードエディタ)のインストールはお好きに。私は既に入っていたので、「Skip」しました。

capture001178.jpg

10. 「Finish」押下

1.2. TensorFlow のインストール

capture001180.jpg

1. スタートメニューから、「Aanaconda Prompt」を起動する

capture001181.jpg

2. tensorflow 用環境を作成
  ※これは、他の開発環境と切り分けするための箱を作るようなものです。

conda create -n tensorflow pip python=3.6

capture001182.jpg

3. Proceed は 「y」で実行継続

capture001183.jpg

4. しばし待つ

capture001185.jpg

5. tensorflow環境を有効化する

activate tensorflow

capture001186.jpg

6. tensorflow(CPU版)をインストールする

pip install --ignore-installed --upgrade tensorflow

capture001187.jpg

7. しばし待つ

capture001189.jpg

8. 完了したら、「python」コマンド入力。「>>>」と先頭に出ていたらOK。

capture001190.jpg

9. 以下コマンドを一行ずつ入力。(先頭の >>> は入力不要です)

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))

最後に「b'Hello, TensorFlow!'」と出力されていればOK。

2. h5py のインストール

h5py

capture001191.jpg

1. 上記の「Aanaconda Prompt」を開いたままの場合、「quit()」と入力して、python実行環境を終了させる。

capture001192.jpg

2. h5py をインストール

conda install h5py

capture001192.jpg

3. Proceed は 「y」で実行継続

capture001193.jpg

4. しばし待つ

capture001194.jpg

5. 完了

3. 3d-pose-baseline-vmd の導入

capture001218.jpg

1. miu200521358/3d-pose-baseline-vmd
のトップページから「Clone or Download」>「Download ZIP」を順に押下

2. ダウンロードした圧縮ファイルを、空白のないパス以下に解凍。私は以下に配置しました。

C:\MMD\3d-pose-baseline-vmd

4. H36Mデータ の導入

1. 上記ディレクトリに「data」ディレクトリを作成する

capture001197.jpg

2. H36Mデータzip を直接ダウンロードする

capture001219.jpg

3. ダウンロードした圧縮ファイルを解凍して、1. の「data」ディレクトリ以下に配置する

C:\MMD\3d-pose-baseline-vmd\data\h36m

4. 学習データ の導入

※オリジナルの学習データは、Windowsの260文字パス制限にひっかかるため、パスを簡略化して再生成しました。

1. 「data」ディレクトリと同じ階層に「experiments」ディレクトリを作成する

2. 学習データzip (GoogleDrive) を直接ダウンロードする

capture001220.jpg

3. ダウンロードした圧縮ファイルを解凍して、1. の「experiments」ディレクトリ以下に配置する

C:\MMD\3d-pose-baseline-vmd\experiments\All\dropout_0.5(略)

5. 必要ライブラリのインストール

capture001221.jpg

1. 「Aanaconda Prompt」で、3.で作成したディレクトリに移動

※新しくプロンプトを立ち上げた場合には、「activate tensorflow」で、必ず自分が作成した環境に移動すること
 コマンド入力行の先頭に (tensorflow) と、環境名が出ていればOK。

cd C:\MMD\3d-pose-baseline-vmd

2. 必要ライブラリをインストール。以下コマンドを一行ずつ「Aanaconda Prompt」に入力してEnter。

pip install numpy
pip install python-dateutil
pip install pytz
pip install pyparsing
pip install six
pip install matplotlib
pip install opencv-python
pip install imageio

6. 3d-pose-baseline-vmd 実行

1. 「Aanaconda Prompt」を起動し、(tensorflow)を有効にして、「3d-pose-baseline-vmd」のインストールディレクトリに移動

cd C:\MMD\3d-pose-baseline-vmd

capture001222.jpg

実行方法

  1. Openpose簡易起動バッチ で データを解析する
  2. OpenposeTo3D.bat を実行する
  3. 解析結果JSONディレクトリパス が聞かれるので、2.のjson出力ディレクトリパスのフルパスを指定する
  4. 出力対象人物INDEX が聞かれるので、Openposeで読み取った人物のうち、何番目の人物を出力したいか、1始まりで指定する。
    • 未指定の場合、デフォルトで1が設定される(1人目の解析)
  5. 詳細なログを出すか 聞かれるので、出す場合、yes を入力する
    • 未指定 もしくは no の場合、通常ログ
    • 詳細ログの場合、ログメッセージの他、デバッグ用画像も出力される
  6. 処理開始
  7. 処理が終了すると、解析結果JSONディレクトリパス と同階層に 3d_{実行日時}_{人物INDEX} のディレクトリが作成され、以下の結果が出力される。
    • pos.txt … 全フレームの関節データ(VMD-3d-pose-baseline-multi に必要) 詳細:Output
    • smoothed.txt … 全フレームの2D位置データ(VMD-3d-pose-baseline-multi に必要) 詳細:Output
    • movie_smoothing.gif … フレームごとの姿勢を結合したアニメーションGIF
    • dirty_plot.png … 移動量のグラフ
    • smooth_plot.png … 移動量をなめらかにしたグラフ
    • tmp_0000000000xx.png … 各フレームの3D姿勢(詳細ログyes時のみ)
    • tmp_0000000000xx_xxx.png … 各フレームの角度別3D姿勢(詳細ログyes時のみ)

注意点

  • Openpose のjson任意ファイル名に12桁の数字列は使わないで下さい。
    • short02_000000000000_keypoints.json のように、{任意ファイル名}_{フレーム番号}_keypoints.json というファイル名のうち、12桁の数字をフレーム番号として抽出するため