导出 Edge 模型

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

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

您可以采用以下格式导出图片分类模型:

导出到设备

TensorFlow Lite 模型

网页界面

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

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

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

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

  4. 使用您的模型部分中,选择 TF Lite 选项。选择 TF Lite 选项并在侧边窗口中指定 Cloud Storage 上的导出位置后,选择导出以导出 Edge TF Lite 模型。

    更新后的导出 TF Lite 模型选项 更新后的导出 TF Lite 模型选项

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/icn/tflite-dataset-name-YYYY-MM-DDThh:mm:ss.sssZ"
      }
    }
  }
}

因此,您会在自己提供的目录 (cloud-storage-bucket/[directory]) 中看到一种文件夹结构。创建的文件夹结构会采用以下常规格式(时间戳采用 ISO-8601 格式):

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

例如:

  • cloud-storage-bucket/model-export/icn/tf-saved-model-dataset-name-2019-07-22T21:25:35.135Z
  • cloud-storage-bucket/model-export/icn/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 上。

Core ML 模型

网页界面

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

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

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

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

  4. 使用您的模型部分中,选择 Core ML 选项。选择 Core ML 选项并在侧边窗口中指定 Cloud Storage 上的导出位置后,点击导出以导出 Edge 模型。

    导出 Core ML 模型选项 导出 Core ML 模型选项

REST 和命令行

"modelFormat" 字段中指定 "core_ml"

在使用下面的任何请求数据之前,请先进行以下替换:

  • 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": "core_ml",
    "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-11-12T22:53:55.290584Z",
    "updateTime": "2019-11-12T22:53:55.290584Z",
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "output-storage-bucket/model-export/icn/core_ml-dataset-name_YYYY-MM-DDThh:mm:ss.sssZ/"
      }
    }
  }
}

因此,您会在自己提供的目录 (cloud-storage-bucket/[directory]) 中看到一种文件夹结构。创建的文件夹结构会采用以下常规格式(时间戳采用 ISO-8601 格式):

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

例如:

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

该文件夹包含一个名为 model.mlmodel 的 Core ML 模型和一个 dict.txt 标签文件。

使用导出的模型

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

导出到容器

网页界面

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

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

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

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

  4. 使用您的模型部分中,选择容器选项。选择容器选项并在侧边窗口中指定 Cloud Storage 上的导出位置后,点击导出以导出 Edge 模型。

    导出到容器选项 导出到容器选项

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/icn/tf-saved-model-dataset-name-YYYY-MM-DDThh:mm:ss.sssZ"
      }
    }
  }
}

因此,您会在自己提供的目录 (cloud-storage-bucket/[directory]) 中看到一种文件夹结构。创建的文件夹结构会采用以下常规格式(时间戳采用 ISO-8601 格式):

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

例如:

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

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

使用导出的模型

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

导出到 Edge TPU

网页界面

  1. 打开 Vision 信息中心,并点击左侧导航栏中的灯泡图标以显示可用的模型。

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

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

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

  4. 使用您的模型部分中,选择 Coral 选项。选择 Coral 选项并在侧边窗口中指定 Cloud Storage 上的导出位置后,点击导出以导出 Edge 模型。

    导出 coral (edgetpu tflite) 选项 导出 coral (edgetpu tflite) 选项

REST 和命令行

"modelFormat" 字段中指定 "edgetpu_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": "edgetpu_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-11-12T22:55:03.554806Z",
    "updateTime": "2019-11-12T22:55:03.554806Z",
    "exportModelDetails": {
      "outputInfo": {
        "gcsOutputDirectory": "output-storage-bucket/model-export/icn/edgetpu_tflite-dataset-name_YYYY-MM-DDThh:mm:ss.sssZ/"
      }
    }
  }
}

因此,您会在自己提供的目录 (cloud-storage-bucket/[directory]) 中看到一种文件夹结构。创建的文件夹结构会采用以下常规格式(时间戳采用 ISO-8601 格式):

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

例如:

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

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

使用导出的模型

如需详细了解如何部署到 Edge TPU,请参阅介绍如何在 Edge TPU 上运行推断的 Coral 官方文档。

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