OpenPoseがどんどんバージョンアップして3d pose estimationも試せるようになっている

概要

今年のゴールデンウイークに公開されたCMUのOpenPoseはその推定精度の高さと、(Ubuntuなら)気軽に試せる依存ライブラリの少なさ、結果の分かりやすさから多くのサイトで話題になりました。

github.com

このエントリは、このOpenPoseについての最近(-2017/7)の情報をまとめておく、という備忘録的な意図です。

  • 手と顔の推定が正式追加
  • WindowsBuildが実用的に動く
  • 骨格の3次元座標が(セッティングすれば)取れる
  • 商用ライセンスが正式に発表

あたりがトピックになるかと思います。

手と顔の推定が正式追加

これは話題になった当時からビデオは公開されていましたが2017年7月にコードが公開されました。早速試された方がいるようです。(nnn112358さん凄い!最初のインストール記事も書かれた方です)

OpenPoseのFace Estimationを動かしてみた。 - Qiita

OpenPoseのHand Estimationを動かしてみた。 - Qiita

WindowsBuild済み実行ファイルが実用的に動く

1.0.1相当のビルド済みDemoがzipで配布されています。 github.com

Windows10環境(と、たぶん初期ビルドだとGeforceGTX900番台のGPU)でこの800MBくらいのデモ環境一式をダウンロードして http://posefs1.perception.cs.cmu.edu/OpenPose/OpenPose_demo_1.0.1.zip

bin\OpenPoseDemo.exe --video examples\media\video.avi

コマンドラインで実行するだけで、Windows上でOpenPoseを試すことが出来ます。

f:id:izm_11:20170801125449p:plain

もし、起動に失敗するようであれば以下のリンクを頼りに外部ソフトウェアのインストールやセットアップを行ってください。

openpose/installation.md at master · CMU-Perceptual-Computing-Lab/openpose · GitHub

手や顔の認識も同時に使いたい場合は

bin\OpenPoseDemo.exe --video examples\media\video.avi --face --hand

とfaceオプションやhandオプションを付けて実行すれば良いようです。

参考サイト OpenPoseのFace Estimationを動かしてみた。 - Qiita

骨格の3次元座標が(セッティングすれば)取れる

OpenPose公開時の反応で多かったのが、各関節の3次元座標が取得できるという誤解でした(僕も最初はそう思っていました) しかし、実際にOpenPoseが行っている処理では、画像内の関節の2次元座標(xyの位置)だけしか求めていません。 なのでモーションキャプチャシステムに使うとかの用途だと、そのままでは使いにくい面もありました。

しかし 2017年7月に3次元骨格推定 がコミットされています。

openpose/3d_reconstruction_demo.md at master · CMU-Perceptual-Computing-Lab/openpose · GitHub

現時点ではまだbeta扱いで、UbuntuWindowsでしか動作確認が無いですが、骨格の3次元座標が取得できるデモも作られています。(1.0.2で追加) カラクリとしては複数のカメラの内部行列(視野角とか歪みパラメータ)と外部行列(カメラ間の位置と姿勢)を予め求めておいた後、普通のOpenPoseを起動して、各カメラ上の関節座標の2次元座標を元に、3角測量的に3次元座標を求める、という仕組みです。

推奨カメラはPointGray社のFLIRで、たぶんこれはシャッタータイミングを同期させる事と、速くて高解像度のカメラの方が精度良く推定することが出来る為だと思います。もちろん理屈の上では機種がバラバラのUSBカメラを3台でも求めることは出来ます。

商用ライセンスが正式に発表

以前よりライセンスに「非商用、研究用に限る」と記載されていましたが、正式な商用利用の手段が公開されました。 商用利用の場合は年額25000ドル(約270万円)程度かかるようです。ちょっと高めなのでお財布と相談の上ご利用になれますね!

OpenPose - Realtime Multiperson 2D Keypoint Detection from Video | Flintbox