dorivenの日記

気がついたら社会人。気になる技術的なことについて少しずつ書いていけたらと思っております。

自分のやっている研究のちょっとだけ詳細

どうも、就職の状況とか海外に行くこととかをしっかり親に伝えていなかったら姉から警告を受けました。
何となしには行くことを伝えているのですが、しっかり伝えるのも何か恥ずかしいという感情があるみたいですね。

それと、英語の大切さが非常に身に染みたのでもっと英語とかの基礎教養にもウェイトを移します。
自分でこういうのもなんですが、英語はトップクラスに苦手なので最低限の意思疎通が取れるようにせねばと思いました。

それでは、今回はあんまり詳しく話すことは出来ないけど、自分のやっている研究の詳細について話したいと思います。

前回のあらすじ



自分が「画像処理」の中で「ジェスチャ認識」をやっており、その画像処理の自分が担当している領域で、どのような背景・技術があるのか、について語りました。
前回 【自分のやっている研究分野のお話 - datchの日記

自分のやっている研究



さて、前回は認識系の難しさ、学習の問題点について軽く触れました。
他方、認識系には機械学習をおこなわない手法もあります。
「Hidden Markov Model(隠れマルコフモデル、通称 HMM)」や「Continuous Dynamic Programming (連続DP、通称 CDP)」等といった手法により、与えられたパラメータ(もちろん、これは人間の手によって与えられるものだが)から認識する方法があります。
しかし、これらの手法を行うには様々な問題があります。

ジェスチャ認識の難しい所


セグメンテーション

HMMやCDPなどを利用した方法には実は前処理が必要になります。
それは、動作を認識したい部分をなんらかの方法で抽出する必要があるからです。
処理に必要な部分を切り出す事を画像処理では「セグメンテーション」と呼びます。
例えば、手や腕、体などを認識したい場合には一般的に形状認識を行い人間の腕や手などの部位を取得する必要があります。

このセグメンテーションに対してさまざまなアプローチが存在します。

  • 赤外線を使用する
    (よく用いられるKinectSDKにより人物とその部位のセグメンテーションを自動で行ってくれる、またLeapMotionもKinectと同様で使っている技術は一緒)
  • 複数台のカメラを用いる
    (ステレオカメラのように視差から深度計算を行い、その位置で対象を認識するという手法)
  • 認識したい対象に背景に存在しない色を付与する
    (特定の色の手袋とかをはめたりが一般的、PlayStationMoveやPS4のコントローラがこの手法にあたる)
  • 加速度センサを使用してそもそも画像からの情報を取得するのをやめる
    (こういった奴「指1本ですべてを操作できる「Ring」 日本発の革新的デバイスとなるか? - ねとらぼ」とかWiiリモコンが分かりやすいかな)

もちろん、対象のセグメンテーションを行わない手法も存在する。

動作物の追跡

セグメンテーションが上手く行った場合、今度はその部位の重心などの座標情報を用いて物体の追跡を行う必要がある。
この物体の追跡には画像情報のみで行う場合がパーティクルフィルタ等を使うのが一般的だが、他にも輝度情報を使って重心点を求める手法も存在する。
深度情報や加速度センサ、特定の色などを使ったものは、この処理工程がパス出来る。

移動の評価

移動・変化した状況を評価する。
しかし、ジェスチャは対象により非線形に拡大・縮小・変形(人によってジェスチャの大きさが違ったり、歪んだりするということ)するという問題があります。
そのため、用意したパターンやパラメータの調整が困難であり、どの程度までの認識を許すのかという問題もあります。
これらの移動評価をするのが先ほど紹介していたHMMやCDPを用いたりする。


画像のみからジェスチャ認識にはこの3つのステップが最低でも必要なのがお分かりいただけただろうか?

難易度(☆)
セグメンテーション(☆☆☆) → 追跡(☆☆) → 評価(☆☆☆☆)

既にセグメンテーションでも苦労している現状、如何にジェスチャ認識が難しいのかが分かるだろう。
もちろん、センサ類を使えばこれらの移動評価のみで済むが、そもそも評価もかなりレベルの高い処理なのだ。

さらに実際に使う環境では日光で赤外線が使えない、オクルージョン(認識したい物体が隠れる)の発生により移動評価が行えなくなる、特定の位置でしか認識しない、複雑なジェスチャを理解できない(製品化されているものはせいぜい数パターン組み合わせものしか認識できないなど)の様々な問題を抱えている。

ジェスチャ認識の難しさを分かっていただけただろうか?

製品化されているものは、基本的にセグメンテーションという処理を行わず、評価できるパターンをかなり簡易化してやっている。
よくジェスチャ認識の話をすると、背景を知らずにKinectやLeapMotionの話しが出てジェスチャ認識は簡単という人が居るが、複雑な動きを認識できると考えるのは大きな間違いだ。

自分の研究の特徴



さて、どれだけジェスチャ認識の難しいか分かっていただいたところで自分の研究の話をしたいのだが、
あまり話しすぎると色々と不味いので特徴だけ伝える。

自分のやっている研究は

  • セグメンテーションフリー
    (対象物の切り出しを必要としない)
  • ポジションフリー
    (画像中のどこからジェスチャを始めて認識することが出来る)
  • オクルージョンロバスト
    (物体がジェスチャ中の1/4程度が隠れても認識可能で、代表的な手法は2~3F隠れると認識不可能)
  • 複数のジェスチャを同時に認識できる
    (代表的な方法では1つしか認識ができない)
  • 画像情報のみから行える
    (赤外線センサ、複数のカメラを用いることなくWebカメラなどの安価な機器ひとつで認識可能なため、単価が安くなる)
  • 複雑なジェスチャを認識することができる
  • カメラがゆっくり移動する程度なら認識可能
  • 背景が複雑でも認識可能
    (もちろん外でも使える)
  • ジェスチャが多少変形しても認識可能

他にもあるがざっとこんなところか。
従来のジェスチャ認識の問題をかなりクリアしている。
(もちろん、いいことばかりではなく、どのようなジェスチャにも使える銀の弾丸では無いのだが)

最後に



もちろん開発されたばかりの手法なので事前研究もされておらず非常に初歩から研究を行っており、手法の説明も行う必要があるのでかなり大変です。
論文を投稿すると、こんな簡単にこんな複雑なことが出来るはずが無い!、とばかりに査読コメントを喰らったりしますが。
しかし、非常に先進的な研究でありやっているこっちとしてはやりがいを感じますね。

以上、自分の研究はこんな感じになります。
最後まで呼んで頂きありがとうございました。