Python
Windows
深度推定

Windows への FCRN-DepthPrediction-vmd の導入手順【2/17更新】

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

ver1.00のリリースに伴い、導入手順が変わりました。ご注意下さい


miu200521358/FCRN-DepthPrediction-vmd

深度推定のVMD用私的改造版

miu200521358/3d-pose-baseline-vmd の導入が完了している場合、追加インストール等は不要です。


1. TensorFlow の導入

Installing TensorFlow on Windows

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


1.1. Anaconda のインストール

capture001169.jpg

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

※2/17現在、Python 3.7となっていますが、3.xならば大丈夫です。

※メアドの入力が求められますが、「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 用環境を作成

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

Tensorflowの最新バージョンは、Anacondaでのインストールをサポートしていないため、古いバージョンを導入します

conda create -n tensorflow pip python=3.5

capture001182.jpg

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

capture001183.jpg

4. しばし待つ

capture001185.jpg

5. tensorflow環境を有効化する

activate tensorflow

capture001186.jpg

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

Tensorflowの最新バージョンは、Anacondaでのインストールをサポートしていないため、古いバージョンを導入します

pip install --ignore-installed --upgrade tensorflow==1.5.0

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. FCRN-DepthPrediction-vmd の導入

capture001325.jpg

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

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

C:\MMD\FCRN-DepthPrediction-vmd


3. モデルデータ の導入

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

capture001326.jpg

2. tensorflow用モデルデータzip(.ckpt) をダウンロードする

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

C:\MMD\FCRN-DepthPrediction-vmd\tensorflow\data

capture001327.jpg


4. 必要ライブラリの導入

capture001221.jpg

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

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

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

cd C:\MMD\FCRN-DepthPrediction-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


5. FCRN-DepthPrediction-vmd 実行

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

activate tensorflow

C:\MMD\FCRN-DepthPrediction-vmd

capture001328.jpg


実行方法



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


  2. VideoToDepth.bat を実行する




  3. 解析対象映像ファイルパス が聞かれるので、動画のファイルフルパスを入力する


  4. 解析結果JSONディレクトリパス が聞かれるので、1.の結果ディレクトリパスを指定する



    • {動画パス}/{動画ファイル名}_{実行年月日}/{動画ファイル名}_json が対象ディレクトリパス




  5. 深度推定間隔 が聞かれるので、深度推定を行うフレームの間隔(整数のみ)を指定する


    • 指定された間隔ごとに深度推定を行う

    • 未指定の場合、デフォルトで「10」とする

    • 値が小さいほど細かく深度推定を行うが、その分処理が遅くなる




  6. 反転フレームリストが聞かれるので、Openposeが裏表を誤認識しているフレーム範囲を指定する。


    • ここで指定されたフレーム範囲内のみ、反転判定を行う。


    • 10,20 のように、カンマで区切って複数フレーム指定可能。


    • 10-15 のように、ハイフンで区切った場合、その範囲内のフレームが指定可能。




  7. 順番指定リスト が聞かれるので、交差後に人物追跡が間違っている場合に、フレームNoと人物インデックスの順番を指定する。


    • 人物インデックスは、0F目の左から0番目、1番目、と数える。


    • [12:1,0] と指定された場合、12F目は、画面左から、0F目の1番目、0F目の0番目と並び替える、とする。


    • [12-15:1,0] と指定された場合、12~15F目の範囲で、1番目・0番目と並び替える。




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


    • 未指定 もしくは no の場合、通常ログ



  9. 処理開始

  10. 処理が終了すると、解析結果JSONディレクトリパスと同階層に以下結果が出力される



    • {動画ファイル名}_json_{実行日時}_depth


      • depth.txt … 各関節位置の深度推定値リスト

      • message.log … 出力順番等、パラメーター指定情報の出力ログ

      • movie_depth.gif … 深度推定の合成アニメーションGIF


        • 白い点が関節位置として取得したポイントになる



      • depth/depth_0000000000xx.png … 各フレームの深度推定結果

      • ※複数人数のトレースを行った場合、全員分の深度情報が出力される




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


      • depth.txt … 該当人物の各関節位置の深度推定値リスト





  11. message.log に出力される情報


    • **05254F目の出力順番: [5254:1,0], 位置: {0: [552.915, 259.182], 1: [654.837, 268.902]}


      • 5254F目では、1, 0の順番に割り当てられた


        • 0番目に設定されている1は、[654.837, 268.902]の人物が推定された

        • 1番目に設定されている0は、[552.915, 259.182]の人物が推定された



      • このフレームの人物立ち位置が間違っている場合、[5254:0,1]を、順番指定リストに指定すると、5254Fの出力順番が反転される



    • ※※03329F目 順番指定あり [1, 0]


      • 3229F目を、順番指定リストで、[1,0]と指定してあり、それに準じて出力された



    • ※※04220F目 1番目の人物、下半身反転 [4220:1]


      • 4220F目を、反転フレームリストで指定してあり、かつ反転判定された場合に反転出力された





movie_depth.gif