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
あるいは、ホイールを使用してパッケージを生成することもできます。次の操作を行います。
ホイールをビルドします。
python <omz_dir>/demos/common/python/setup.py bdist_wheel
ホイールが dist フォルダーに生成されます。命名の例: openmodelzoo_modelapi-0.0.0-py3-none-any.whl
--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 ラッパー |
---|---|
背景マット |
|
分類 |
|
人間の姿勢推定 |
|
インスタンス・セグメント化モデル: |
|
単眼深度推定 |
|
固有表現の認識 |
|
物体検出 |
|
質問への回答 |
|
顕著な物体の検出 |
|
セマンティックのセグメント化: |
|
モデル API アダプター¶
モデル API ラッパーは実行プログラムに依存しません。つまり、特定のモデル推論やモデル読み込みを実装せず、アダプタークラスに共通のインターフェイス・メソッドをそれぞれ実装した実行プログラムで使用できます。
現在、OpenvinoAdapter
と OVMSAdapter
がサポートされています。
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* デモを参照してください。