ホワイトボード修復 Python* デモ

example

このデモは、人物が重なったホワイトボードのテキストに焦点を当てています。このデモでは、OpenVINO™ ツールキットを使用してビデオ上の人物を検出して非表示にし、ホワイトボード上のすべてのテキストが表示されるようにする方法を示します。

どのように動作するか

デモでは、中間表現 (IR) 形式の次のモデルのを想定しています。

  • インスタンス・セグメント化モデル

  • セマンティック・セグメント化モデル

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

  • ビデオファイルへのパス

  • ウェブカメラのインデックス

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

実行の準備

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

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

omz_downloader --list models.lst

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

omz_converter --list models.lst

サポートされるモデル

  • instance-segmentation-security-0002

  • instance-segmentation-security-0091

  • instance-segmentation-security-0228

  • instance-segmentation-security-1039

  • instance-segmentation-security-1040

  • semantic-segmentation-adas-0001

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

実行

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

usage: whiteboard_inpainting_demo.py [-h] -i INPUT [--loop] [-o OUTPUT]
                                    [-limit OUTPUT_LIMIT]
                                    [-m_i M_INSTANCE_SEGMENTATION]
                                    [-m_s M_SEMANTIC_SEGMENTATION]
                                    [-t THRESHOLD] [--no_show] [-d DEVICE]
                                    [-u UTILIZATION_MONITORS]

Whiteboard inpainting demo

optional arguments:
                                    -h, --help            Show this help message and exit.
                                    -i INPUT, --input INPUT
                                    Required. Path to a video file or a device node of a
                                    webcam.
                                    --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.
                                    -m_i M_INSTANCE_SEGMENTATION, --m_instance_segmentation M_INSTANCE_SEGMENTATION
                                    Required. Path to the instance segmentation model.
                                    -m_s M_SEMANTIC_SEGMENTATION, --m_semantic_segmentation M_SEMANTIC_SEGMENTATION
                                    Required. Path to the semantic segmentation model.
                                    -t THRESHOLD, --threshold THRESHOLD
                                    Optional. Threshold for person instance segmentation model.
                                    --no_show             Optional. Don't show output.
                                    -d DEVICE, --device DEVICE
                                    Optional. Specify a target device to infer on. CPU or
                                    GPU is acceptable. The demo will
                                    look for a suitable plugin for the device specified.
                                    -u UTILIZATION_MONITORS, --utilization_monitors UTILIZATION_MONITORS
                                    Optional. List of monitors to show initially.

コマンド例:

python3 whiteboard_inpainting_demo.py \
    -i <path_to_video>/video.avi \
    -m_i <path_to_model>/instance-segmentation-security-0228.xml

-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 コーデックがインストールされていない場合があります。この場合、OpenVINO ™ インストール・パッケージに付属する、<INSTALL_DIR>/opencv/ffmpeg-download.ps1 にある PowerShell スクリプトを使用して OpenCV FFMPEG バックエンドをダウンロードできます。OpenVINO ™ がシステムで保護されたフォルダーにインストールされている場合 (一般的なケース)、スクリプトは管理者権限で実行する必要があります。あるいは、結果を画像として保存することもできます。

デモの出力

デモでは、元のビデオと処理されたビデオが出力されます。
使用法:

  • i キーを押して、結果のフレームの色を反転します。

  • マウスの左ボタンで、別のウィンドウに表示するフレームの一部を選択します。

  • Esc キーを押してデモを終了します。

デモレポート

  • FPS: ビデオフレーム処理の平均レート (1 秒あたりのフレーム数)。

  • レイテンシー: 1 フレームの処理 (フレームの読み取りから結果の表示まで) に必要な平均時間。これらのメトリックの両方を使用して、アプリケーション・レベルのパフォーマンスを測定できます。