使用 AutoML Vision Edge 模型为图片加标签

本快速入门将引导您完成以下过程:

  • 将一组图片复制到 Google Cloud Storage 中。
  • 创建一个列有图片及其标签的 CSV 文件。
  • 使用 AutoML Vision 创建数据集、训练自定义 AutoML Vision Edge 模型(图片分类或对象检测),并进行预测。
  • 为多种类型的边缘设备之一导出和部署 AutoML Vision Edge 模型,例如手机、基于 ARM 的设备和 Coral Edge TPU

准备工作

设置项目

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 安装 Google Cloud CLI。
  3. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  4. 创建或选择 Google Cloud 项目

    • 创建 Google Cloud 项目:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

    • 选择您创建的 Google Cloud 项目:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替换为您的 Google Cloud 项目 名称。

  5. 确保您的 Google Cloud 项目已启用结算功能

  6. Enable the AutoML and Cloud Storage APIs:

    gcloud services enable storage-component.googleapis.com automl.googleapis.com storage-api.googleapis.com
  7. 安装 Google Cloud CLI。
  8. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  9. 创建或选择 Google Cloud 项目

    • 创建 Google Cloud 项目:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

    • 选择您创建的 Google Cloud 项目:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替换为您的 Google Cloud 项目 名称。

  10. 确保您的 Google Cloud 项目已启用结算功能

  11. Enable the AutoML and Cloud Storage APIs:

    gcloud services enable storage-component.googleapis.com automl.googleapis.com storage-api.googleapis.com
  12. PROJECT_ID 环境变量设置为项目 ID
    export PROJECT_ID=PROJECT_ID
    AutoML API 调用和资源名称中包含您的项目 ID。PROJECT_ID 环境变量提供了一种指定此 ID 的便捷方式。

创建 Cloud Storage 存储桶

使用 Cloud Shell(一个连接到 Google Cloud 控制台项目的基于浏览器的 Linux 命令行)创建 Cloud Storage 存储桶:

  1. 打开 Cloud Shell

  2. 创建 Google Cloud Storage 存储桶。存储桶名称必须采用以下格式:project-id-vcm。以下命令将在 us-central1 区域中创建一个名为 project-id-vcm 的存储桶。如需查看可用区域的完整列表,请参阅“存储桶位置”页面

    gsutil mb -p ${PROJECT_ID} -c regional -l us-central1 gs://${PROJECT_ID}-vcm/

  3. 设置 BUCKET 变量。

    export BUCKET=${PROJECT_ID}-vcm

将示例图片复制到存储桶中

接下来,复制此 Tensorflow 博文中使用的花卉数据集。 这些图片存储在公共 Cloud Storage 存储桶中,因此您可以直接将它们从该公共存储桶复制到自己的存储桶。

  1. 在 Cloud Shell 会话中,输入以下内容:

    gsutil -m cp -R gs://cloud-samples-data/ai-platform/flowers/ gs://${BUCKET}/img/
    

    文件复制操作需要大约 20 分钟才能完成。

创建 CSV 文件

样本数据集包含一个 CSV 文件,其中包含每张图片的位置和标签。您将基于这一文件创建您自己的 CSV 文件:

  1. 更新 CSV 文件,使其指向您自己的存储桶中的文件:

    gsutil cat gs://${BUCKET}/img/flowers/all_data.csv | sed "s:cloud-ml-data/img/flower_photos/:${BUCKET}/img/flowers/:" > all_data.csv
    
  2. 将 CSV 文件复制到您的存储桶中:

    gsutil cp all_data.csv gs://${BUCKET}/csv/
    

创建数据集

访问 AutoML Vision 界面,开始创建数据集并训练模型。

收到提示时,请务必选择用于您的 Cloud Storage 存储桶的项目。

  1. 在 AutoML Vision 页面中,点击新建数据集

    控制台中的“新建数据集”按钮

  2. 为此数据集指定一个名称(可选),选择模型目标,然后单击创建数据集以继续数据集创建过程。

    新数据集名称字段

  3. 选择要导入的文件屏幕中,选择选择 Cloud Storage 上的 CSV 文件单选选项。指定 CSV 文件的 Cloud Storage URI。在本快速入门中,CSV 文件的位置为:

    • gs://${PROJECT_ID}-vcm/csv/all_data.csv

    PROJECT_ID 替换为您的特定项目 ID。

    选择文件导入窗口

  4. 点击继续以开始导入图片。导入过程需要几分钟时间。完成后,您将会被引导至下一页面,其中包含为数据集识别出的所有图片(包括已添加标签和未添加标签的图片)的详细信息。

    导入完成后列出的图片

