Edge モデルのエクスポート

モデルを作成したら、カスタムモデルをエクスポートできます。

モデルをエクスポートしたら、モデルをデバイスにデプロイできます。

画像分類モデルは、ExportModel API を使用して汎用的な Tensorflow Lite 形式、TensorFlow 形式、ウェブ用の TensorFlow.js 形式のいずれかで Google Cloud Storage の保存先にエクスポートできます。

デバイスにエクスポートする

TensorFlow Lite モデル

ウェブ UI

  1. Cloud AutoML Vision Object Detection UI を開き、左側のナビゲーション バーで電球のアイコンをクリックし、使用可能なモデルを表示します。

    別のプロジェクトのモデルを表示するには、タイトルバーの右上にあるプルダウン リストからプロジェクトを選択します。

  2. 画像のラベル付けに使用するモデルの行を選択します。

  3. [テストと使用] タブを選択します。

  4. [モデルを使用する] セクションで [TF Lite] カードを選択します。サイドに [オンデバイス モデルを使用] ウィンドウが開きます。

    [TF Lite モデルをエクスポート] オプションの画像

  5. サイド ウィンドウで、Google Cloud Storage の出力先を指定します。モデルの出力先を選択したら、[エクスポート] を選択してモデルのエクスポートを開始します。

    モデルのエクスポート先を選択する際の画像

  6. エクスポート後、同じウィンドウで [Google Cloud Storage で開く] オプションを選択すると、Google Cloud Storage のエクスポート先ディレクトリに直接移動できます。

REST とコマンドライン

"modelFormat" フィールドに "tflite"(デフォルト)を指定します。

後述のリクエストのデータを使用する前に、次のように置き換えます。

  • project-id: GCP プロジェクト ID
  • model-id: モデルを作成したときにレスポンスで返されたモデルの ID。この ID は、モデルの名前の最後の要素です。例:
    • モデル名: projects/project-id/locations/location-id/models/IOD4412217016962778756
    • モデル ID: IOD4412217016962778756
  • output-storage-bucket: 次の形式で出力ファイルを保存する Google Cloud Storage バケット/ディレクトリ。gs://bucket/directory/リクエスト元のユーザーには、バケットへの書き込み権限が必要です。

HTTP メソッドと URL:

POST https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id:export

JSON 本文のリクエスト:

{
  "outputConfig": {
    "modelFormat": "tflite",
    "gcsDestination": {
      "outputUriPrefix": "output-storage-bucket/"
    },
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id:export

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id:export" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/project-id/locations/us-central1/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata",
    "createTime": "2019-07-22T21:23:21.643041Z",
    "updateTime": "2019-07-22T21:23:21.643041Z",
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "output-storage-bucket/model-export/iod/tflite-dataset-name-YYYY-MM-DDThh:mm:ss.sssZ"
      }
    }
  }
}

その結果、指定したディレクトリ(cloud-storage-bucket/[directory])にフォルダ構造が表示されます。作成されるフォルダ構造の一般形式(タイムスタンプは ISO-8601 形式)は次のとおりです。

  • cloud-storage-bucket/model-export/iod/model-type-dataset-name-YYYY-MM-DDThh:mm:ss.sssZ

例:

  • cloud-storage-bucket/model-export/iod/tf-saved-model-dataset-name-2019-07-22T21:25:35.135Z
  • cloud-storage-bucket/model-export/iod/tflite-dataset-name-2019-07-22T21:23:18.861Z

フォルダには、TensorFlow Lite モデル(model.tflite)、ラベルファイル(dict.txt)、tflite_metadata.json ファイルが含まれます。

Timestamp フォルダの例

エクスポートされたモデルの使用

モデルを Google Cloud Storage バケットにエクスポートしたら、AutoML Vision Edge モデルを Android デバイスiOS デバイスまたは Raspberry Pi 3 にデプロイできます。

コンテナにエクスポートする

ウェブ UI

  1. Cloud AutoML Vision Object Detection UI を開き、左側のナビゲーション バーで電球のアイコンをクリックし、使用可能なモデルを表示します。

    別のプロジェクトのモデルを表示するには、タイトルバーの右上にあるプルダウン リストからプロジェクトを選択します。

  2. 画像のラベル付けに使用するモデルの行をクリックします。

  3. [テストと使用] タブを選択します。

  4. [モデルを使用する] セクションで [TF Lite] カードを選択します。サイドに [オンデバイス モデルを使用] ウィンドウが開きます。

    [TF Lite モデルをエクスポート] オプションの画像

  5. サイド ウィンドウで、Google Cloud Storage の出力先を指定します。モデルの出力先を選択したら、[エクスポート] を選択してモデルのエクスポートを開始します。

    モデルのエクスポート先を選択する際の画像

  6. エクスポート後、同じウィンドウで [Google Cloud Storage で開く] オプションを選択すると、Google Cloud Storage のエクスポート先ディレクトリに直接移動できます。

