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

はじめに

このガイドでは、バイナリー入力機能を使用してデータをバイナリー形式で送信する方法を説明します。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/3/demos/common/static/images/zebra.jpeg
 
wget https://raw.githubusercontent.com/openvinotoolkit/model_server/releases/2024/3/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