Python* モデル API パッケージ

モデル API パッケージは、特定のタスクとモデル・アーキテクチャーのラッパークラスのセットであり、データの前処理と後処理、および日常的な手順 (モデルの読み込み、非同期実行など) を簡素化します。アプリケーションはモデルクラスに入力データを供給し、モデルは後処理された出力データを使いやすい形式で返します。

パッケージ構造

モデル API は 3 つのライブラリーで構成されます。

  • アダプターは、モデル API ラッパーをさまざまなエグゼキューターで使用できるようにする共通インターフェイスを実装します。モデル API アダプターセクションを参照

  • モデルは Open Model Zoo のラッパーを実装します。モデル API ラッパーセクションを参照

  • パイプラインはモデル推論のパイプラインを実装し、同期/非同期実行を管理します。モデル API パイプラインセクションを参照

必要条件

パッケージに必要なもの

  • OpenVINO でサポートされている Python バージョンの 1 つ (詳細については、OpenVINO のドキュメントを参照してください)

  • OpenVINO™ ツールキット

モデル API パッケージをソースからビルドする場合、OpenVINO™ ツールキットをインストールする必要があります。オプションを参照してください。

インテル® ディストリビューションの OpenVINO™ ツールキットのインストール・パッケージを使用するか、ビルド手順を使用して OpenVINO GitHub リポジトリーで入手可能なオープンソース・バージョンをビルドします。

また、次のコマンドで OpenVINO Python* パッケージをインストールすることもできます。

pip install openvino

Python* モデル API パッケージのインストール

次のコマンドでモデル API をソースからインストールします。

pip install <omz_dir>/demos/common/python

あるいは、ホイールを使用してパッケージを生成することもできます。次の操作を行います。

  1. ホイールをビルドします。

python <omz_dir>/demos/common/python/setup.py bdist_wheel

ホイールが dist フォルダーに生成されます。命名の例: openmodelzoo_modelapi-0.0.0-py3-none-any.whl

  1. --force-reinstall キーを使用して、クリーンな環境にパッケージをインストールします。

pip install openmodelzoo_modelapi-0.0.0-py3-none-any.whl --force-reinstall

パッケージがインストールされていることを確認するには、次のコマンドを使用します。

python -c "from model_zoo import model_api"

モデル API ラッパー

モデル API パッケージは、“タスクタイプ” ごとに標準化された前処理/後処理機能を実装し、アプリケーション内で統一された方法でさまざまなモデルを使用できるモデル固有のロジックをカプセル化するモデルラッパーを提供します。

次のタスクはラッパーを使用することで解決できます。

タスクタイプ

モデル API ラッパー

背景マット

  • VideoBackgroundMatting
  • ImageMattingWithBackground
  • PortraitBackgroundMatting

分類

  • Classification

人間の姿勢推定

  • HpeAssociativeEmbedding
  • OpenPose

インスタンス・セグメント化モデル:

  • MaskRCNNModel
  • YolactModel

単眼深度推定

  • MonoDepthModel

固有表現の認識

  • BertNamedEntityRecognition

物体検出

  • CenterNet
  • DETR
  • CTPN
  • FaceBoxes
  • NanoDet
  • NanoDetPlus
  • RetinaFace
  • RetinaFacePyTorch
  • SSD
  • UltraLightweightFaceDetection
  • YOLO
  • YoloV3ONNX
  • YoloV4
  • YOLOF
  • YOLOX

質問への回答

  • BertQuestionAnswering

顕著な物体の検出

  • SalientObjectDetectionModel

セマンティックのセグメント化:

  • SegmentationModel

モデル API アダプター

モデル API ラッパーは実行プログラムに依存しません。つまり、特定のモデル推論やモデル読み込みを実装せず、アダプタークラスに共通のインターフェイス・メソッドをそれぞれ実装した実行プログラムで使用できます。

現在、OpenvinoAdapterOVMSAdapter がサポートされています。

OpenVINO アダプター

OpenvinoAdapter OpenVINO™ ツールキット API を隠匿し、中間表現 (IR) 形式で表現されたモデルを使用してモデル API ラッパーを起動できるようにします。xml モデルファイルまたは onnx モデルファイルへのパスを受け入れます。

OpenVINO モデル・サーバー・アダプター

OVMSAdapter OpenVINO モデルサーバー Python クライアント API を隠匿し、OVMS によって提供されるモデルを使用してモデル API ラッパーを起動できるようにします。

OVMS を使用したデモの実行については、OVMSAdapter を参照してください。

OpenVINO モデルサーバーのアダプターを使用するには、追加モジュールを含むパッケージをインストールする必要があります。

pip install <omz_dir>/demos/common/python[ovms]

モデル API パイプライン

モデル API パイプラインは、入力データおよびモデル結果を管理するアクセスに関する高レベルのラッパーを表現します。モデル推論のデータの送信、推論ステータスの検証、結果の準備ができているかどうかの確認、および結果へのアクセスを行います。

単一モデルの非同期実行を処理する AsyncPipeline が利用できます。

すぐに使えるモデル API ソリューション

カスタム・アプリケーションにモデル API ラッパーを適用するには、提供されているモデル API の一般的なシナリオの例を学習してください。

この例では、入力画像 "sample.png" の境界ボックスを予測するため SSD アーキテクチャーが使用されています。モデルの実行は OpenvinoAdapter によって生成されるため、モデルの xml ファイルへのパスを送信します。

SSD モデル・ラッパー・インスタンスが作成されると、モデルによる予測が 1 行で取得されます。ssd_model(input_data) - ラッパーは、前処理メソッド、OpenVINO™ ツールキット側での同期推論、後処理メソッドを実行します。

import cv2
# import model wrapper class
from model_zoo.model_api.models import SSD
# import inference adapter and helper for runtime setup
from model_zoo.model_api.adapters import OpenvinoAdapter, create_core


# read input image using opencv
input_data = cv2.imread("sample.png")

# define the path to efficientdet-d0-tf model in IR format
model_path = "public/efficientdet-d0-tf/FP32/efficientdet-d0-tf.xml"

# create adapter for OpenVINO™ runtime, pass the model path
model_adapter = OpenvinoAdapter(create_core(), model_path, device="CPU")

# create model API wrapper for SSD architecture
# preload=True loads the model on CPU inside the adapter
ssd_model = SSD(model_adapter, preload=True)

# apply input preprocessing, sync inference, model output postprocessing
results = ssd_model(input_data)

複雑なシナリオを試すには、非同期推論が適用される Open Model Zoo Python* デモを参照してください。