今回は2D画像から人の姿勢を推定する技術、OpenPoseをインストールし、デモムービーを動かしてみました。
コンパイル済みファイルの実行はGitHubからダウンロードし、モデルデータを読み込むだけで簡単に実行できます。
コンパイル済みのOpenPoseを利用するメリットは以下の通り。
・ダウンロード後すぐにOpenPoseを試せる
・OpenPoseの姿勢推定結果が取得できる
もちろん、自分の環境に合ったようにビルドし、開発することもできます。
そこらへんはまだ私の理解が足りていないので、もう少し勉強してからビルドする方法を解説したいと思います。
■OpenPoseって何?
OpenPoseって何?ってことでまず初めに簡単にOpenPoseについての説明を入れておきます。
OpenPoseとは、カーネギーメロン大学のZhe Caoらが開発した、2D動画像からリアルタイムに人間の姿勢を推定することができるライブラリです。
リアルタイムに高速で姿勢推定できるため、あらゆる分野での応用が期待されています。
OpenPoseは研究目的に無料で公開されていますが、年間25,000ドルで商用利用も可能です。(25,000…ドル?とても高額ですが、それだけの価値がOpenPoseにあるということですね。)
これから姿勢推定の開発が進みオープンソースのライブラリがでるのにも期待したいですね。
しかし、OpenPoseには動画像から一度に複数人の姿勢を高速に推定できるためとても価値のある技術です。
無料公開されてるだけでもありがたいことこの上ないですね。
ではさっそくOpenPoseを動かしてみた結果をご覧ください!
■コンパイル済みのOpenPoseを動かしてみた
OpenPoseを動かしてみた結果を紹介していきます。
<私の開発環境>
OS:windows10
GPU:NVIDIA GeForce GTX1060
CUDA v9.0
cuDNN v7.05
以下のリンクからOpenPoseをダウンロードして使いました。
・画像を認識してみた
フリー画像をOpenPoseで姿勢推定してみました。
複数人の姿勢推定もできるということで、いくつかのパターンの画像を使ってみました。
まずは1人の画像から。
ちゃんと認識できてますね。さすがです。
お次は3人の画像を姿勢推定してみました。ちゃんと認識できてますね。
最後に群衆の画像を姿勢推定してみます。
群衆でもこれほど認識できるとは恐るべし。自転車を引いて歩いている人もちゃんと認識できています。
画像の処理自体にかかる時間も10枚で1秒もかからずに終わりました。この速さもOpenPoseの特徴の1つでしょう。
画像に関しては処理の重さを感じずに、高速で姿勢推定が行われました。動画ではどうでしょう?
ということで、次は動画のサンプルを試してみます。
・動画を認識してみた
今回姿勢推定に使った動画は、OpenPoseのサンプル動画になります。
OpenPoseのファイルの中に含まれているので、ダウンロードさえすれば誰でも利用することができます。
動画の場合は、1フレームごとに姿勢推定をした結果を出力して繋げるので、元の動画よりも映像自体が長くなりました。
私のPCスペックですと、元の動画の再生時間が4秒ほどでしたが、姿勢推定を行うと20秒ほどかかってしまいました。
ここらへんは自分のPCの処理能力によって変動してくるのでしょうがないですが、私のPCでは足りなかったようですorz
しかし、姿勢はしっかり検出されているので編集して早送りにすれば、元の動画のように作り直せそうですね。
■まとめ
今回はコンパイル済みのOpenPoseを動かしてみただけですが、実際の挙動が理解できたので、よい勉強になりました。
最後にOpenPoseについてのまとめておきます。
OpenPoseの内容は以下の通り。
・リアルタイムに姿勢推定できる
・複数の姿勢推定が可能
・高精度
以下私の率直な感想です。
OpenPoseを使ってみたわけですが、これ作ったひと天才やろって感じました。
どういうアルゴリズムで姿勢を検出しているかも公開しているのですが、よくわからない図がでてきて理解はまだできていません。
まだまだ基礎的な部分の理解が足りていないので、力を付けてから再度挑戦したいと思います。
機械学習を学びたい人には、ゼロから作るDeepLearningがおすすめなので、ぜひ購入を検討してみてください。
以上になります。最後まで読んでいただきありがとうございました。