ジェスチャー認識タスクガイド

MediaPipe ジェスチャー認識タスクを使用すると、手のジェスチャーをリアルタイムに認識できます。 認識された手の動きの結果と、そのデバイスのランドマークが 検出されます。このタスクを使用すると、 そのジェスチャーに対応するアプリ機能を呼び出すことができます。

このタスクは、機械学習(ML)モデルを使用した画像データに対して動作し、 静的データでも連続ストリームでも構いませんタスクは手のランドマークを 画像座標、世界座標の手のランドマーク、利き手 複数の手のジェスチャー カテゴリがあります。

<ph type="x-smartling-placeholder"></ph> お試しください。

使ってみる

以下の実装ガイドのいずれかに沿って、このタスクの使用を開始する ターゲット プラットフォームです。これらのプラットフォーム固有のガイドでは、基本的な 推奨モデルを使用してこのタスクを実装し、コード例を提供します。 推奨される構成オプションは次のとおりです。

で確認できます。

タスクの詳細

このセクションでは、機能、入力、出力、構成について説明します。 オプションを選択できます。

機能

  • 入力画像処理 - 画像の回転、サイズ変更、 色空間変換などがあります
  • スコアしきい値 - 予測スコアに基づいて結果をフィルタします。
  • ラベルの許可リストと拒否リスト - ジェスチャーのカテゴリを指定します。 モデルに与えられます。
タスクの入力 タスク出力
ジェスチャー認識ツールは、次のいずれかのデータ型の入力を受け入れます。
<ph type="x-smartling-placeholder">
    </ph>
  • 静止画像
  • デコードされた動画フレーム
  • ライブ動画フィード
ジェスチャー認識ツールは以下の結果を出力します。
<ph type="x-smartling-placeholder">
    </ph>
  • 手のジェスチャーのカテゴリ
  • 検出された手の利き手
  • 検出された手のランドマーク(画像座標)
  • 検出された手のランドマーク(世界座標)

構成オプション

このタスクには、次の構成オプションがあります。

オプション名 説明 値の範囲 デフォルト値
running_mode タスクの実行モードを設定します。3 つの モード:

IMAGE: 単一画像入力のモード。

VIDEO: 動画のデコードされたフレームのモード。

