LoginSignup
65
77

More than 5 years have passed since last update.

GPU無しで画像のみから人間のボーン推定が出来るtf-openposeを導入する

Posted at

概要

CVPR2017でOpenPoseというライブラリが公開されました。
これは、画像のみから人間のモーションのボーン推定ができます。

image

GIF動画を見てもらえればわかりますが、このような動画(画像)のみから、人間のボーン位置が推定できます。昔、Kinectでわざわざデプスセンサを駆使して、こういうことをやっていた時代から考えると信じられませんね。
原理については以下の動画があるのでご覧ください。(クリックするとyoutubeに飛びます。)

IMAGE ALT TEXT HERE

かなり面白そうなプロダクトなので、自分でも動かしてみたい!と思いました。
しかし、OpenPose自体、CPUのみの動作は対応していないらしく、まだこれから実装する予定のようです。

CPU only code #150
"CPU ONLY" works? #200

ただソースコードレベルでは、CPUのみの実装があるらしく、先人の方も、CPU版をビルドしてみたそうですが、失敗していらっしゃいました。

CPU版の OpenPoseのビルドに失敗した。

そこで、いろいろと試行錯誤した結果、"OpenPoseっぽいもの"をCPUのみで動作させることができましたので、それをご紹介いたします。

image.png

実際の動作画面。先人に習って画像はぱくたそ( https://www.pakutaso.com )からもってきました。

導入方法

答え自体は簡単でOpenPoseの公式は使っていないです。本家のOpenposeはCaffeeをベースに作られていますが、これは公式を元にTensorflowの方へ移植した実装となっています。リポジトリは以下のURLです。

導入自体はすごく簡単です。

$ git clone https://www.github.com/ildoonet/tf-openpose
$ cd tf-openpose
$ pip3 install -r requirements.txt

ただモデルのインストールが若干の癖があり、この方法がなかなかややこしかったです。
詳細はこのissueに書いてありますが、色々なモデルを学習させたりしているようなので、動くモデルというものがフィックスしていないような印象を受けています。
そこで、私が動作確認済みの方法をご紹介します。

$ mkdir -p ./models/trained/mobilenet_368x368/
$ cd ./models/trained/mobilenet_368x368/
$ wget https://www.dropbox.com/s/09xivpuboecge56/mobilenet_0.75_0.50_model-388003.zip
$ unzip mobilenet_0.75_0.50_model-388003.zip
$ mv model-388003.data-00000-of-00001 model-release.data-00000-of-00001
$ mv model-388003.index model-release.index
$ mv model-388003.meta model-release.meta

これで導入は完了です!
まず始めに、画像からのボーン推定を行います。

#ぱくたその画像をダウンロードします。
$ wget https://www.pakutaso.com/shared/img/thumb/150415022548_TP_V.jpg
#あとは実行するだけ!!
$ python3 inference.py --model=mobilenet --imgpath=./150415022548_TP_V.jpg 

image.png

tf-openposeにはwebcamでのリアルタイムで動くデモも付いています。

$ python3 realtime_webcam.py

image.png

フィギュアもある程度認識します。CPUで回して、FPSが1.2程度で結構リアルタイムというにはキツイですが、ボーン推定自体はうまくいってます!

まとめ

前々からこのOpenPoseはすごくやりたい!と思っていました。しかし、GPUがないとつらいんだろうなぁ。とか、機械学習の導入周りはあんまりやってないし、苦労した挙句入らない・・・みたいな悲しい結果になりそうだと思っていました。
しかし、少しずつTensorFlowやCaffeeまわりを調べているうちに、有名なモデルは別のDeepLearningのフレームワークへすぐ移植されるということに気づきました。というわけで、OpenPoseのTensorFlow実装を調べて見て、これを導入してみました。
使わせてもらっている分際でなんともいないのですが、本家より精度は悪い気がします。しかし、ちょっとやってみる分には、十分に使える実装ですし、CPUだけで出来るのは手軽で非常に良いです。
みなさんも正月休みにOpenPoseいかがでしょうか??

参考

65
77
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
65
77