训练模型

  1. 创建数据集并完成相应处理后,选择训练标签页可开始训练模型。

    选择“训练”标签页

  2. 选择开始训练以继续。这将打开一个训练新模型窗口,其中包含训练选项。

  3. 在新模型训练窗口的定义模型部分,更改模型名称(可选)并选择 Edge 模型单选选项。选择继续以转到下一部分。

    定义要训练的模型部分

  4. 模型优化选项部分,接受最佳权衡选项,然后选择继续

  5. 设置节点时预算部分,接受建议的节点预算(4 个节点时)。

    训练 Edge 模型

  6. 选择开始训练以开始训练模型。

    系统将针对您的模型开始训练,训练时间大约为一小时。 训练可能会在达到您选择的节点时之前停止。该服务将在训练完成后或发生任何错误时通过电子邮件通知您。

部署模型

在导出模型之前,必须先部署模型以供使用。

  1. 要部署模型,请选择测试和使用标签页。在标签页中,点击模型名称附近的部署模型选项。

  2. 在接下来的窗口中,指定要部署模型的 1 个节点,然后选择部署以开始模型部署过程。

    选择要部署的节点时数

模型部署完成后,您将收到通知。

导出模型

使用 AutoML Vision Edge 模型的最后一步是导出(优化和下载)和部署(使用)模型。

您可以通过多种方式导出和部署模型,以将这些模型用于在 Edge 设备上进行预测。

在本快速入门中,您将使用 TensorFlow Lite (TF Lite) 作为示例。 TF Lite 模型易于使用,并且适用于多种使用场景。

  1. 测试和使用标签页的使用您的模型部分,选择 TF Lite 选项。

    导出 TF Lite 模型

  2. 在显示的导出 TF Lite 软件包窗口中,指定要导出 TF Lite 软件包的 Cloud Storage 存储桶位置,然后选择导出。导出过程通常需要几分钟时间。

    导出 TF Lite 模型侧边窗口

在 Google Cloud Storage 目标位置,您将找到一个以时间戳和模型格式命名的文件夹,其中包含以下文件:

  • 一个 tflite 文件 (model.tflite)
  • 一个字典文件 (dict.txt)
  • 一个元数据文件 (tflite_metadata.json)

清理

为避免因本页面中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的 Google Cloud 项目。

后续步骤

借助这些文件,您可以按照教程的说明在 Android 设备iOS 设备Raspberry Pi 3Web 上部署模型。

其他模型使用选项

  • 您可以将模型导出为支持 CoreML (iOS/macOS) 的模型。训练完成后,您可以在测试和使用标签页中选择 CoreML 选项,然后按照 CoreML 教程中的说明执行操作。
  • 您可以导出模型,以在 Coral Edge TPU 上运行。训练完成后,通过在测试和使用标签页中选择 Coral 选项以导出模型。但是,由于目前与我们的对象检测模型不兼容,因此我们建议您仅导出 Edge TPU 的图片分类模型(如果要训练 Edge TPU 的对象检测模型,请改为遵循这些 Google Colab 教程中的一个)。导出模型后,请参照介绍如何在 Edge TPU 上运行推断的 Coral 官方文档中的说明执行操作。
  • 您可以将模型导出为 TensorFlow SavedModel 并将其与 Docker 容器搭配使用。训练完成后,您可以通过在测试和使用标签中选择容器选项来导出模型,然后参照介绍如何导出到容器的 Edge 容器教程中的说明执行操作。
  • 您可以导出模型以在浏览器中使用或在节点 .js 作为一个 Tensorflow.js 模型训练完成后,您可以通过在测试和使用标签中选择 Tensorflow.js 选项导出模型,然后按照 Edge TensorFlow.js 教程操作。

清理

如果您不再需要您的自定义模型或数据集,可以将其删除。

为避免产生不必要的 Google Cloud Platform 费用,请使用 GCP Console 删除您不需要的项目。

取消部署模型

模型部署后即会产生费用。

  1. 选择标题栏正下方的测试和使用标签页。
  2. 从模型名称下方的横幅中选择移除部署,以打开取消部署选项窗口。

    取消部署弹出式菜单

  3. 选择移除部署以取消部署模型。

    模型部署

  4. 模型取消部署完成后,您会收到电子邮件通知。

删除项目(可选)

为避免产生不必要的 Google Cloud Platform 费用,请使用 Google Cloud 控制台删除您不需要的项目。