导出 Edge 模型

创建(训练)模型后,您可以将自定义模型导出,

随后将导出的模型部署到设备上。

您可以使用 ExportModel API 将图片分类模型导出到 Google Cloud Storage 位置,支持的导出格式包括通用Tensorflow Lite格式、通用 TensorFlow 格式和 TensorFlow.js for Web 格式。

导出到设备

TensorFlow Lite 模型

网页界面

  1. 打开 Cloud AutoML Vision Object Detection 界面,然后点击左侧导航栏中的灯泡图标以显示可用的模型。

    如需查看其他项目的模型,请从标题栏右上角的下拉列表中选择该项目。

  2. 选择要用于为图片添加标签的模型所对应的行。

  3. 选择测试和使用标签页。

  4. 使用您的模型部分中,选择 TF Lite 卡片。这会打开使用您设备上的模型 (Use your on-device model) 侧边窗口。

    展示导出 TF Lite 模型选项的图片

  5. 在侧边窗口中,指定作为输出位置的 Google Cloud Storage 位置。选好模型输出的存储位置后,选择导出启动模型导出操作。

    关于为导出的模型选择存储位置的图片

  6. 导出完成后,您可以在同一窗口中选择在 Google Cloud Storage 中打开 (Open in 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 方法和网址:

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

该文件夹包含一个名为 model.tflite 的 TensorFlow Lite 模型、一个名为 dict.txt 的标签文件和一个 tflite_metadata.json 文件。

时间戳文件夹示例

使用导出的模型

将模型导出到 Google Cloud Storage 存储分区后,您可以将 AutoML Vision Edge 模型部署到 Android 设备iOS 设备Raspberry Pi 3 上。

导出到容器

网页界面

  1. 打开 Cloud AutoML Vision Object Detection 界面,然后点击左侧导航栏中的灯泡图标以显示可用的模型。

    如需查看其他项目的模型,请从标题栏右上角的下拉列表中选择该项目。

  2. 点击要用于标记图片的模型所对应的行。

  3. 选择测试和使用标签页。

  4. 使用您的模型部分中,选择 TF Lite 卡片。这会打开使用您设备上的模型 (Use your on-device model) 侧边窗口。

    展示导出 TF Lite 模型选项的图片

  5. 在侧边窗口中,指定作为输出位置的 Google Cloud Storage 位置。选好模型输出的存储位置后,选择导出启动模型导出操作。

    关于为导出的模型选择存储位置的图片

  6. 导出完成后,您可以在同一窗口中选择在 Google Cloud Storage 中打开 (Open in 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 方法和网址:

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

该文件夹包含一个名为 saved_model.pb 的 TensorFlow 模型。

时间戳文件夹示例

使用导出的模型

将模型导出到 Google Cloud Storage 存储分区后,您可以使用导出的模型在 Docker 映像中执行预测。有关部署到容器的说明,请参阅容器教程

为在 Web 上使用而导出

网页界面

  1. 打开 Vision Dashboard 并选择侧边导航栏中的灯泡图标以显示可用的模型。

    如需查看其他项目的模型,请从标题栏右上角的下拉列表中选择该项目。

  2. 选择要用于为图片添加标签的模型所对应的行。

  3. 选择标题栏正下方的测试和使用标签页。

  4. 使用您的模型部分,选择 Tensorflow.js 选项。选择 Tensorflow.js 选项并在侧窗口中指定 Cloud Storage 上的导出位置后,再选择导出以导出支持 Web 的 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 方法和网址:

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 文件夹示例