Windows への 3d-pose-baseline-vmd の導入手順【2/17更新】

この記事は[【目次】MMDモーショントレース自動化への挑戦](https://qiita.com/miu200521358/items/d826e9d70853728abc51)の為の導入手順になります。

**v2リリースに伴い、こちらの導入は廃止となりました。クラウド版をご利用ください**
[クラウド(colab)でMMD自動トレース](https://qiita.com/miu200521358/items/fb0a7bcf2764d7797e26)


# [miu200521358/3d-pose-baseline-vmd](https://github.com/miu200521358/3d-pose-baseline-vmd)

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

# 1. h5py のインストール

[h5py](http://docs.h5py.org/en/latest/)

![capture001191.jpg](https://qiita-image-store.s3.amazonaws.com/0/254327/4112dfd8-fe05-b9a3-b46a-b77ac3e8fb83.jpeg)

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

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

「`cd C:\MMD\3d-pose-baseline-vmd`」

２. h5py をインストール

「`conda install h5py`」

![capture001192.jpg](https://qiita-image-store.s3.amazonaws.com/0/254327/e83c48de-56dd-766e-3df4-075a1d22bc4f.jpeg)

３. Proceed は 「`y`」で実行継続

![capture001193.jpg](https://qiita-image-store.s3.amazonaws.com/0/254327/1867929e-8b21-34d5-645f-a6ebd0291cd6.jpeg)

４. しばし待つ

![capture001194.jpg](https://qiita-image-store.s3.amazonaws.com/0/254327/3eceb7c6-ce7e-7062-e2b2-ce799f0936f9.jpeg)

５. 完了

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

![capture001218.jpg](https://qiita-image-store.s3.amazonaws.com/0/254327/bc826825-f1b4-e2bb-1a93-c6161782d29b.jpeg)

１. [miu200521358/3d-pose-baseline-vmd
](https://github.com/miu200521358/3d-pose-baseline-vmd) のトップページから「`Clone or Download`」＞「`Download ZIP`」を順に押下

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

「`C:\MMD\3d-pose-baseline-vmd`」

# 3. H36Mデータ の導入

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

![capture001197.jpg](https://qiita-image-store.s3.amazonaws.com/0/254327/59d7d536-a86b-8fd5-8042-ab493444cd21.jpeg)

２. [H36Mデータzip](https://www.dropbox.com/s/e35qv3n6zlkouki/h36m.zip) を直接ダウンロードする

![capture001219.jpg](https://qiita-image-store.s3.amazonaws.com/0/254327/f1765143-f263-65a2-d592-27d88651f69a.jpeg)

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

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

# 4. 学習データ の導入

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

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

２. [学習データzip (GoogleDrive)](https://drive.google.com/file/d/1v7ccpms3ZR8ExWWwVfcSpjMsGscDYH7_/view?usp=sharing) を直接ダウンロードする

![capture001220.jpg](https://qiita-image-store.s3.amazonaws.com/0/254327/fa6ccb3a-3a2c-c479-4ff3-2b40101f7c78.jpeg)

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

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

# 5. 3d-pose-baseline-vmd 実行

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

「`cd C:\MMD\3d-pose-baseline-vmd`」

![capture001222.jpg](https://qiita-image-store.s3.amazonaws.com/0/254327/3209da1f-5935-f996-068b-39a7f7267e06.jpeg)

## 実行方法

1. [Openpose簡易起動バッチ](https://github.com/miu200521358/openpose-simple) で データを解析する
1. [深度推定](https://github.com/miu200521358/FCRN-DepthPrediction-vmd)で 深度推定と人物インデックス別のデータを生成する
1. [OpenposeTo3D.bat](OpenposeTo3D.bat) を実行する
	- [OpenposeTo3D_en.bat](OpenposeTo3D_en.bat) is in English. !! The logs remain in Japanese.
1. `INDEX別ディレクトリパス` が聞かれるので、2.の`人物インデックス別パス`のフルパスを指定する
	- `{動画ファイル名}_json_{実行日時}_index{0F目の左からの順番}`
	- 複数人数のトレースの場合、別々に実行が必要
1. `詳細なログを出すか` 聞かれるので、出す場合、`yes` を入力する
    - 未指定 もしくは `no` の場合、通常ログ（各パラメータファイルと3D化アニメーションGIF）
    - `warn` の場合、3D化アニメーションGIFも生成しない（その分早い）
    - `yes`の場合、詳細ログを出力し、ログメッセージの他、デバッグ用画像も出力される（その分遅い）
1. 処理開始
1. 処理が終了すると、3. の`人物インデックス別パス`内に、以下の結果が出力される。
    - pos.txt … 全フレームの関節データ([VMD-3d-pose-baseline-multi](https://github.com/miu200521358/VMD-3d-pose-baseline-multi) に必要) 詳細：[Output](doc/Output.md)
    - start_frame.txt … 開始フレームインデックス([VMD-3d-pose-baseline-multi](https://github.com/miu200521358/VMD-3d-pose-baseline-multi) に必要) 
    - smoothed.txt … 全フレームの2D位置データ([VMD-3d-pose-baseline-multi](https://github.com/miu200521358/VMD-3d-pose-baseline-multi) に必要) 詳細：[Output](doc/Output.md)
    - movie_smoothing.gif … フレームごとの姿勢を結合したアニメーションGIF
    - smooth_plot.png … 移動量をなめらかにしたグラフ
    - frame3d/tmp_0000000000xx.png … 各フレームの3D姿勢
    - frame3d/tmp_0000000000xx_xxx.png … 各フレームの角度別3D姿勢(詳細ログyes時のみ)


## 注意点

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

## 便利ツール【1/20追記】

kenkra様が、3d-pose-baseline-vmdの結果(pos.txt)をブラウザで可視化できるツールを作ってくださいました！

https://drive.google.com/open?id=1Zm26y9hmrQxve2oO4JFmEwc2o9b_hXAe

上記ディレクトリをご自分のPCにダウンロードして、利用方法等をご確認下さい。
kenkra様、ありがとうございます！