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

如需训练图片标签模型,您需要为 AutoML Vision Edge 提供一组图片和相应的标签。AutoML Vision Edge 使用此数据集在云端训练新模型,您可以在应用中使用该模型为设备端图片加标签。

准备工作

1. 整理训练数据

首先,您需要汇总加标签的图片的训练数据集。请谨记以下准则:

  • 图片必须采用以下格式之一:JPEG、PNG、GIF、BMP、ICO。

  • 每张图片大小不得超过 30MB。请注意,AutoML Vision Edge 会在预处理过程中缩小大多数图片,因此,提供极高分辨率的图片通常并没有准确性优势。

  • 每个标签至少包含 10 个(最好是 100 个或更多)示例。

    如果您的 Firebase 项目采用 Spark 方案,则该项目最多只能有一个数据集,其中最多包含 1000 张图片。

  • 针对每个标签,包含多种角度、分辨率和背景。

  • 训练数据应尽可能接近要对其执行预测的数据。例如,如果您的使用场景涉及模糊的低分辨率图片(如来自监控摄像头的图片),则训练数据应由模糊的低分辨率图片组成。

  • AutoML Vision Edge 生成的模型是针对真实物体的照片来进行优化。因此可能不适用于 X 光、手绘图、扫描文档和回执等。

    此外,模型通常不能预测人类无法分配的标签。因此,如果一个人无法在观察图片 1-2 秒后分配标签,那么模型可能也无法通过训练达到此目的。

准备好训练图片后,接着准备将其导入 Firebase 中。 您可以使用三个选项:

选项 1:结构化 zip 归档文件

将您的训练图片归类整理到目录当中,每个目录以标签命名,其中包含作为该标签示例的图片。然后,将目录结构压缩成一个 zip 归档文件。

此 zip 归档中的目录名称不得超过 32 个 ASCII 字符,并且只能包含字母数字字符和下划线字符 (_)。

例如:

my_training_data.zip
  |____accordion
  | |____001.jpg
  | |____002.jpg
  | |____003.jpg
  |____bass_guitar
  | |____hofner.gif
  | |____p-bass.png
  |____clavier
    |____well-tempered.jpg
    |____well-tempered (1).jpg
    |____well-tempered (2).jpg

选项 2:具有 CSV 索引的 Cloud Storage

仅限 Blaze 方案:将您的训练图片上传到 Google Cloud Storage,并准备一个 CSV 文件,其中列出每张图片的网址,以及(可选)每张图片的正确标签。使用非常大的数据集时,此选项很有用。

例如,将您的图片上传到 Cloud Storage,然后准备如下所示的 CSV 文件:

gs://your-training-data-bucket/001.jpg,accordion
gs://your-training-data-bucket/002.jpg,accordion
gs://your-training-data-bucket/003.jpg,accordion
gs://your-training-data-bucket/hofner.gif,bass_guitar
gs://your-training-data-bucket/p-bass.png,bass_guitar
gs://your-training-data-bucket/well-tempered.jpg,clavier
gs://your-training-data-bucket/well-tempered%20(1).jpg,clavier
gs://your-training-data-bucket/well-tempered%20(2).jpg,clavier

图片必须存储在一个属于 Firebase 项目的对应 Cloud 项目的存储分区中。

如需详细了解如何准备 CSV 文件,请参阅 Cloud AutoML Vision 文档中的准备训练数据

选项 3:未加标签的图片

上传训练图片后,在 Firebase 控制台中逐个或采用非结构化 zip 文件为训练图片加标签。请参阅下一步。

2. 训练模型

