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