准备训练数据

准备图片

  • 图片必须采用支持的文件类型(请参阅下面的列表)。

  • AutoML Vision 模型针对真实物体的照片进行了优化。

  • 训练数据应尽可能接近要作为预测依据的数据。例如,如果您的用例涉及模糊的低分辨率图片(例如,来自监控摄像头的图片),那么您的训练数据应由模糊的低分辨率图片组成。一般来说,您还应该考虑为训练图片提供多种角度、分辨率和背景。

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

  • 我们建议在每个标签下提供大约 1000 张训练图片。每个标签至少应有 10 张训练图片;对于高级模型,则应至少有 50 张训练图片。一般来说,每个标签下需要有更多示例,才能训练每张图片带多个标签的模型,并且得分也更难以解读。

  • 训练模型时,系统支持以下图片格式。 文件大小上限为 30MB。

    • JPEG
    • PNG
    • GIF
    • BMP
    • ICO

    当您请求使用您的模型执行预测(查询)时,系统支持以下图片格式。文件大小上限为 1.5MB。

    • JPEG
    • PNG
    • GIF
  • 如果最常见标签下的图片数量最多达到最不常见标签下图片数量的 100 倍以上,则该模型效果最佳。建议移除出现频率极低的标签。

  • 考虑添加一个 None_of_the_above 标签和与您所定义的标签不匹配的图片。例如,对于花卉数据集,请添加不属于已加标签的种类的花卉图片,并将其标记为 None_of_the_above。此举可提高模型的准确率。请注意,虽然任何标签名称都可以使用,但 None_of_the_above 会由系统专门处理,并且始终显示在界面中标签列表的最末尾。

训练与评估数据集

在训练模型时,数据集内的数据会划分为三个数据集:训练数据集、验证数据集和测试数据集。

训练数据集用于构建模型。该模型在搜寻训练数据中的模式时会尝试多种算法和参数。 在模型识别出模式后,它会使用验证数据集来测试算法和模式。模型会从训练阶段识别出的算法和模式中选出表现最佳的。

在识别出表现最佳的算法和模式之后,使用测试数据集测试它们的错误率、质量和准确度。

系统使用验证和测试数据集是为了避免模型出现偏差。验证阶段使用的最佳模型参数可能会产生指标偏差。在验证阶段结束后使用测试数据集来评估模型质量可得到公正的评估结果。

默认情况下,AutoML Vision 将您的数据集随机拆分为 3 个独立的集合:

  • 80% 的图片用于训练。
  • 10% 的图片用于超参数调整和/或决定何时停止训练。
  • 10% 的图片用于评估模型。这些图片不用于训练。

如果您想指定 CSV 文件中的每张图片应属于哪个数据集,可以使用 .csv 文件,具体如下一部分所述

创建含图片 URI 和标签的 CSV 文件

文件上传包含所需格式 (gs://bucket-name-vcm) 的 Cloud Storage 存储分区后,您可以创建一个 CSV 文件,并在其中列出所有训练数据和该数据对应的类别标签。CSV 文件可以采用任何文件名,但必须和图片文件位于同一个存储分区中,必须采用 UTF-8 编码,并且文件名必须以 .csv 扩展名结尾。在此文件中,每行对应您要上传的集合中的一个图片,并且每行包含以下几列:

  1. 将此行中的内容分配到哪个集合。这是可选字段,可使用以下值之一:

    • TRAIN - 使用 image 训练模型。
    • VALIDATION - 使用 image 验证训练期间模型返回的结果。
    • TEST - 使用 image 验证模型训练完成后模型的结果。

    如果您没有为某行中的图片指定一个集合,那么 AutoML Vision 会自动将该图片置于三个集合中的其中一个,以确保有足够的训练、验证和测试内容。AutoML Vision 用于训练、验证和测试的内容文档比例分别是 80%、10% 和 10%。测试数据集的大小上限为 50000 个图片,即使总数据集的 10% 超过此上限值也是如此。

  2. 需要分类的内容。此字段包含图片的 Google Cloud Storage URI。Google Cloud Storage URI 区分大小写。

  3. 以逗号分隔的标签列表,标签用于标识图片的分类。标签必须以字母开头,且只能包含字母、数字和下划线。每张图片最多可包含 20 个标签。您也可以将标签留空,以便通过界面或人工标签服务进行手动标记。

例如:

  • 已加标签:gs://my-storage-bucket-vcm/flowers/images/img100.jpg,daisy
  • 未加标签:gs://my-storage-bucket-vcm/flowers/images/img403.jpg
  • 多标签:gs://my-storage-bucket-vcm/flowers/images/img384.jpg,dandelion,tulip,rose
  • 已分配给集合:TEST,gs://my-storage-bucket-vcm/flowers/images/img805.jpg,daisy

将相关内容作为 CSV 文件保存到 Google Cloud 存储分区中。

为存储在 Cloud Storage 中的未标注图片生成 CSV 文件

如果您已将未标注图片上传到 Cloud Storage,并且想要生成指向这些图片的 CSV 文件,请在 Cloud Shell 中运行以下代码:

for f in $(gsutil ls gs://YOUR_BUCKET/YOUR_IMAGES_FOLDER/);
do echo UNASSIGNED,$f;
done >> labels.csv;

然后将生成的 CSV 文件复制到 Google Storage 存储分区:

gsutil cp labels.csv gs://YOUR_BUCKET/labels.csv

使用 CSV 时的常见错误

  • 在标签中使用 Unicode 字符。例如,不支持日语字符。
  • 在标签中使用空格和非字母数字字符。
  • 空行。
  • 空列(行中带有两个连续英文逗号)。
  • Cloud Storage 图片路径大小写错误。
  • 图片文件的访问权限控制配置错误。您的服务账号应具有读取或更高权限,或者文件必须可供公开读取。
  • 引用非图片文件(如 PDF 或 PSD 文件)。同样,如果文件并非图片文件,但已重命名为具有图片扩展名,则将导致错误。
  • 图片的 URI 指向与当前项目不同的存储分区。 只能访问项目存储分区中的图片。
  • 文件并非 CSV 格式。