LIVE_STREAM: 入力のライブ配信のモード カメラからのデータなどです。このモードでは、resultListener は 結果を受け取るリスナーを設定するために呼び出されます。 使用できます。
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
num_hands 次の手で検出できる手の最大数は、 GestureRecognizer Any integer > 0 1
min_hand_detection_confidence ハンド検出の最小信頼スコアは、 成功したと考えられています。 0.0 - 1.0 0.5
min_hand_presence_confidence 手の存在スコアの最小信頼スコア モデルです。ジェスチャー認識ツールの動画モードとライブ配信モードでは、 手のランドマーク モデルによる手の存在の信頼スコアが以下の場合 このしきい値を超えると、手のひら検出モデルがトリガーされます。それ以外の場合: 軽量のハンド トラッキング アルゴリズムを使用して、 ランドマーク検出に利用します。 0.0 - 1.0 0.5
min_tracking_confidence ハンド トラッキングの最小信頼スコア 成功です。グラフ内の手間の境界ボックスの IoU しきい値です。 現在のフレームと最後のフレームが表示されます。動画モードとストリーム モードでは、 ジェスチャー認識機能(トラッキングが失敗した場合、ジェスチャー認識ツールが手をかざす) できます。それ以外の場合、手の検出はスキップされます。 0.0 - 1.0 0.5
canned_gestures_classifier_options あらかじめ用意されたジェスチャー分類器の動作を設定するためのオプション。返信定型文は["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"]
です
  • Display Name locale: TFLite Model Metadata で指定された表示名に使用する言語 / 地域(存在する場合)。
  • 最大結果数: 返される上位スコアの分類結果の最大数。<0 の場合、利用可能な結果がすべて返されます。
  • スコアしきい値: 下回った結果が拒否されるスコア。0 に設定すると、利用可能な結果がすべて返されます。
  • カテゴリの許可リスト: カテゴリ名の許可リスト。空でない場合、このセットにカテゴリがない分類結果は除外されます。拒否リストとは相互に排他的。
  • カテゴリの拒否リスト: カテゴリ名の拒否リスト。空でない場合、このセット内にカテゴリがある分類結果は除外されます。許可リストとは相互に排他的。
    • 表示名の言語 / 地域: any string
    • 最大結果数: any integer
    • スコアしきい値: 0.0-1.0
    • カテゴリの許可リスト: vector of strings
    • カテゴリの拒否リスト: vector of strings
    • 表示名の言語 / 地域: "en"
    • 最大結果数: -1
    • スコアしきい値: 0
    • カテゴリの許可リスト: 空
    • カテゴリの拒否リスト: 空
    custom_gestures_classifier_options カスタム ジェスチャー分類器の動作を設定するオプション。
  • Display Name locale: TFLite Model Metadata で指定された表示名に使用する言語 / 地域(存在する場合)。
  • 最大結果数: 返される上位スコアの分類結果の最大数。<0 の場合、利用可能な結果がすべて返されます。
  • スコアしきい値: 下回った結果が拒否されるスコア。0 に設定すると、利用可能な結果がすべて返されます。
  • カテゴリの許可リスト: カテゴリ名の許可リスト。空でない場合、このセットにカテゴリがない分類結果は除外されます。拒否リストとは相互に排他的。
  • カテゴリの拒否リスト: カテゴリ名の拒否リスト。空でない場合、このセット内にカテゴリがある分類結果は除外されます。許可リストとは相互に排他的。
    • 表示名の言語 / 地域: any string
    • 最大結果数: any integer
    • スコアしきい値: 0.0-1.0
    • カテゴリの許可リスト: vector of strings
    • カテゴリの拒否リスト: vector of strings
    • 表示名の言語 / 地域: "en"
    • 最大結果数: -1
    • スコアしきい値: 0
    • カテゴリの許可リスト: 空
    • カテゴリの拒否リスト: 空
    result_callback 分類結果を受け取るように結果リスナーを設定します。 ライブ ストリーム モードの場合は非同期で行われます。 実行モードが LIVE_STREAM に設定されている場合にのみ使用できます ResultListener なし なし

    モデル

    ジェスチャー 認識ツールは、事前にパッケージ化された 2 つのモデルバンドルと 1 つのモデルバンドルを使用します。 手のランドマーク モデルバンドルとジェスチャー分類モデルのバンドルです。「 ランドマーク モデルは、手の存在と手のジオメトリを検出し、ジェスチャー モデルによって モデルは、手の幾何学に基づいてジェスチャーを認識します。

    <ph type="x-smartling-placeholder">
    モデル名 入力シェイプ 量子化タイプ モデルカード バージョン
    <ph type="x-smartling-placeholder"></ph> HandGestureClassifier 192 x 192、224 x 224 浮動小数点数 16 <ph type="x-smartling-placeholder"></ph> 情報 <ph type="x-smartling-placeholder"></ph> 最新

    このタスクでは、Model Maker を使用したモデルバンドルの変更もサポートしています。 Model Maker を使用してこのタスクのモデルをカスタマイズする方法について詳しくは、 ジェスチャー認識ツールのモデルをカスタマイズするをご覧ください。

    手のランドマーク モデルのバンドル

    手のランドマーク モデル バンドルが 21 個のハンドナックルのキーポイントの位置を検出する 座標を返します。このモデルは、 約 3 万点の画像と、レンダリングされた合成の手 さまざまな背景の上に重ねて適用されます。以下の 21 のランドマークの定義を参照してください。

    手のランドマーク検出モデルバンドルには、手のひら検出モデルと 手のランドマーク検出モデルを使用します。手のひら検出モデルでは、手のひらの 手のランドマーク検出モデルは、入力画像全体からユーザーの 手のひら検出モデルで定義された、切り抜かれた手の画像上のランドマーク。

    動画モードやライブでは、手のひら検出モデルのほうがはるかに時間がかかる ストリーム モード。ジェスチャー認識機能は検出された手によって定義された境界ボックスを使用します。 エンコーダ / デコーダをモデルに使用して、 クリックします。これにより、ジェスチャー認識ツールが手のひら検出モデルをトリガーする時間が短縮されます。 手のランドマーク モデルが、必要とするものを十分に識別できなくなった場合のみ 手のひら検出の失敗、手のひら検出モデルは 手を再ローカライズするために呼び出されます。

    ジェスチャー分類モデルバンドル

    ジェスチャー分類モデルバンドルは、次の一般的な手のジェスチャーを認識できます。

    0 - Unrecognized gesture, label: Unknown
    1 - Closed fist, label: Closed_Fist
    2 - Open palm, label: Open_Palm
    3 - Pointing up, label: Pointing_Up
    4 - Thumbs down, label: Thumb_Down
    5 - Thumbs up, label: Thumb_Up
    6 - Victory, label: Victory
    7 - Love, label: ILoveYou
    

    モデルが手を検出したものの、ジェスチャーが認識されない場合、そのジェスチャーは、 「None」という結果が返されます。手が検出されない場合、 ジェスチャー認識ツールが空を返します。

    ジェスチャー分類モデルのバンドルには、2 ステップのニューラル ネットワーク パイプラインが含まれています。 ジェスチャー エンベディング モデルの後にジェスチャー分類モデルが続きます。 詳しくは、ジェスチャー分類モデルカードをご覧ください。

    ジェスチャー エンベディング モデルは、画像の特徴を特徴ベクトルにエンコードします。 分類モデルは、特徴を受け取り、 ベクトルを入力として代用します。提供されているジェスチャー分類モデルバンドルには、 7 つの一般的な手のジェスチャーを検出する、定型のジェスチャー分類器 ご覧ください。トレーニングによってモデルバンドルを拡張し、より多くのジェスチャーを認識させることが可能 独自のカスタム操作分類器を作成できます詳しくは以下をご覧ください [カスタムモデル] セクション。

    定型のジェスチャー分類器とカスタム ジェスチャー分類器の両方を備えたジェスチャー認識ツール 両方の分類器が同じジェスチャーを認識する場合、カスタム ジェスチャーを優先します。 できます。1 つのジェスチャー分類器のみがジェスチャーを認識する場合、 ジェスチャー認識ツールは、認識されたジェスチャーを直接出力します。

    タスク ベンチマーク

    上記に基づくパイプライン全体のタスク ベンチマークは次のとおりです。 事前トレーニング済みモデルを活用しますレイテンシの結果は、 CPU / GPU

    モデル名 CPU レイテンシ GPU レイテンシ
    GestureRecognizer 16.76 ミリ秒 20.87 ミリ秒

    カスタムモデル

    このコースで提供されているモデルの機能を改善または変更する場合は、 タスクでは、Model Maker を使用して既存のモデルを変更できます。使用するカスタムモデル MediaPipe では、.task 形式(モデルバンドル ファイル)にする必要があります。マイページ は、Model Maker を使用して、このタスク用に提供されたモデルを変更することを検討すべき 確認しましょう。

    このタスクに合わせてモデルをカスタマイズする方法の詳細については、以下をご覧ください。 ジェスチャー認識ツール用にモデルをカスタマイズする