3Dモデルをいじってるとモーションキャプチャーがしたくなる。
Kinectは販売停止になったし、類似品は高くてライブラリも少ない。
なんとかWebカメラだけで出来ないかやってみた。
元はOpenPoseという姿勢推定で、これはFPSを上げたものみたいです。
使うにはとりあえず以下が必要になります。
- python3
- tensorflow 1.4.1+
- opencv3, protobuf, python3-tk
前にTensorFlowはインストールしたので今回はOpenCVを追加します。
公式のWindows用のインストーラを使ってパスを通すだけのはずが上手くできなかったので非公式の方法でインストールしました。
1 |
$ pip3 install opencv-python |
次に tf-pose-estimation を手順通り入れます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ git clone https://www.github.com/ildoonet/tf-openpose $ cd tf-openpose $ pip3 install -r requirements.txt ## ERROR You are using pip version 8.1.1, however version 10.0.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command. $ python -m pip install --upgrade pip $ pip3 install -r requirements.txt ## ERROR Command "python setup.py egg_info" failed with error code 1 in C:\Users\XXX\AppData\Local\Temp\pip-install-fze9vu34\ast\ ## requirements.txt から ast を削除 $ pip3 install -r requirements.txt |
astはpython3に組み込まれているので不要という意見を見かけました。
インストールしなくても実際に起動してるので txt から消すのが手っ取り早いです。
汎用ライブラリインストールと追加データ(かなり重め)のダウンロード。
1 2 3 4 5 6 |
##よく使われるライブラリ追加 $ pip3 install matplotlib ##学習済みグラフの追加 $ cd models/graph/cmu $ bash download.sh |
ダウンロードシェル内の wget は Windows にないですが、よく使うのでココからダウンロードしてパスを通してました。Window10でも問題なく動いてくれます。
3つだけなので他に使うあてがないならブラウザにURL直打ちでいいと思います。
これで実行できるようになりました。
1 2 3 4 5 |
## 静止画実行 $ python run.py --model=mobilenet_thin --resolution=432x368 --image=画像パス ## WebCam実行 $ python run_webcam.py --model=mobilenet_thin --resolution=432x368 --camera=0 |
難しそうな姿勢もうまく推定できてるように見える。
ちょっとわからない部分が多いのでしばらく遊んで何ができそうか確かめてみる。
ちなみに負荷高めの状態だとPhythonが落ちるので同時起動はあまり出来なさそう。
エラーメモ
T:\src\github\tensorflow\tensorflow\stream_executor\cuda\cuda_dnn.cc:396] Loaded runtime CuDNN library: 7103 (compatibility version 7100) but source was compiled with 7003 (compatibility version 7000). If using a binary install, upgrade your CuDNN library to match. If building from sources, make sure the library loaded at runtime matches a compatible version specified during compile configuration. T:\src\github\tensorflow\tensorflow\core\kernels\conv_ops.cc:712] Check failed: stream->parent()->GetConvolveAlgorithms( conv_parameters.ShouldIncludeWinogradNonfusedAlgo(), &algorithms)
cuDDNのバージョンが新しすぎた。cuDDN v7.0.5 を入れ直して解決。