分類 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 フレームの処理 (フレームの読み取りから結果の表示まで) に必要な平均時間。
次の各パイプライン・ステージのレイテンシー:
デコード — 入力データをキャプチャー。
前処理 — 推論のためのデータの準備。
推論 — 入力データ (画像) を推論して結果を取得。
後処理 — 出力用の推論結果を準備。
レンダリング — 出力画像を生成。
これらのメトリックを使用して、アプリケーション・レベルのパフォーマンスを測定できます。