前回の記事で Google Cloud AutoML Vision を利用して、カスタム機械学習モデルを作成する手順をご紹介しました。このカスタム機械学習モデルはWebサービスなどに組み込むために API から利用することができます。そこで今回は、作成したカスタム機械学習モデルを API 経由で使う手順をまとめてみました。
Google Cloud SDK のインストール
API の認証情報を作成するのに Google Cloud SDK が必要になりますので、インストールします。
SDKのインストールの前に、システムに Python 2.7 がインストールされていることを確認します。最近のmacOSやCentOS7であれば、Python2.7がインストールされていると思います。(今回はmacOS10.13のマシンにインストールしました)
Python 2.7.10 ← インストールされている
ローカルPCがWindowsの場合は「Windows 用のクイックスタート | Cloud SDK のドキュメント」ページから、インストーラをダウンロードできます。
SDKをインストールしたいディレクトリに移動して、以下のコマンドを実行します。
$ curl https://sdk.cloud.google.com | bash
SDKのインストール先ディレクトリの指定です。よければそのままエンターを押してください。SDKのダウンロードが始まります。
SDKがクラッシュした場合に、匿名化された使用データをGoogleに送ってもいいか聞かれます。(ここはお好みで選択してください)
シェルの設定ファイルに SDKコマンドへのパスを追加してもいいか聞かれますので「Y」を入力してください。
completion?
Do you want to continue (Y/n)? Y
シェルの設定ファイルのパスの確認です。よければそのままエンターを押してください。
[/Users/foo/.bash_profile]:
シェルの設定ファイルを再読み込みして「gcloud」コマンドが実行できることを確認します。
$ gcloud help
(ヘルプが表示されればOKです)
認証情報の作成
API の認証情報を作成します。
「IAM と管理」>「サービスアカウント」を選択します。
「+サービスアカウントを作成」をクリックします。
適当なサービスアカウント名を入力し、役割「Project > オーナー」を選択します。続いて「新しい秘密鍵の提供」にチェックを入れて「保存」をクリックします。(キーのタイプは「JSON」のままでOKです)
サービスアカウントが作成されると、キーファイルがダウンロードされます。(メッセージの通りキーファイルの取り扱いには注意しましょう!)
以下のコマンドを実行して、認証情報を指定します。
環境変数「GOOGLE_APPLICATION_CREDENTIALS」にもキーファイルのパスを追加しておきます。
カスタム機械学習モデルの API にリクエスト実行
作成したカスタム機械学習モデルに API 経由でリクエストを実行し、画像を分類します。
リクエスト用の JSON ファイルの作成
まず下のようなリクエスト用の JSON ファイルを作成します。(ファイル名はなんでもかまいません)「imageBytes」フィールドに、分類してほしい画像ファイルを base64 でエンコードして入力します。
{ "payload": { "image": { "imageBytes": "<画像ファイルを base64 でエンコードした値>" }, } }
例えば画像ファイルのパスが /tmp/test.png の場合は、以下のコマンドでリクエスト用の JSON ファイルを作成できます。
echo '{"payload": {"image": {"imageBytes": "'` base64 /tmp/test.png `'"},}}' > request.json
参考資料:Annotating images | Cloud AutoML Vision
リクエスト実行
curl コマンドでカスタム機械学習モデルの API にリクエストを送信します。-d オプションで先ほど作成したリクエスト用の JSON ファイルを指定してください。(パスの先頭に「@」をつけるのを忘れずに!)
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-d @<JSON ファイルのパス> \
https://automl.googleapis.com/v1beta1/projects/<プロジェクトID>/locations/us-central1/models/<モデルID>:predict
上のコマンドは Cloud AutoML Vision の管理画面の「PREDICT」タブの画面で、プロジェクトIDとモデルIDが埋め込まれたコマンドをコピーできますので、そちらを利用するのが便利です。
コマンドを実行すると下のような内容が分類結果として返ってきます。
{ "payload": [ { "classification": { "score": 0.97885203 }, "displayName": "anpan_man" } ] }
おわりに
IBM Cloud Watson にも Visual Recognition(ビジュアル・レコグニション)という画像認識のカスタム機械学習モデルを作成できるサービスがあります。Google Cloud AutoML Vision と使い比べてみるのも面白そうですね。
コメント