姿勢推定とVRのお勉強
突然ですが、アニメとかゲームのキャラを自由に動かせたら楽しいと思いませんか?
バーチャルYouTuberさんもいいですね。私はシロさんが好きです。それ以外にも自由自在にキャラを動かせたら……と思うと夢が広がりそうです。
色々な手法があるようです。大まかには
・モーションキャプチャーシステムやモーションセンサーでキャプチャ
・カメラ映像からそれっぽく生成
・あらかじめ大量のモーションを事前登録してその中から再生 ……など
機材用意する手間や費用を考えると、カメラを使えるとお手軽そうです。
カメラ映像からモーションを生成する手法のひとつについて調べてみました。
姿勢推定
CMU(カーネギーメロン大学)で公開された
[1611.08050] Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
という論文があります。
姿勢推定、画像中の複数の人の2D姿勢を効率的に検出する手法とのことです。
映像から、リアルタイムに人間の姿勢を取得するのですね。
内容
こちらの方のメモを参考にさせて頂きました。
構造はCNN(畳み込みニューラルネットワーク)で、
・まず一つ、Part Confidence Mapsを作り、体部位の位置を予測する
・もう一つ、Part Affinity Fieldsを作り、体部位間の繋がりを予測する
・これらを連結して、結果を出力する。
これをひとつのstageとし、これを繰り返して、精度を高める。
ただPart Affinity Fieldsを解くのはNP困難なので、問題を緩和する。
・エッジの数が最小になるように条件を決定する
・隣接する部位の間のみを解く
と問題を単純にするようです。
うーん、まだ正直よく分かってない、もう少し調べないと……
もっと機械学習を勉強して、プログラムを作ってみるのが良いのでしょうか。
実装例
CMUではOpenPoseというC++ライブラリを公開されています。研究用、非商用だと無料で扱えるとのことです。
また、DeNAの研究開発の方がPythonとChainerで実装されていたりします。
こちらの記事もとても参考になります。
サンプルプログラムを実行しましたが、顔の輪郭や体の姿勢がリアルタイムで取れていました。素晴らしい。
おわり
あまりまとまってなくてすみません。
近いうちに実際に組んでみたいかと思います。