分類 Python* デモ#

このデモでは、Python* モデル API と非同期パイプラインを使用した分類ネットワークの推論を紹介します。

どのように動作するか#

起動時に、アプリケーションはコマンドライン・パラメーターを受け取り、分類モデルを OpenVINO™ ランタイムプラグインにロードします。OpenCV VideoCapture からフレームを取得すると、推論を実行して結果を表示します。

“Esc” または “Q” ボタンでデモを停止できます。その後、平均メトリック値がコンソールに出力されます。

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

モデル API#

このデモでは、Python* モデル API のモデルラッパー、アダプター、パイプラインを利用します。

統一された結果表現を備えたラッパーの汎用インターフェイスにより、1 つのデモで複数の異なる分類モデルのトポロジーがサポートされます。

実行の準備#

デモでサポートされるモデルリストは、<omz_dir>/demos/classification_demo/python/models.lst ファイルにあります。このファイルは、モデル・ダウンローダーおよびコンバーターのパラメーターとして使用され、モデルをダウンロードし、必要に応じて OpenVINO IR 形式 (*.xml + *.bin) に変換できます。

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

omz_downloader --list models.lst

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

omz_converter --list models.lst

サポートされるモデル#

  • convnext-tiny

  • densenet-121-tf

  • dla-34

  • efficientnet-b0

  • efficientnet-b0-pytorch

  • efficientnet-v2-b0

  • efficientnet-v2-s

  • googlenet-v1-tf

  • googlenet-v2-tf

  • googlenet-v3

  • googlenet-v3-pytorch

  • googlenet-v4-tf

  • hbonet-0.25

  • hbonet-1.0

  • inception-resnet-v2-tf

  • levit-128s

  • mixnet-l

  • mobilenet-v1-0.25-128

  • mobilenet-v1-1.0-224-tf

  • mobilenet-v2-1.0-224

  • mobilenet-v2-1.4-224

  • mobilenet-v2-pytorch

  • mobilenet-v3-large-1.0-224-tf

  • mobilenet-v3-small-1.0-224-tf

  • nfnet-f0

  • regnetx-3.2gf

  • repvgg-a0

  • repvgg-b1

  • repvgg-b3

  • resnest-50-pytorch

  • resnet-18-pytorch

  • resnet-34-pytorch

  • resnet-50-pytorch

  • resnet-50-tf

  • resnet18-xnor-binary-onnx-0001

  • resnet50-binary-0001

  • rexnet-v1-x1.0

  • shufflenet-v2-x1.0

  • swin-tiny-patch4-window7-224

  • t2t-vit-14

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

必要なファイル#

分類結果を表示する場合 “-labels” フラグを使用して、クラスとラベルのリストを含む .txt ファイルを指定する必要があります。

および <omz_dir>/data/dataset_classes/imagenet_2012.txt ラベルファイルには、デモでサポートされているすべてのモデルが含まれます。

実行する#

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

usage: classification_demo.py [-h] -m MODEL [--adapter {openvino,ovms}] 
                              -i INPUT [-d DEVICE] 
                              [--labels LABELS] 
                              [-topk {1,2,3,4,5,6,7,8,9,10}] 
                              [--layout LAYOUT] 
                              [-nireq NUM_INFER_REQUESTS] 
                              [-nstreams NUM_STREAMS] 
                              [-nthreads NUM_THREADS] 
                              [--loop] [-o OUTPUT] [-limit OUTPUT_LIMIT] 
                              [--no_show] [--output_resolution OUTPUT_RESOLUTION] 
                              [-u UTILIZATION_MONITORS] 
                              [--reverse_input_channels] 
                              [--mean_values MEAN_VALUES MEAN_VALUES MEAN_VALUES] 
                              [--scale_values SCALE_VALUES SCALE_VALUES SCALE_VALUES] 
                              [-r] 

Options: 
  -h, --help            Show this help message and exit.
  -m MODEL, --model MODEL 
                        Required.Path to an .xml file with a trained model or 
                        address of model inference service if using OVMS adapter.
  --adapter {openvino,ovms} 
                        Optional. Specify the model adapter.
                        Default is openvino.
  -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. 
  -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 

Common model options: 
  --labels LABELS 
                        Optional.Labels mapping file.
  -topk {1,2,3,4,5,6,7,8,9,10} 
                        Optional.Number of top results.                         Default value is 5. Must be from 1 to 10.
  --layout LAYOUT 
                        Optional. Model inputs layouts. Ex.NCHW or 
                        input0:NCHW,input1:NC in case of more than one input.

Inference options: 
  -nireq NUM_INFER_REQUESTS, --num_infer_requests NUM_INFER_REQUESTS 
                        Optional.Number of infer requests 
  -nstreams NUM_STREAMS, --num_streams NUM_STREAMS 
                        Optional. Number of streams to use for inference on the CPU or/and GPU in throughput mode (for HETERO and MULTI device cases use format <device1>:<nstreams1>,<device2>:<nstreams2> or just <nstreams>).
  -nthreads NUM_THREADS, --num_threads NUM_THREADS 
                        Optional. Number of threads to use for inference on CPU (including HETERO cases). 

Input/output options: 
  --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.
  --no_show 
                        Optional.Don't show output.
  --output_resolution OUTPUT_RESOLUTION 
                        Optional.Specify the maximum output window resolution in (width x height) format.Example: 1280x720.Input frame size used by default.
  -u UTILIZATION_MONITORS, --utilization_monitors UTILIZATION_MONITORS 
                        Optional.List of monitors to show initially.

Input transform options: 
  --reverse_input_channels 
                        Optional.Switch the input channels order from BGR to RGB.
  --mean_values MEAN_VALUES MEAN_VALUES MEAN_VALUES 
                        Optional.Normalize input by subtracting the mean values per channel.Example: 255.0 255.0 255.0 
  --scale_values SCALE_VALUES SCALE_VALUES SCALE_VALUES 
                        Optional.Divide input by scale values per channel.Division is applied after mean values subtraction.Example: 255.0 255.0 255.0 

Debug options: 
  -r, --raw_output_message 
                        Optional. Output inference results raw values showing.

オプションのリストを空にしてアプリケーションを実行すると、エラーメッセージが表示されます。

例えば、次のコマンドライン・コマンドでアプリケーションを実行します:

python3 classification_demo.py -m <path_to_classification_model> \ 
    -i <path_to_folder_with_images> \ 
    --labels <path_to_file_with_list_of_labels>

OpenVINO モデルサーバーの実行#

OpenVINO モデルサーバーで提供されるモデルを使用してデモを実行することもできます。OVMS を使用したデモの実行については、OVMSAdapter を参照してください。

コマンド例:

python3 classification_demo.py -m localhost:9000/models/classification \ 
    -i <path_to_folder_with_images> \ 
    --labels <path_to_file_with_list_of_labels> \ 
    --adapter ovms

デモの出力#

このデモでは、OpenCV を使用して、分類結果をテキストで表示された画像を出力します。デモレポート:

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

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

  • 次の各パイプライン・ステージのレイテンシー:

    • デコード — 入力データをキャプチャー。

    • 前処理 — 推論のためのデータの準備。

    • 推論 — 入力データ (画像) を推論して結果を取得。

    • 後処理 — 出力用の推論結果を準備。

    • レンダリング — 出力画像を生成。

これらのメトリックを使用して、アプリケーション・レベルのパフォーマンスを測定できます。

関連情報#