1 人の人間の姿勢推定デモ (トップダウン・パイプライン)¶
このデモでは、ビデオまたは画像上の人間の姿勢推定のためのトップダウン・パイプラインを紹介します。タスクは、フレーム上のすべての人物の bbox を予測し、検出されたすべての人物のポーズを予測します。ポーズには、ears、eyes、nose、shoulders、elbows、wrists、hips、knees、ankles (耳、目、鼻、肩、肘、手首、腰、膝、足首) など、最大 17 個のキーポイントを含めることができます。
どのように動作するか¶
起動時に、アプリケーションはコマンドライン・パラメーターを読み取り、検出人物モデルと単一の人間の姿勢推定モデルを読み込みます。OpenCV VideoCapture からフレームを取得すると、デモはこのフレームに対してトップダウンのパイプラインを実行し、結果を表示します。
注: デフォルトでは、Open Model Zoo のデモは BGR チャネル順序での入力を期待します。RGB 順序で動作するようにモデルをトレーニングした場合は、サンプルまたはデモ・アプリケーションでデフォルトのチャネル順序を手動で再配置するか、
--reverse_input_channels
引数を指定したモデル・オプティマイザー・ツールを使用してモデルを再変換する必要があります。引数の詳細については、[前処理計算の埋め込み](@ref openvino_docs_MO_DG_Additional_Optimization_Use_Cases) の入力チャネルを反転するセクションを参照してください。
実行の準備¶
デモの入力画像またはビデオファイルについては、Open Model Zoo デモの概要のデモに使用できるメディアファイルのセクションを参照してください。デモでサポートされるモデルリストは、<omz_dir>/demos/single_human_pose_estimation_demo/python/models.lst
ファイルにあります。このファイルは、モデル・ダウンローダーおよびコンバーターのパラメーターとして使用され、モデルをダウンロードし、必要に応じて OpenVINO IR 形式 (*.xml + *.bin) に変換できます。
モデル・ダウンローダーの使用例:
omz_downloader --list models.lst
モデル・コンバーターの使用例:
omz_converter --list models.lst
サポートされるモデル¶
pedestrian-and-vehicle-detector-adas-0001
pedestrian-detection-adas-0002
person-detection-retail-0013
person-vehicle-bike-detection-crossroad-0078
person-vehicle-bike-detection-crossroad-1016
ssd_mobilenet_v1_coco
ssd_mobilenet_v1_fpn_coco
ssdlite_mobilenet_v2
single-human-pose-estimation-0001
注: 各種デバイス向けのモデル推論サポートの詳細については、インテルの事前トレーニング・モデルのデバイスサポートとパブリックの事前トレーニング・モデルのデバイスサポートの表を参照してください。
実行¶
-h
オプションを指定してアプリケーションを実行すると、使用方法が表示されます。
usage: single_human_pose_estimation_demo.py [-h] -m_od MODEL_OD -m_hpe MODEL_HPE
-i INPUT [--loop] [-o OUTPUT]
[-limit OUTPUT_LIMIT] [-d DEVICE]
[--person_label PERSON_LABEL]
[--no_show]
[-u UTILIZATION_MONITORS]
optional arguments:
-h, --help Show this help message and exit.
-m_od MODEL_OD, --model_od MODEL_OD
Required. Path to model of object detector in .xml format.
-m_hpe MODEL_HPE, --model_hpe MODEL_HPE
Required. Path to model of human pose estimator in .xml format.
-i INPUT, --input INPUT
Required. An input to process. The input must be a single image,
a folder of images, video file or camera id.
--loop Optional. Enable reading the input in a loop.
-o OUTPUT, --output OUTPUT
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 OUTPUT_LIMIT, --output_limit OUTPUT_LIMIT
Optional. Number of frames to store in output.
If 0 is set, all frames are stored.
-d DEVICE, --device DEVICE
Optional. Specify the target to infer on CPU or GPU.
--person_label PERSON_LABEL
Optional. Label of class person for detector.
--no_show Optional. Do not display output.
-u UTILIZATION_MONITORS, --utilization_monitors UTILIZATION_MONITORS
Optional. List of monitors to show initially.
例えば、CPU で推論を行うには、次のコマンドを実行します。
python3 single_human_pose_estimation_demo.py -d CPU --model_od <path_to_model>/ssdlite_mobilenet_v2.xml --model_hpe <path_to_model>/single-human-pose-estimation-0001.xml --input <path_to_video>/back-passengers.avi
注: 単一の画像を入力として指定すると、デモはすぐに処理してレンダリングし終了します。推論結果を画面上で継続的に視覚化するには、
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 フレームの処理 (フレームの読み取りから結果の表示まで) に必要な平均時間。これらのメトリックの両方を使用して、アプリケーション・レベルのパフォーマンスを測定できます。