ジェスチャー認識 Python* デモ¶
このデモでは、OpenVINO™ ツールキットを使用してジェスチャー (アメリカ手話 (ASL) ジェスチャーなど) 認識モデルを実行する方法を示します。
どのように動作するか¶
デモ・アプリケーションは、中間表現 (IR) 形式のジェスチャー認識モデルを想定しています。
デモ・アプリケーションは入力として次を受け取ります。
コマンドライン引数で指定されたビデオファイルまたは Web カメラのデバイスノードへのパス
--input
ジェスチャー・クラス名を含む JSON 形式のファイルへのパス
--class_map
デモのワークフローは次のとおりです。
デモ・アプリケーションはビデオフレームを 1 枚ずつ読み取り、ROI を抽出する人物検出器を実行し、最初の人物の ROI を追跡します。追加プロセスで、一定のフレームレートでフレームのバッチを準備します。
フレームのバッチと抽出された ROI は、ジェスチャーを予測するニューラル・ネットワークに渡されます。
-
アプリケーションは、次の物体が表示されるグラフィカル・ウィンドウとしてワークの結果を視覚化します。
検出された 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/python/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
オプションを指定してアプリケーションを実行すると、使用方法が表示されます。
usage: gesture_recognition_demo.py [-h] -m_a ACTION_MODEL -m_d DETECTION_MODEL -i INPUT [-o OUTPUT] [-limit OUTPUT_LIMIT] -c CLASS_MAP [-s SAMPLES_DIR] [-t ACTION_THRESHOLD] [-d DEVICE] [--no_show] [-u UTILIZATION_MONITORS]
Options:
-h, --help Show this help message and exit.
-m_a ACTION_MODEL, --action_model ACTION_MODEL
Required. Path to an .xml file with a trained gesture recognition model.
-m_d DETECTION_MODEL, --detection_model DETECTION_MODEL
Required. Path to an .xml file with a trained person detector model.
-i INPUT, --input INPUT
Required. Path to a video file or a device node of a web-camera.
-o OUTPUT, --output OUTPUT
Optional. Name of the output file(s) to save.
-limit OUTPUT_LIMIT, --output_limit OUTPUT_LIMIT
Optional. Number of frames to store in output. If 0 is set, all frames are stored.
-c CLASS_MAP, --class_map CLASS_MAP
Required. Path to a file with gesture classes.
-s SAMPLES_DIR, --samples_dir SAMPLES_DIR
Optional. Path to a directory with video samples of gestures.
-t ACTION_THRESHOLD, --action_threshold ACTION_THRESHOLD
Optional. Threshold for the predicted score of an action.
-d DEVICE, --device DEVICE
Optional. Specify a device to infer on (the list of available devices is shown below). Use '-d HETERO:<comma-separated_devices_list>' format to specify HETERO plugin. Use '-d MULTI:<comma-separated_devices_list>'
format to specify MULTI plugin. Default is CPU
--no_show Optional. Do not visualize inference results.
-u UTILIZATION_MONITORS, --utilization_monitors UTILIZATION_MONITORS
Optional. List of monitors to show initially.
オプションの空のリストを指定してアプリケーションを実行すると、短い使用法メッセージとエラーメッセージが表示されます。
デモを実行するには、IR 形式のジェスチャー認識モデルと人物検出モデル、クラス名のファイル、および入力ビデオへのパスを指定します。
python gesture_recognition_demo.py \
-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] キーを使用して、それぞれ次のビデオサンプルと前のビデオサンプルを繰り返します。
注: 単一の画像を入力として指定すると、デモはすぐに処理してレンダリングし終了します。推論結果を画面上で継続的に視覚化するには、
loop
オプションを適用します。これにより、単一の画像がループで処理されます。
-o
オプションを使用すると、処理結果を Motion JPEG AVI ファイル、または別の JPEG または PNG ファイルに保存できます。
処理結果を AVI ファイルに保存するには、
avi
拡張子を付けた出力ファイル名を指定します (例:-o output.avi
)。-
処理結果を画像として保存するには、出力画像ファイルのテンプレート名を拡張子
jpg
またはpng
で指定します (例:-o output_%03d.jpg
)。実際のファイル名は、実行時に正規表現%03d
をフレーム番号に置き換えることによってテンプレートから構築され、output_000.jpg
、output_001.jpg
などになります。カメラなど連続入力ストリームでディスク領域のオーバーランを避けるため、limit
オプションを使用して出力ファイルに保存されるデータの量を制限できます。デフォルト値は 1000 です。これを変更するには、-limit N
オプションを適用します。ここで、N
は保存するフレームの数です。
注: Windows* システムには、デフォルトでは Motion JPEG コーデックがインストールされていない場合があります。この場合、OpenVINO ™ インストール・パッケージに付属する、
<INSTALL_DIR>/opencv/ffmpeg-download.ps1
にある PowerShell スクリプトを使用して OpenCV FFMPEG バックエンドをダウンロードできます。OpenVINO ™ がシステムで保護されたフォルダーにインストールされている場合 (一般的なケース)、スクリプトは管理者権限で実行する必要があります。あるいは、結果を画像として保存することもできます。
デモの出力¶
このアプリケーションは OpenCV を使用してジェスチャー認識結果を表示します。デモレポート
FPS: ビデオフレーム処理の平均レート (1 秒あたりのフレーム数)。
-
レイテンシー: 1 フレームの処理 (フレームの読み取りから結果の表示まで) に必要な平均時間。これらのメトリックの両方を使用して、アプリケーション・レベルのパフォーマンスを測定できます。