1.Dockerのインストール
GCPのCentOS 7にはDockerが入ってないので、インストールします。
リポジトリのアップデート確認
yumリポジトリの編集
> [dockerrepo]
> name=Docker Repository
> baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
> enabled=1
> gpgcheck=1
> gpgkey=https://yum.dockerproject.org/gpg
> EOF
Dockerのインストール
Dockerデーモンを起動
念のため、Dockerの動作確認
2.Graphpipeのインストール
公式サイトの手順に則って実施していきます。
Dockerにて起動
> -p 9000:9000 \
> sleepsonthefloor/graphpipe-tf:cpu \
> –model=https://oracle.github.io/graphpipe/models/squeezenet.pb \
> –listen=0.0.0.0:9000
コンテナとの疎通確認
GCP上で起動したポートのファイアウォールを空けた上で、外部からの疎通を確認します。
3.ClientからのGraphpipeの操作
ここでは、別のGCPサーバ(Jupyter Notebook導入済み)から操作してみます。
Client側へのPythonパッケージの追加導入
公式サイトにあるように、コーヒーマグが判別できるかテストしてみます。
公式サイトの画像だと芸が無いので、追加でフリー素材も追加でテスト。
まずは公式サイトの画像(左)
>>> from io import BytesIO
>>> from PIL import Image, ImageOps
>>> import numpy as np
>>> import requests
>>> from graphpipe import remote
>>> data = np.array(Image.open(“/tmp/test_image.png“))
>>> data = data.reshape([1] + list(data.shape))
>>> data = np.rollaxis(data, 3, 1).astype(np.float32) # channels first
>>> print(data.shape)
>>> pred = remote.execute(“http://xxxx.scpepper.tokyo:9000”, data)
>>> print(“Expected 504 (Coffee mug), got: %s”, np.argmax(pred, axis=1))
Expected 504 (Coffee mug), got: %s [504]
次にフリー素材の画像(右)
>>> from PIL import Image, ImageOps
>>> import numpy as np
>>> import requests
>>> from graphpipe import remote
>>> data = np.array(Image.open(“/tmp/test_image_2.png“))
>>> data = data.reshape([1] + list(data.shape))
>>> data = np.rollaxis(data, 3, 1).astype(np.float32) # channels first
>>> print(data.shape)
>>> pred = remote.execute(“http://xxxx.scpepper.tokyo:9000”, data)
>>> print(“Expected 504 (Coffee mug), got: %s”, np.argmax(pred, axis=1))
Expected 504 (Coffee mug), got: %s [504]
正常に動作し、いずれもCoffee Mugと認識されましたね。