モーショントレースプログラムOpenPoseで遊んでみる

表題の通り。オタク界隈御用達のMMD関係だと結構有名みたいで、Github上で開発が進んでいるモーショントレースするためのプログラムでかなり精度が高く、ドキュメントを読むと3D情報まで処理できるみたいです。

また、MMDで扱うための情報が大量にあるため、それらを参考に個人用のツールに使っていきたいと考えていますよ!!

windows準拠で作業を進めていこうと思います。

openposeのGithub

導入参考。ちょっと情報が古いので公式のreadmeも読み進めつつ。

ここからダウンロードできます。CPU版とGPU版があって、推奨されているのはGPU版ですね。私はおすすめされたものをそのまま入れます。

quiitaの導入記事では色々なものが必要とありますが、公式readmeでは特になにも言及されていないので、早速実行してみようと思います。exampleには様々な動画、画像が含まれているのが確認できます。これでテストできるんですね。ふむふむ。

cmdでファイルをダウンロードした場所に移動して、デモのコマンドを実行します。

D:
cd D:\download\openpose-1.6.0-binaries-win64-gpu-python-flir-3d_recommended\openpose
bin\OpenPoseDemo.exe --video examples\media\video.avi

ずらずらずらっとメッセージが出てきます。できたのかな?

Error occurred on a thread. OpenPose closed all its threads and then propagated the error to the main thread. Error description:

Caffe trained model file not found: models\pose/body_25/pose_iter_584000.caffemodel.
Possible causes:
       1. Not downloading the OpenPose trained models.
       2. Not running OpenPose from the same directory where the `model` folder is located.
       3. Using paths with spaces.

エラーが出ました。モデルがねえよ!? って言われてます。指定されたディレクトリにいくと確かにない。なるほど? modelsディレクトリにあるgetModels.batを起動ししばらくまちます。

画像2

画像1

ファイルがダウンロードされてきました。こいつを使うのね。座して待ちます。

再度実行。

画像3

おお・・??おおーできてますできてます。すごーい。私のPCでモーショントレースができてるう!!

おもろいっすねえこれ!!

私の環境では特に問題なさそうです。このままこのdemo.exeを使って作業していこうと思います。各種フラグはgithubに乗っています。さっと見た感じjson保存だけで良い・・・かな? 他のもやると重たくなりそうだし。

出力するとyml形式とか色々出てくる。

画像4

これを解析するのだな?なるほど?

---
pose_0: !!opencv-matrix
  rows: 1
  cols: 25
  dt: "3f"
  data: [ 3.68689209e+02, 2.00991013e+02, 9.10846174e-01,
      3.70117767e+02, 2.32336899e+02, 9.61018503e-01, 3.43468842e+02,
      2.32402679e+02, 8.85421157e-01, 3.34145416e+02, 2.90272400e+02,
      8.59988809e-01, 3.27911835e+02, 3.31018158e+02, 8.90977025e-01,
      3.96801849e+02, 2.32282166e+02, 9.08751070e-01, 4.06222839e+02,
      2.85587494e+02, 8.81238580e-01, 4.17165710e+02, 3.29440704e+02,
      8.69094312e-01, 3.70203888e+02, 3.29421722e+02, 7.92353392e-01,
      3.54509155e+02, 3.29433929e+02, 7.54691541e-01, 3.57728607e+02,
      4.04673126e+02, 8.95295143e-01, 3.59206329e+02, 4.71991333e+02,
      8.63932788e-01, 3.90506683e+02, 3.29433685e+02, 7.30214775e-01,
      3.81196899e+02, 4.06160187e+02, 9.42360282e-01, 3.78041565e+02,
      4.72022736e+02, 8.23188961e-01, 3.63896454e+02, 1.94693024e+02,
      9.06506717e-01, 3.73359009e+02, 1.93232422e+02, 8.96408200e-01,
      3.54527863e+02, 1.94669861e+02, 7.81982243e-01, 3.82757874e+02,
      1.93160629e+02, 8.39485645e-01, 3.73342438e+02, 4.90814941e+02,
      7.06135571e-01, 3.82725800e+02, 4.87694916e+02, 7.70759284e-01,
      3.74887726e+02, 4.79832184e+02, 6.08104110e-01, 3.63920166e+02,
      4.90796631e+02, 7.64472485e-01, 3.56046997e+02, 4.89225708e+02,
      7.60732114e-01, 3.62343964e+02, 4.79815765e+02, 6.78032279e-01 ]

試しに1つ開いてみる。おっふ。

・・・・おっふ。ちょっとよくわからないですねえ。誰か解説してれませんか。ちょっと間違えてたのでjsonで出力。よし。

nこういうのは先人がいるもの。ありがとう!!

なんとなくわかった!!rubyでこりこりやってみます。プログラムに大切あなのは・・・フィーリング!!!

この際前から気になってたelectronでアプリ化して使おうかなあ。画像表示とかもできそうだし。しばらく試行錯誤しそうなのでnote分けようと思います。ではな!!!



この記事が気に入ったらサポートをしてみませんか?