バイナリー入力による動的形状

はじめに

このガイドでは、バイナリー入力機能を使用してデータをバイナリー形式で送信する方法を説明します。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