接下来,使用图片训练模型:

  1. 打开 Firebase 控制台的机器学习套件部分。请在出现提示时选择您的项目。

  2. 点击 AutoML 标签页,然后点击创建您的首个 AutoML 数据集再添加一个数据集。在为新的数据集提供一个名称后,控制台将引导您完成以下步骤:

    1. 上传训练图片或包含您将训练图片上传到的 Cloud Storage 位置的 CSV 文件。 请参阅整理训练数据
    2. 上传完成后,验证训练数据并给所有未加标签的图片加标签。
    3. 使用训练数据开始训练模型。您可以配置以下设置,以控制生成模型的性能:
      延迟时间和软件包大小 拟使用的模型配置。如果低延迟或小的数据包很重要,您可以训练更快、更小的模型;或者,如果准确性更为重要,则可以训练较慢、更大的模型。
      训练时间

      训练模型花费的最长时间(以计算小时数计)。通常,训练时间越长,模型越准确。

      请注意,如果系统判断模型已经完成优化,额外的训练不会再提高准确性,则可能在指定时间之前完成训练。您只需为实际所用的小时数付费。

      典型的训练时间
      非常小的若干组图片1 小时
      500 张图片2 小时
      1000 张图片3 小时
      5000 张图片6 小时
      10000 张图片7 小时
      50000 张图片11 小时
      100000 张图片13 小时
      1000000 张图片18 小时

3.评估模型

训练完成后,您可以点击数据集详情页面上的模型,以查看模型的性能指标。

此页面的一个重要用途是确定最适合您的模型的分数阈值。分数阈值是指若要为图片分配标签,模型必须具有的最低置信度。通过移动分数阈值滑块,您可以看到不同阈值如何影响模型的性能。 模型性能使用两个指标来衡量:精确率和召回率

在图片分类的相关概念中,精确率是指在给定所选阈值下,添加正确标签的图片数量与模型添加标签的总的图片数量之比。当模型具有高精确率时,模型错误分配标签的频率会较低(假正例较少)。

召回率是指添加正确标签的图片数量与包含模型应该能够添加标签的内容的图片的数量之比。当模型具有高召回率时,它无法分配任何标签的频率会较低(假负例较少)。

您是针对精确率还是召回率进行优化,将取决于您的使用场景。如需了解详情,请参阅 AutoML Vision 新手指南包容性机器学习指南 - AutoML

当您找到一个能够生成令您满意的指标的分数阈值时,请记下它;您将使用该分数阈值在应用中配置模型。(您可以随时使用此工具获得适当的阈值。)

4.发布或下载您的模型

如果您对模型的性能感到满意,并希望在应用中使用,请发布模型和/或下载模型。

通过将模型发布到 Firebase,您可以在不发布新应用版本的情况下更新模型,并且可以使用远程配置和 A/B 测试为不同的用户组动态提供不同的模型。

如果您选择仅通过使用 Firebase 托管模型来提供模型,而不是与应用一起打包,则可以缩小应用的初始下载文件大小。但请注意,如果模型未与您的应用捆绑,那么在应用首次下载模型之前,任何与模型相关的功能都将无法使用。

通过将您的模型与应用捆绑,您可以确保即使 Firebase 托管的模型不可用,应用的机器学习功能仍可正常运行。

如果您发布模型并将其与应用捆绑,则应用将使用可用的最新版本。

如需下载或发布模型,请在模型的“评估”页面上点击使用模型

  • 下载模型时,您将获得包含模型文件、标签文件和清单文件的 zip 归档文件。机器学习套件需要拥有这三个文件才能从本地存储空间加载模型。

  • 将模型发布到 Firebase 时,您需要为模型指定一个名称。当您通过 SDK 加载模型时,将使用此名称来引用模型。

后续步骤

了解如何在 iOSAndroid 应用中使用 AutoML 训练的模型。

附录:我的文件存储位置

如果您采用 Blaze 方案,则机器学习套件会为 AutoML Vision Edge 数据创建一个新的 Storage 存储分区:

gs://AUTOGENERATED_BUCKET/DATASET_NAME/

在您浏览数据集时,Firebase 控制台会从此存储分区中传送图片,因此,如果超出免费使用配额,则可能需要支付相关的网络使用费。

如果您采用 Spark 或 Flame 方案,则 Firebase 会在内部(而非使用项目的 Cloud Storage)存储 AutoML Vision Edge 数据。