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