REST とコマンドライン

"modelFormat" フィールドに "tf-saved-model" を指定します。

後述のリクエストのデータを使用する前に、次のように置き換えます。

  • project-id: GCP プロジェクト ID
  • model-id: モデルを作成したときにレスポンスで返されたモデルの ID。この ID は、モデルの名前の最後の要素です。例:
    • モデル名: projects/project-id/locations/location-id/models/IOD4412217016962778756
    • モデル ID: IOD4412217016962778756
  • output-storage-bucket: 次の形式で出力ファイルを保存する Google Cloud Storage バケット/ディレクトリ。gs://bucket/directory/リクエスト元のユーザーには、バケットへの書き込み権限が必要です。

HTTP メソッドと URL:

POST https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/${model-id}:export

JSON 本文のリクエスト:

{
  "outputConfig": {
    "modelFormat": "tf-saved-model",
    "gcsDestination": {
      "outputUriPrefix": "output-storage-bucket/"
    },
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/${model-id}:export

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/${model-id}:export" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/project-id/locations/us-central1/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata",
    "createTime": "2019-07-22T21:23:21.643041Z",
    "updateTime": "2019-07-22T21:23:21.643041Z",
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "output-storage-bucket/model-export/iod/tf-saved-model-dataset-name-YYYY-MM-DDThh:mm:ss.sssZ"
      }
    }
  }
}

その結果、指定したディレクトリ(cloud-storage-bucket/[directory])にフォルダ構造が表示されます。作成されるフォルダ構造の一般形式(タイムスタンプは ISO-8601 形式)は次のとおりです。

  • cloud-storage-bucket/model-export/iod/model-type-dataset-name-YYYY-MM-DDThh:mm:ss.sssZ

例:

  • cloud-storage-bucket/model-export/iod/tf-saved-model-dataset-name-2019-07-22T21:25:35.135Z
  • cloud-storage-bucket/model-export/iod/tflite-dataset-name-2019-07-22T21:23:18.861Z

フォルダには、TensorFlow モデル(saved_model.pb)が含まれます。

Timestamp フォルダの例

エクスポートされたモデルの使用

モデルを Google Cloud Storage バケットにエクスポートしたら、エクスポートしたモデルを使用して Docker イメージで予測を行うことができます。コンテナへのデプロイ方法については、コンテナ チュートリアルをご覧ください。

ウェブ用にエクスポートする

ウェブ UI

  1. Vision Dashboard を開き、サイド ナビゲーション バーの電球アイコンを選択して、使用可能なモデルを表示します。

    別のプロジェクトのモデルを表示するには、タイトルバーの右上にあるプルダウン リストからプロジェクトを選択します。

  2. 画像のラベル付けに使用するモデルの行を選択します。

  3. タイトルバーのすぐ下にある [テストと使用] タブを選択します。

  4. [モデルの使用] セクションで、Tensorflow.js オプションを選択します。Tensorflow.js オプションを選択し、Cloud Storage のエクスポート先をサイド ウィンドウで指定したら、[エクスポート] を選択してウェブ対応の TensorFlow.js モデルをエクスポートします。

    Tensorflow.js のエクスポート オプション Tensorflow.js のエクスポート オプション

REST とコマンドライン

後述のリクエストのデータを使用する前に、次のように置き換えます。

  • project-id: GCP プロジェクト ID
  • model-id: モデルを作成したときにレスポンスで返されたモデルの ID。この ID は、モデルの名前の最後の要素です。例:
    • モデル名: projects/project-id/locations/location-id/models/IOD4412217016962778756
    • モデル ID: IOD4412217016962778756
  • output-storage-bucket: 次の形式で出力ファイルを保存する Google Cloud Storage バケット/ディレクトリ。gs://bucket/directory/リクエスト元のユーザーには、バケットへの書き込み権限が必要です。

HTTP メソッドと URL:

POST https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id:export

JSON 本文のリクエスト:

{
  "outputConfig": {
    "modelFormat": "tf_js",
    "gcsDestination": {
      "outputUriPrefix": "output-storage-bucket/"
    },
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id:export

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id:export" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/project-id/locations/us-central1/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata",
    "createTime": "2019-07-22T21:23:21.643041Z",
    "updateTime": "2019-07-22T21:23:21.643041Z",
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "output-storage-bucket/model-export/icn/tf_js-dataset-name-YYYY-MM-DDThh:mm:ss.sssZ"
      }
    }
  }
}

指定したディレクトリ(${USER_GCS_PATH})にフォルダが表示されます。作成されたフォルダには、/model-export/icn/tf_js-dataset-name-YYYY-MM-DDThh:mm:ss.sssZ 形式のタイムスタンプに従って名前が付けられます(例: tf_js-edge_model-2019-10-03T17:24:46.999Z)。

フォルダには、バイナリ ファイル(.bin)、dict.txt という名前のラベルファイル、model.json ファイルが含まれます。

Tensorflow.js フォルダの例