ジェスチャー認識Gesture Recognition

手や体の動きをあらかじめ決めた意味に読み替えること

ポイント
  • ジェスチャー認識は点の位置とその動きをあらかじめ決めた意味ひとつに読み替える段階です。点を打つ作業のあとに来ます。
  • 読み取れるのはリストに登録しておいた動作だけです。リストにない手振りは無視されるか、いちばん似たものと誤って読まれます。
  • 止まった形と動いている動作は扱い方が違います。前者は一場面で、後者は複数の場面をまとめて判断します。
  • いちばん難しいところは判定ではなく、どこからどこまでがひとつの動作かを区切ることです。
  • 通り過ぎる手に命令が実行されないよう、少し保つこと、確信の基準線、取り消し動作のような仕組みを置きます。
目次

1たとえで理解する

競技場の審判の笛は音そのものはひとつなのに、いろいろなことを伝えます。短く一回、短く二回、長く一回がそれぞれ違う意味としてあらかじめ決められているからです。ピッという音ひとつには意味がなく、長さと回数が意味を作ります。

決めておかない組み合わせは何も起こしません。観客席で誰かが口笛を吹いても試合は止まりませんし、審判がうっかり短く半分くらい吹いて止めた音も合図としては扱われません。リストにあるものだけが合図で、残りは雑音です。

だから音と音の間を区切って読み取ることが大事になります。短く二回がひとつの合図なのか、短く一回の合図が続けて二回出たのかは、間の間隔で分かれます。ジェスチャー認識がしているのはこの読み取りです。

2くわしく

位置から意味へ渡る段階です

前の段階は数字しか出しません。指の関節がどこにあるか、腕がどれくらい開いているかといった値です。この値だけでは何も起こりません。ジェスチャー認識はその数字の束を受け取って「次へ」や「停止」のような単語ひとつに変えます。

変える方法は大きく二つあります。ひとつは人が規則を書いておく方式です。人差し指の先だけ他の指より上にあり、残りは折れていれば指差し、といった具合です。作りやすくなぜそう判定したかも説明しやすいですが、手の形が少し違うだけでずれてしまいます。

もうひとつは例を集めて学ばせる方式です。人々が同じ手振りをそれぞれ違うやり方でする様子を数千回集めて見せると、規則として書きにくい違いにも耐えられます。代わりになぜそう判定したかを説明するのが難しく、新しい動作を加えるには資料をまた集める必要があります。

止まった形と動いている動作は違います

止まった形は一場面だけ見れば判定が出ます。指が何本開いているか、手のひらがどちらを向いているかのようにその瞬間の配置だけで決まるものです。じゃんけんや親指を立てる動作がここに入ります。計算が軽く誤りも少ないです。

動いている動作は事情が違います。手を左右に振る動作と、たまたま手が通り過ぎるのは一場面だけ見れば同じに見えます。複数の場面をまとめて軌跡の方向、速さ、繰り返しの有無を見て初めて区別できます。画面を送る手振り、円を描く手振りがここに入ります。

二種類を混ぜて使う道具も多くあります。止まった形で機能をオンにし、そのあと動きで値を調節するやり方です。手の形を作ったあと左右に動かして音量を変える機能がその構造です。

どこからどこまでがひとつの動作でしょうか

実際にいちばん厄介な問題は判定ではなく区切りです。カメラは休まず場面を送り続けますが、その流れの中で**動作の始まりと終わりを自分で見つけ出さなければなりません。**人は手振りとの間に意味のない動きをたくさん混ぜ込むからです。

よくある解決法は開始の合図を決めておくことです。手を上げた状態を開始とみなしたり、特定の手の形が現れたあとから数え始めたりします。笛の合図の前後に置く間隔と同じ役割です。

もうひとつの解決法は常に重ねて見ることです。直近の数秒分の場面を常に持ちながら、その中に登録された動作が入っているか繰り返し確認します。開始の合図がなくても済みますが、同じ動作が続けて何度も認識されないよう一度捉えたあと少し休む時間を置く必要があります。

誤って開かないよう防ぎます

手振りで操作する機能でいちばん厄介な誤りは、聞き取れないほうではなくしていない命令が実行されてしまうほうです。物を取ろうと伸ばした手で画面が切り替わってしまうと、また元に戻さなければなりません。

そこで仕組みを何重にも置きます。確信の値が基準線を超えたときだけ認めて、同じ判定が数場面以上続いたときだけ命令として出し、一度実行したあとはしばらく新しい命令を受け付けません。元に戻す動作を別に用意しておくこともあります。

基準を絞ると誤作動は減りますが反応が鈍くなり、何度もやり直す煩わしさが生まれます。この釣り合いは用途によって変わります。料理中に手が濡れているときに画面を送る機能なら少し緩めに、決済を確定する動作ならとても厳しめに設定します。

3もう少し正確に

ジェスチャー認識は分類問題として扱われることが多いです。決まったいくつかの名前の中からひとつを選び、名前ごとに確信の値を一緒に出します。動きを扱うときは直近の複数場面の点の座標をひとまとめにして入れ、順序まで一緒に見る構造を使います。リストにない動作のために「該当なし」という名前をもうひとつ用意して学習させることが、誤作動を減らすうえで大きな助けになります。

手振りの意味は文化や状況によって変わるという点も重要です。ある地域でよく使われる手振りが他の地域では失礼な表示になることもあるので、リストを組むときは使う人々の背景も一緒に見ておく必要があります。手を自由に使いにくい人もいるので、手振り以外の操作方法も一緒に用意しておくことが必要です。

たとえがずれる点もあります。笛は吹く人が合図を知ってわざと吹きますが、カメラの前の人は命令を出すつもりなく、ただ動いている時間のほうがずっと長いです。合図と雑音の比率からして違います。また笛の音は鳴ったか鳴らなかったかがはっきりしていますが、手振りは出たか出ていないかがあいまいです。同じ手振りでも人によって大きさと速さが違うので、無視するか認めるかを毎瞬間確率として天秤にかける必要があります。

4やってみる

5よくある誤解

  • ハンドトラッキングができればジェスチャー認識もできると思われがちですが、実際には点を打つ作業とその点の動きを意味として読み取る作業は別の段階です。

  • どんな手振りでも聞き取ってくれると考えられがちですが、実際にはリストに登録された動作だけを認識し、残りは無視するかいちばん似たものと誤って読みます。

  • 認識がうまくいかないのはカメラのせいだと信じられがちですが、実際には動作の始まりと終わりを区切る問題や、誤作動を防ぐ基準線の設定のほうが大きな原因であることが多いです。

7ひとこと要約

つまりジェスチャー認識は点が描く軌跡を登録しておいたリストと照らし合わせて命令ひとつに変える作業で、難しさは動作を区切って読み取るところにあります。

誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02