バイナリー入力による動的形状¶
はじめに¶
このガイドでは、バイナリー入力機能を使用してデータをバイナリー形式で送信する方法を説明します。JPEG または PNG 画像だけをロードし、データの前処理を行わずに推論を実行できます。
バイナリーエンコードされたデータに対して推論を実行するには、モデルが NHWC レイアウトを受け入れることを確認してください。要求を準備するときは、データがバイナリー形式であることをモデルサーバーに知らせる必要があります。
バイナリー入力機能について詳しくは、こちらをご覧ください。
ステップ¶
事前トレーニング済みモデルをダウンロード¶
モデルファイルをダウンロードして、models
ディレクトリーに保存します。
mkdir -p models/resnet/1
curl https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.1/models_bin/2/resnet50-binary-0001/FP32-INT1/resnet50-binary-0001.bin https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.1/models_bin/2/resnet50-binary-0001/FP32-INT1/resnet50-binary-0001.xml -o models/resnet/1/resnet50-binary-0001.bin -o models/resnet/1/resnet50-binary-0001.xml
最新モデルのサーバーイメージを Docker Hub から取得¶
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 resnet --model_path /models/resnet --layout NHWC:NCHW --port 9000
ovmsclient パッケージをダウンロード¶
pip3 install ovmsclient
サンプル画像とラベルマッピングをダウンロード¶
wget https://raw.githubusercontent.com/openvinotoolkit/model_server/releases/2024/0/demos/common/static/images/zebra.jpeg
wget https://raw.githubusercontent.com/openvinotoolkit/model_server/releases/2024/0/demos/common/python/classes.py
推論の実行¶
echo '
import numpy as np
from classes import imagenet_classes
from ovmsclient import make_grpc_client
client = make_grpc_client("localhost:9000")
with open("zebra.jpeg", "rb") as f:
img = f.read()
output = client.predict(inputs={ "0": img}, model_name= "resnet")
result_index = np.argmax(output[0])
print(imagenet_classes[result_index])' >> predict.py
python3 predict.py
zebra