Edited at

Windows への 3dpose-gan の導入手順【2/17更新】

この記事は【目次】MMDモーショントレース自動化への挑戦の為の導入手順になります。

ver1.01のリリースに伴い、導入が不要になりました。ご注意下さい


miu200521358/3dpose_gan_vmd

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


form元

学習に3Dデータセットを用いない3D姿勢推定 (DwangoMediaVillage様)


前提

このライブラリは、これまでのMMDモーショントレース自動化の各ライブラリの後に追加されました。

そのため、既に他のライブラリが導入されている前提で話を進めます。

これだけを導入する場合、適宜読み替えて下さい。


1. 3dpose_gan_vmd の導入

capture001465.jpg

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

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

C:\MMD\3dpose_gan_vmd


2. 学習データの導入

1. 3dpose_gan_vmdディレクトリ配下 に openpose ディレクトリを作成する

2. 以下2ファイルをダウンロードする

https://github.com/opencv/opencv_extra/blob/3.4.1/testdata/dnn/openpose_pose_coco.prototxt

※githubからダウンロードする場合、上記サイトの「Raw」ボタンを押下すると、生ファイルが表示されます。その状態で、保存(Ctrl+Sとか右クリックして「名前をつけて保存」とか)すると、ファイルがダウンロードできます。(1/14追記)

http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/coco/pose_iter_440000.caffemodel

capture001466.jpg

3. ダウンロードしたファイルを、openposeディレクトリ配下に設定する

4. 3dpose_gan_vmdディレクトリ配下 に train ディレクトリを作成する

5. 以下1ファイルをダウンロードする

https://github.com/DwangoMediaVillage/3dpose_gan/blob/master/sample/gen_epoch_500.npz?raw=true

2018/12/10現在、リンク切れが発生しているようです。私のGoogleドライブからダウンロードしてください。

https://drive.google.com/open?id=1xY9-0vkeGoMN8nYv2Nz0N5lDV7YqdlGs

6. ダウンロードしたファイルを、trainディレクトリ配下に設定する

capture001468.jpg


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

pip install chainer.jpg

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

※新しくプロンプトを立ち上げた場合には、「activate tensorflow」で、必ず自分が作成した環境に移動すること

 コマンド入力行の先頭に (tensorflow) と、環境名が出ていればOK。

cd C:\MMD\3dpose_gan_vmd

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

pip install chainer


4. 3dpose_gan_vmd 実行

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

cd C:\MMD\3dpose_gan_vmd

capture001467.jpg


実行方法



  1. Openpose簡易起動バッチ で データを解析する


  2. miu200521358/3d-pose-baseline-vmd で生成された2D関節データ (smoothed.txt) を用意する


  3. 深度推定で 深度推定と人物インデックス別のデータを生成する


  4. OpenposeTo3DGan.bat を実行する




  5. INDEX別ディレクトリパス が聞かれるので、3.の人物インデックス別パスのフルパスを指定する


    • {動画ファイル名}_json_{実行日時}_index{0F目の左からの順番}

    • 複数人数のトレースの場合、別々に実行が必要




  6. 詳細なログを出すか 聞かれるので、出す場合、yes を入力する


    • 未指定 もしくは no の場合、通常ログ(各パラメータファイルと3D化アニメーションGIF)


    • warn の場合、3D化アニメーションGIFも生成しない(その分早い)


    • yesの場合、詳細ログを出力し、ログメッセージの他、デバッグ用画像も出力される(その分遅い)



  7. 処理開始

  8. 処理が終了すると、3. の人物インデックス別パス内に、以下の結果が出力される。


    • pos_gan.txt … 全フレームの関節データ(VMD-3d-pose-baseline-multi に必要) 詳細:Output

    • smoothed_gan.txt … 全フレームの2D位置データ(VMD-3d-pose-baseline-multi に必要) 詳細:Output

    • movie_smoothing_gan.gif … フレームごとの姿勢を結合したアニメーションGIF

    • frame3d_gan/gan_0000000000xx.png … 各フレームの3D姿勢

    • frame3d_gan/gan_0000000000xx_xxx.png … 各フレームの角度別3D姿勢(詳細ログyes時のみ)




注意点


  • Openpose のjson任意ファイル名に12桁の数字列は使わないで下さい。



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