2018年1月22日

体の位置や向きが推定できるOpenPoseを紹介

業界動向

cover

こんにちは。開発マネージャーの白井です。 普段は、企業向けにDeepLearningを使った課題解決のお手伝いをしています。

DeepLearningは色々な用途に使えますが、現在、特に研究開発が進んでいるのが「画像認識」または「コンピュータビジョン」と呼ばれる分野です。静止画像や動画を解析して、その中に何が映っているか認識したり特定したり、といった、人間の「眼」に相当することをやってくれる技術です。

ということで今日は、そのコンピュータビジョンの中でも特に、画像の中で人の体や指などの位置(座標)や、向きを推定するOpenPoseという技術を紹介したいと思います

OpenPoseを使った動画はこちら

OpenPoseは、コンピュータビジョンに関する国際学会CVPR2017でCMU(カーネギーメロン大学)が発表した、keypoint(特徴点)の検出とkeypoint同士の関係の推定を行う技術です。OpenPoseを使うと、以下のように関節の位置など、人の体における特徴点がどの座標にあるかが分かります。

画像の中で人が持つさまざまな座標を予測することと同時に、複数の座標がある中で、どれとどれが同一の人のものかを推定できるのが、この技術のユニークなところです。例えば、肘から手首までの線を結ぶのは、画像の中に1人しかいなければ比較的簡単にできるのですが、複数の人が映っている場合、画像の中にたくさんの肘とたくさんの手首が存在するので、どれとどれを結んでいいか推測するのは簡単ではありません。しかしOpenPoseをつかうと、それが見事に推定できます。

OpenPoseの切り抜き画像 OpenPoseの切り抜き画像

これを動画からパラパラ漫画のように取得した画像に使うと、人がどういう風に体を動かしたかが、時系列で取得できます。

これによって、例えば以下のようなことができるかもしれません。

「スポーツのプロ選手とアマチュア選手の体の動きの差を発見し、フォームの矯正やトレーニングに利用する。」 → スポーツの上手い人とそうでない人は、体の使い方が違うのかもしれないので、その差は何かを客観的に見ることができるかもしれません。

「作業中の人の動きから、疲れが溜まっている人を見つけ、悪くなる前に通院を進める。」 → 体が不調になる時、自然のその部位をかばう行動が多くなったりします。そのため、その行動の頻度が一定値を超えたら、教えてあげるなどをすると、良い労働環境が作れるかもしれません。

OpenPoseアルゴリズムの問題点は、汎用的に作られていることもあって、学習したモデルのサイズが大きくなってしまうことです。 そこで、LeapMindでは、独自のライブラリの研究開発を行い、特定の用途に向けてアルゴリズムをブラッシュアップすることで、精度をあまり落とさずにサイズをコンパクトにしたり、高速化することを目指しています。

OpenPoseアルゴリズム

いかがでしょうか。人の動きを時系列で分析できるというこの技術、きっといろいろなアプリケーションがあるのではないかと思います。もし「こんな用途に使ってみたい!」と思われたら、ぜひLeapMindにお申し付けください。