Google Cloud AutoML Vision 機械学習モデルをAPI経由で使う手順

クラウド
クラウド
スポンサーリンク

前回の記事で 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 -V
Python 2.7.10 ← インストールされている

ローカルPCがWindowsの場合は「Windows 用のクイックスタート | Cloud SDK のドキュメント」ページから、インストーラをダウンロードできます。

SDKをインストールしたいディレクトリに移動して、以下のコマンドを実行します。

$ cd ~
$ curl https://sdk.cloud.google.com | bash

SDKのインストール先ディレクトリの指定です。よければそのままエンターを押してください。SDKのダウンロードが始まります。

Installation directory (this will create a google-cloud-sdk subdirectory) (/Users/foo): <そのままエンター>

SDKがクラッシュした場合に、匿名化された使用データをGoogleに送ってもいいか聞かれます。(ここはお好みで選択してください)

Do you want to help improve the Google Cloud SDK (Y/n)?

シェルの設定ファイルに SDKコマンドへのパスを追加してもいいか聞かれますので「Y」を入力してください。

Modify profile to update your $PATH and enable shell command
completion?
Do you want to continue (Y/n)? Y

シェルの設定ファイルのパスの確認です。よければそのままエンターを押してください。

Enter a path to an rc file to update, or leave blank to use
[/Users/foo/.bash_profile]:

シェルの設定ファイルを再読み込みして「gcloud」コマンドが実行できることを確認します。

$ source ~/.bash_profile
$ gcloud help
(ヘルプが表示されればOKです)

認証情報の作成

API の認証情報を作成します。

「IAM と管理」>「サービスアカウント」を選択します。

「+サービスアカウントを作成」をクリックします。

適当なサービスアカウント名を入力し、役割「Project > オーナー」を選択します。続いて「新しい秘密鍵の提供」にチェックを入れて「保存」をクリックします。(キーのタイプは「JSON」のままでOKです)

サービスアカウントが作成されると、キーファイルがダウンロードされます。(メッセージの通りキーファイルの取り扱いには注意しましょう!)

以下のコマンドを実行して、認証情報を指定します。

gcloud auth activate-service-account --key-file=<キーファイルのパス>

環境変数「GOOGLE_APPLICATION_CREDENTIALS」にもキーファイルのパスを追加しておきます。

export 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 ファイルを指定してください。(パスの先頭に「@」をつけるのを忘れずに!)

curl -X POST \
-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 と使い比べてみるのも面白そうですね。

関連記事:誰でもできる機械学習 Watson Visual Recognition(画像認識)の使い方

コメント

タイトルとURLをコピーしました