マルチチャネル顔検出 C++ デモ

このデモは、マルチチャネル顔検出向けの推論パイプラインを提供します。デモでは顔検出ネットワークを使用します。

デモの目的は次のとおりです。

  • OpenCV* 経由で最大 16 台のカメラを入力として使用

  • すべてのチャネルで検出された顔を単一の画面上で視覚化

どのように動作するか

起動時に、アプリケーションはコマンドライン・パラメーターを読み取り、指定されたネットワークを読み込みます。顔検出ネットワークが必要です。

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

実行の準備

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

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

omz_downloader --list models.lst

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

omz_converter --list models.lst

サポートされるモデル

  • face-detection-adas-0001

  • face-detection-retail-0004

  • face-detection-retail-0005

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

実行

-h オプションを指定してデモを実行すると、ヘルプメッセージが表示されます。

    [-h]              Print a usage message
                                    -i               A comma separated list of inputs to process. Each input must be a single image, a folder of images or anything that cv::VideoCapture can process.
                                    [-loop]           Enable reading the inputs in a loop.
                                    [-duplicate_num]  Multiply the inputs by the given factor. For example, if only one input is provided, but -duplicate_num is set to 2, the demo will split real input across channels, by interleaving frames between channels.
                                    -m <path>        Path to an .xml file with a trained model.
                                    [-d <device>]     Specify a target device to infer on (the list of available devices is shown below). Default value is CPU. Use "-d HETERO:<comma-separated_devices_list>" format to specify HETERO plugin. Use "-d MULTI:<comma-separated_devices_list>" format to specify MULTI plugin. The application looks for a suitable plugin for the specified device.
                                    [-bs]             Batch size for processing (the number of frames processed per infer request)
                                    [-n_iqs]          Frame queue size for input channels
                                    [-fps_sp]         FPS measurement sampling period between timepoints in msec
                                    [-n_sp]           Number of sampling periods
                                    [-t]              Probability threshold for detections
                                    [-no_show]        Don't show output.
                                    [-show_stats]     Enable statistics report
                                    [-real_input_fps] Disable input frames caching, for maximum throughput pipeline
                                    [-u]              List of monitors to show initially.

CPU 上の 1 台のカメラで事前トレーニングされた顔検出モデルを使用してデモを実行するには、次のコマンドを使用します。

./multi_channel_face_detection_demo \
  -d CPU \
  -i 0 \
  -m <path_to_model>/face-detection-retail-0004.xml

2 つの録画ビデオファイルを使用してデモを実行するには、次のコマンドを使用します。

./multi_channel_face_detection_demo \
  -d CPU \
  -i <path_to_file>/file1,<path_to_file>/file2 \
  -m <path_to_model>/face-detection-retail-0004.xml

ビデオファイルは同時に処理されます。

入力ビデオソース

入力ソースの一般パラメーターは -i です。Web カメラとビデオファイルへのパスをカンマで区切って -i <webcam_id0>,<webcam_id1>,<video_file1>,<video_file2> を指定することで、Web カメラとビデオファイルでデモを同時に実行できます。単一の入力ソース (Web カメラまたはビデオファイル) で複数のチャネルを使用してデモを実行するには、追加のパラメーター duplicate_num を指定します (例: -duplicate_num 4)。4 つのチャネルが表示されます。複数の入力ソースがある場合、-duplicate_num パラメーターでそれぞれを複製します。

以下はデモ入力仕様の例です。

-i <file1>,<file2>

利用可能なすべての Web カメラを表示するには、ls /dev/video* コマンドを実行します。次のような出力が得られます。

user@user-PC:~ $ ls /dev/video*
/dev/video0 /dev/video1 /dev/video2

-i オプションを使用すると、3 つの Web カメラをすべて接続できます。

-i 0,1,2

IP カメラに接続するには、RTSP URI を使用します。

-i rtsp://camera_address_1/,rtsp://camera_address_2/

デモの出力

このデモでは、OpenCV を使用して、境界ボックスとしてレンダリングされた検出を含む結果フレームを表示します。
デモレポート:

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

  • レイテンシー: 1 フレームの処理 (フレームの読み取りから結果の表示まで) に必要な平均時間。

デモの実行中に -show_stats オプションで詳細な統計の出力を有効にすることもできます。これらのメトリックを使用して、アプリケーション・レベルのパフォーマンスを測定できます。