動的 IR/ONNX モデルによる動的形状¶
はじめに¶
ここでは、OpenVINO の動的形状機能を活用して OVMS 内で動作する方法について説明します。動的な入力データ形状を受け入れるようにモデルを構成します。2022.1 リリース以降、IR 形式または ONNX 形式のモデルに対してネイティブにモデル形状に動的次元を設定できるようになりました。
shape
パラメーターを範囲または未定義に設定して、動的形状を有効にします。
--shape "(1,3,-1,-1)"
: モデルが高さと幅に任意の値をサポートすると想定されている場合。どの次元も動的にできることに注意してください。ここでの高さと幅は一例です。--shape "(1,3,200:500,200:500)"
: モデルが範囲 200 ~ 500 の高さと幅の値をサポートすると想定される場合。どの次元でも値の範囲をサポートできることに注意してください。ここでの高さと幅は単なる例です。
一部のモデルは動的次元をサポートしていないことに注意してください。形状推論ドキュメントのすべての制限を含む、サポートされているモデルのグラフレイヤーの詳細をご覧ください。
動的形状機能を使用するもう 1 つのオプションは、モデル・オプティマイザーを使用して動的次元を含むモデルをエクスポートすることです。OpenVINO モデルサーバーには動的形状が含まれるため、新たに設定する必要ありません。
動的次元をデモンストレーションするには、以下を利用します。
希望する入力形状による推論を要求するのに使用される Python face_detection.py のクライアントの例。
face_detection_retail_0004 モデルの例。
face_detection.py
スクリプトで face_detection_retail_0004
モデルを使用すると、画像が再ロードされ、希望する幅と高さにサイズ変更されます。次に、サーバーからの出力が処理され、予測された顔の周囲に境界ボックスがある推論結果が表示されます。
ステップ¶
OpenVINO™ モデルサーバー GitHub リポジトリーのクローンを作成し、model_server
ディレクトリーに移動します。
git clone https://github.com/openvinotoolkit/model_server.git
cd model_server
事前トレーニング済みモデルをダウンロード¶
モデルファイルをダウンロードして、models
ディレクトリーに保存します。
mkdir -p models/face_detection/1
curl https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.1/models_bin/3/face-detection-retail-0004/FP32/face-detection-retail-0004.bin https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.1/models_bin/3/face-detection-retail-0004/FP32/face-detection-retail-0004.xml -o models/face_detection/1/face-detection-retail-0004.bin -o models/face_detection/1/face-detection-retail-0004.xml
最新モデルのサーバーイメージをプル¶
OpenVINO™ モデルサーバーの最新バージョンを Docker Hub から取得します。
docker pull openvino/model_server:latest
モデルと動的バッチサイズを使用してモデル・サーバー・コンテナを起動¶
前の手順で取得したイメージでコンテナを起動し、models
ディレクトリーをマウントします。
docker run --rm -d -v $(pwd)/models:/models -p 9000:9000 openvino/model_server:latest --model_name face-detection --model_path /models/face_detection --shape "(1,3,-1,-1)" --port 9000
クライアントの実行¶
cd demos/face_detection/python
virtualenv .venv
. .venv/bin/activate
pip install -r ../../common/python/requirements.txt
mkdir results_500x500
python face_detection.py --grpc_port 9000 --width 500 --height 500 --input_images_dir ../../common/static/images/people --output_dir results_500x500
mkdir results_600x400
python face_detection.py --grpc_port 9000 --width 600 --height 400 --input_images_dir ../../common/static/images/people --output_dir results_600x400
クライアントの実行結果は、--output_dir
によって指定されたディレクトリーに保存されます。