姿勢推定とVRのお勉強

突然ですが、アニメとかゲームのキャラを自由に動かせたら楽しいと思いませんか?

バーチャルYouTuberさんもいいですね。私はシロさんが好きです。それ以外にも自由自在にキャラを動かせたら……と思うと夢が広がりそうです。

 

色々な手法があるようです。大まかには

モーションキャプチャーシステムやモーションセンサーでキャプチャ

・カメラ映像からそれっぽく生成

・あらかじめ大量のモーションを事前登録してその中から再生 ……など

 

機材用意する手間や費用を考えると、カメラを使えるとお手軽そうです。

カメラ映像からモーションを生成する手法のひとつについて調べてみました。

 

姿勢推定

CMUカーネギーメロン大学)で公開された

[1611.08050] Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

という論文があります。

姿勢推定、画像中の複数の人の2D姿勢を効率的に検出する手法とのことです。

映像から、リアルタイムに人間の姿勢を取得するのですね。

内容

こちらの方のメモを参考にさせて頂きました。

yusuke-ujitoko.hatenablog.com

構造はCNN(畳み込みニューラルネットワーク)で、

・まず一つ、Part Confidence Mapsを作り、体部位の位置を予測する

・もう一つ、Part Affinity Fieldsを作り、体部位間の繋がりを予測する

・これらを連結して、結果を出力する。

これをひとつのstageとし、これを繰り返して、精度を高める。

 

ただPart Affinity Fieldsを解くのはNP困難なので、問題を緩和する。

・エッジの数が最小になるように条件を決定する

・隣接する部位の間のみを解く

 

と問題を単純にするようです。

 

うーん、まだ正直よく分かってない、もう少し調べないと……

もっと機械学習を勉強して、プログラムを作ってみるのが良いのでしょうか。

 

実装例

CMUではOpenPoseというC++ライブラリを公開されています。研究用、非商用だと無料で扱えるとのことです。

 

また、DeNAの研究開発の方がPythonとChainerで実装されていたりします。

こちらの記事もとても参考になります。

engineer.dena.jp

サンプルプログラムを実行しましたが、顔の輪郭や体の姿勢がリアルタイムで取れていました。素晴らしい。

 

おわり 

あまりまとまってなくてすみません。

近いうちに実際に組んでみたいかと思います。