G-API ジェスチャー認識デモ#

このデモでは、OpenVINO™ ツールキットを使用してジェスチャー (アメリカ手話 (ASL) ジェスチャーなど) 認識モデルを実行する方法を示します。

どのように動作するか#

デモ・アプリケーションは、中間表現 (IR) 形式のジェスチャー認識モデルを想定しています。

デモ・アプリケーションは入力として次を受け取ります:

  • コマンドライン引数 --input で指定されたビデオファイルまたは Web カメラのデバイスノードへのパス

  • ジェスチャー・クラス名 --class_map を含む JSON 形式のファイルへのパス

デモのワークフローを次に示します:

  1. デモ・アプリケーションはビデオフレームを 1 枚ずつ読み取り、ROI を抽出する人物検出器を実行し、最初の人物の ROI を追跡します。追加プロセスで、一定のフレームレートでフレームのバッチを準備します。

  2. フレームのバッチと抽出された ROI は、ジェスチャーを予測するニューラル・ネットワークに渡されます。

  3. アプリケーションは、次の物体が表示されるグラフィカル・ウィンドウとしてワークの結果を視覚化します:

    • 検出された ROI を含む入力フレーム。

    • 最後に認識されたジェスチャー。

    • パフォーマンス特性。

: デフォルトでは、Open Model Zoo のデモは BGR チャネル順序での入力を期待します。RGB 順序で動作するようにモデルをトレーニングした場合は、サンプルまたはデモ・アプリケーションでデフォルトのチャネル順序を手動で再配置するか、--reverse_input_channels 引数を指定したモデル・オプティマイザー・ツールを使用してモデルを再変換する必要があります。引数の詳細については、[前処理計算の埋め込み](@ref openvino_docs_MO_DG_Additional_Optimization_Use_Cases) の入力チャネルを反転するセクションを参照してください。

実行の準備#

デモの入力画像またはビデオファイルについては、Open Model Zoo デモの概要デモに使用できるメディアファイルのセクションを参照してください。デモでサポートされるモデルリストは、<omz_dir>/demos/gesture_recognition_demo/cpp_gapi/models.lst ファイルにあります。このファイルは、モデル・ダウンローダーおよびコンバーターのパラメーターとして使用され、モデルをダウンロードし、必要に応じて OpenVINO IR 形式 (*.xml + *.bin) に変換できます。

モデル・ダウンローダーの使用例:

omz_downloader --list models.lst

モデル・コンバーターの使用例:

omz_converter --list models.lst

サポートされるモデル#

  • asl-recognition-0004

  • common-sign-language-0001

  • common-sign-language-0002

  • person-detection-asl-0001

: 各種デバイス向けのモデル推論サポートの詳細については、インテルの事前トレーニング・モデルのデバイスサポートパブリックの事前トレーニング・モデルのデバイスサポートの表を参照してください。

実行する#

-h オプションを指定してアプリケーションを実行すると、使用方法が表示されます:

gesture_recognition_demo_gapi [OPTION] 

Options: 
  -h                       Show this help message and exit.
  -M_am_a 
                           Required.Path to an .xml file with a trained gesture recognition model.
  -M_dm_d 
                           Required.Path to an .xml file with a trained person detector model.
  -i 
                           Required.Path to a video file or a device node of a webcam.
  -o 
                           Optional.Name of the output file(s) to save.Frames of odd width or height can be truncated.See https://github.com/opencv/opencv/pull/24086 
  -limit 
                           Optional.Number of frames to store in output. If -1 is set, all frames are stored.
  -c 
                           Required.Path to a file with gesture classes.
  -s 
                           Optional.Path to a directory with video samples of gestures.
  -t 
                           Optional.Threshold for the predicted score of an action.
  -d_d "<device>" 
                           Optional. Target device for Person Detection network (the list of available devices is shown below).
  -d_a "<device>" 
                           Optional. Target device for Gesture Recognition (the list of available devices is shown below).
  -no_show 
                           Optional. Don't show output.
  -u 
                           Optional.List of monitors to show initially.

オプションのリストを空にしてアプリケーションを実行すると、エラーメッセージが表示されます。

例えば、CPU で推論を行うには、次のコマンドを実行します:

./Gesture_recognition_demo_gapi \
    -m_a <path_to_model>/asl-recognition-0004.xml \ 
    -m_d <path_to_model>/person-detection-asl-0001.xml \ 
    -i 0 \ 
    -c <omz_dir>/data/dataset_classes/msasl100.json

実行時制御キー#

デモは人物追跡モードで開始され、アクション認識モードに切り替えるには、適切な検出 ID (各境界ボックスの左上の数字) を持つ [0-9] ボタンを押します。フレームに人物が 1 人しか含まれていない場合は、自動的に選択されます。その後に、[スペース] ボタンを押すと追跡モードに戻ることができます。

クラス名を含むファイルの例は、OMZ ディレクトリー内にあります:

  • MS-ASL-100: <omz_dir>/data/dataset_classes/msasl100.json

  • Jester-27: <omz_dir>/data/dataset_classes/jester27.json

  • Common-Sign-Language-12: <omz_dir>/data/dataset_classes/common_sign_language12.json

: ジェスチャーのビデオサンプルを使用してデモ・アプリケーションを実行するには、ビデオサンプルのあるディレクトリーへの有効なパスを指定して -s キーを指定します。各ビデオサンプルの名前は、<omz_dir>/data/dataset_classes/msasl100.json ファイルの有効なジェスチャー名である必要があります。サンプル間を移動するには、[f] キーと [b] キーを使用して、それぞれ次のビデオサンプルと前のビデオサンプルを繰り返します。

-o オプションを使用すると、処理結果を Motion JPEG AVI ファイル、または別の JPEG または PNG ファイルに保存できます:

  • 処理結果を AVI ファイルに保存するには、avi 拡張子を付けた出力ファイル名を指定します (例: -o output.avi)。

  • 処理結果を画像として保存するには、出力画像ファイルのテンプレート名を拡張子 jpg または png で指定します (例: -o output_%03d.jpg)。実際のファイル名は、実行時に正規表現 %03d をフレーム番号に置き換えることによってテンプレートから構築され、output_000.jpgoutput_001.jpg などになります。カメラなど連続入力ストリームでディスク領域のオーバーランを避けるため、limit オプションを使用して出力ファイルに保存されるデータの量を制限できます。デフォルト値は 1000 です。これを変更するには、-limit N オプションを適用します。ここで、N は保存するフレームの数です。

: Windows* システムには、デフォルトでは Motion JPEG コーデックがインストールされていない場合があります。OpenCV FFMPEG バックエンドは、OpenVINO インストール・パッケージに付属している、<INSTALL_DIR>/opencv/ffmpeg-download.ps1 にある PowerShell スクリプトによってダウンロードできます。管理者権限でスクリプトを実行します。あるいは、結果を画像として保存することもできます。

デモの出力#

このアプリケーションは OpenCV を使用して、ジェスチャー認識結果と現在の推論パフォーマンスを表示します。

関連情報#