マルチチャネル物体検出 Yolov3 C++ デモ

このデモは、YOLO v3 物体検出ネットワーク用のマルチチャネル推論パイプラインを提供します。

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

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

  • 全チャネルの検出物体を単一画面上で可視化

どのように動作するか

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

注: デフォルトでは、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_object_detection_demo_yolov3/cpp/models.lst ファイルにあります。このファイルは、モデル・ダウンローダーおよびコンバーターのパラメーターとして使用され、モデルをダウンロードし、必要に応じて OpenVINO IR 形式 (*.xml + *.bin) に変換できます。OpenVINO の記事を参照して、YOLO V3 と tiny YOLO V3 を IR モデルに変換し、変換された IR モデルでデモを実行する方法を確認することもできます。

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

omz_downloader --list models.lst

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

omz_converter --list models.lst

サポートされるモデル

  • person-vehicle-bike-detection-crossroad-yolov3-1020

  • yolo-v3-tf

  • yolo-v3-tiny-tf

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

実行中

-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.
                                    [-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.

1 台のカメラを使用して CPU 上でデモを実行するには、次のコマンドを使用します。

./multi_channel_object_detection_demo_yolov3 -m <path_to_model>/model.xml -d CPU -i 0

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

入力ビデオソース

入力ソースの一般パラメーターは -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 オプションで詳細な統計の出力を有効にすることもできます。これらのメトリックを使用して、アプリケーション・レベルのパフォーマンスを測定できます。