TensorFlow モデルを変換してバイナリー入力を受け入れ¶
このガイドでは、TensorFlow モデルを変換し、OpenVINO モデルサーバーでデプロイする方法を説明します。また、入力テンソルをスケーリングし、バイナリー JPEG または PNG 入力データを使用できるように調整する方法についても説明します。
この例では、TensorFlow モデル ResNet が使用されます。
TensorFlow モデルは、model_optimizer ツールを使用して中間表現形式に変換できます。TensorFlow モデルを保存するにはいくつかの形式があります。このガイドでは、SavedModel 形式からの変換について説明します。変換プロセスの詳細については、モデル・オプティマイザーのガイドを参照してください。
バイナリー入力形式には、モデルと ovms 構成に関していくつかの要件があります。詳細については、バイナリー入力のドキュメントを参照してください。
ステップ¶
モデルの準備¶
モデルをダウンロードします。
wget http://download.tensorflow.org/models/official/20181001_resnet/savedmodels/resnet_v2_fp32_savedmodel_NHWC.tar.gz
tar -xvzf resnet_v2_fp32_savedmodel_NHWC.tar.gz
mv resnet_v2_fp32_savedmodel_NHWC/1538687283/ resnet_v2
rmdir resnet_v2_fp32_savedmodel_NHWC/
注: 準備ではディレクトリーの操作は必要ありませんが、ここではディレクトリーを簡略化して記載しています。
model_optimizer ツールを使用して、TensorFlow のモデルを中間表現形式に変換します。
docker run -u $(id -u):$(id -g) -v ${PWD}/resnet_v2/:/resnet openvino/ubuntu20_dev:2022.1.0 mo --saved_model_dir /resnet/ --output_dir /resnet/models/resnet/1/ --input_shape=[1,224,224,3] --mean_values=[123.68,116.78,103.94] --reverse_input_channels
注: 一部のモデルでは、--scale
などの他のパラメーターが必要な場合があります。
--reverse_input_channels
- RGB 順の画像でトレーニングされたモデルに必要です。--mean_values
、--scale
- 入力前処理操作がトポロジーの一部ではなく、前処理が入力データを提供するアプリケーションに依存する場合に指定する必要があります。これらは、変換パラメーター・ガイドで説明されているいくつかの方法で決定できます。この例では、モデルの前処理スクリプトを使用して決定しました。
注: モデルが他の形式で保存されている場合、TensorFlow モデルの中間表現への変換について詳しく知ることができます。
この操作により、${PWD}/resnet_v2/models/resnet/1/
フォルダーにモデルファイルが作成されます。
tree resnet_v2/models/resnet/1
resnet_v2/models/resnet/1
├── saved_model.bin
├── saved_model.mapping
└── saved_model.xml
OVMS のデプロイ¶
最新の openvino model_server イメージを dockerhub から取得します。
docker pull openvino/model_server:latest
次のコマンドを使用して OVMS をデプロイします。
docker run -d -p 9000:9000 -v ${PWD}/resnet_v2/models:/models openvino/model_server:latest --model_path /models/resnet --model_name resnet --port 9000 --layout NHWC
注: このモデルにはデフォルトで N...
レイアウトがありますが、バイナリー入力機能ではモデルが NHWC
または N?HWC
レイアウトである必要があるため、--layout NHWC
オプションを指定します。
クライアントからの推論要求の実行¶
git clone https://github.com/openvinotoolkit/model_server.git
cd model_server/client/python/ovmsclient/samples
virtualenv .venv
. .venv/bin/activate
pip install -r requirements.txt
python grpc_predict_binary_resnet.py --images_dir ../../../../demos/common/static/images --model_name resnet --service_url localhost:9000
Image ../../../../demos/common/static/images/magnetic_compass.jpeg has been classified as magnetic compass
Image ../../../../demos/common/static/images/pelican.jpeg has been classified as pelican
Image ../../../../demos/common/static/images/gorilla.jpeg has been classified as gorilla, Gorilla gorilla
Image ../../../../demos/common/static/images/snail.jpeg has been classified as snail
Image ../../../../demos/common/static/images/zebra.jpeg has been classified as zebra
Image ../../../../demos/common/static/images/arctic-fox.jpeg has been classified as Arctic fox, white fox, Alopex lagopus
Image ../../../../demos/common/static/images/bee.jpeg has been classified as bee
Image ../../../../demos/common/static/images/peacock.jpeg has been classified as peacock
Image ../../../../demos/common/static/images/airliner.jpeg has been classified as airliner
Image ../../../../demos/common/static/images/golden_retriever.jpeg has been classified as golden retriever