准备训练数据

准备图片

常规图片要求
支持的文件类型
  • JPEG
  • PNG
  • GIF
  • BMP
  • ICO
图片类型

AutoML Vision Object Detection 模型针对现实世界中物体的照片进行了优化。

训练图片文件大小 (MB) 大小上限为 30MB。
预测图片文件* 大小 (MB) 大小上限为 1.5MB。
图片大小(像素)

建议最大值为 1024×1024 像素。

对于远远大于 1024×1024 像素的图片,在 AutoML Vision Object Detection 的图片归一化过程中,图片质量可能会在一定程度上受损。

标签和边界框要求
用于训练的标签实例

最少 10 个注释(实例)。

注释要求

对于每个标签,您必须至少拥有 10 张图片,每张图片至少具有 1 个注释(边界框和标签)。

不过,出于模型训练目的,建议您对每个标签使用约 1000 个注释。一般情况下,每个标签对应的图片越多,模型的表现就越好。

标签比例(最常见标签与最不常见标签的比例):

如果最常见标签下的图片数量不超过最不常见标签下图片数量的 100 倍,则模型效果最佳。

出于模型性能考虑,我们建议您移除出现频率极低的标签。

边界框边长 至少为图片边长×0.01。例如,1000×900 像素的图片需要至少 10×9 像素的边界框。
边界框大小(像素) 最小为 8×8 像素。
每个不同图片的边界框数 最大值为 500。
从预测请求返回的边界框

默认值为 100,最大值为 500。

您可以在 params.max_bounding_box_count 字段中将此值指定为 predict 请求的一部分。

训练数据和数据集要求
训练图片特征

训练数据应尽可能接近要对其执行预测的数据。

例如,如果您的使用场景涉及模糊的低分辨率图片(例如来自监控摄像头的图片),则训练数据应由模糊的低分辨率图片组成。一般来说,您还应该考虑为训练图片提供多种角度、分辨率和背景。

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

每个数据集中的图片数 最大值:150000
每个数据集中的注释边界框总数 最大值:1000000
每个数据集中的标签数 最小值:1;最大值:1000

最佳做法指南

您可以使用哪些类型的图片数据?

  • 支持的图片文件格式包括 JPEG、PNG、GIF、BMP 或 ICO。
  • 训练数据应尽可能接近要对其执行预测的数据。例如,如果您的使用场景涉及来自手机相机的低分辨率图片,您的训练数据应由低分辨率图片组成。一般来说,您还应该考虑为训练图片提供多种角度、分辨率和背景。另一个例子是,如果您要检测高分辨率图片中的区域,请勿使用剪裁后的图片训练模型。

数据的最低条件是什么?

  • 您使用的标签必须是有效的字符串(不含英文逗号)。英文逗号仅在 CSV 导入时会导致问题。此问题可以通过如下方式解决:"file_comma,path","label,comma",0,0,,,1,1,,
  • 在所有情况下,边界框都应大于 8×8 像素。小于此大小的边界框将被过滤掉。
  • 图片可以超过 1024×1024 像素,但这些图片会被自动缩小,可能导致图片质量下降。因此,我们建议图片的最大尺寸为 1024×1024 像素。小于此尺寸的图片不会被放大
  • 所有边界框都应位于图片内
  • 您应对边界框添加详细标签:如果一张图片中包含两辆车,则这两辆车均应添加标签。

数据集需要多大?

  • 越大越好。在几乎所有情况下都是这样。不过,一个例外情况是添加更多样本会导致失衡或泄露(请参阅下文)。
  • 训练良好模型所需的数据量取决于不同因素:
    • 类别数量。您拥有的唯一类别越多,每个类别需要的样本就越多。
    • 类别的复杂性/多样性。这一点与人相似:一个人只需少量样本,就可能会快速学会区分啤酒和葡萄酒。一个人需要对不同葡萄酒进行更多的尝试,才能区分 5-6 种不同种类的红葡萄酒。对于许多人来说,学习区分 50 种不同口味的红葡萄酒是一件很有挑战性的事情,至少需要很多的练习才能做到。同样,神经网络能够快速区分大象和猫,但需要更多样本才能对 30 种不同的动物进行分类。
  • 一般来说,如果类别较少且特征鲜明,我们建议每个类别至少有 100 个训练样本。如果类别超过 50 个且类别差异细微,我们建议每个类别的训练样本数在 200 以上

训练数据集与评估数据集

在训练机器学习模型时,您通常需要将数据集划分为三个独立的数据集:

  1. 训练数据集
  2. 验证数据集
  3. 测试数据集

训练数据集用于构建模型。正在训练的模型会在搜索训练数据中的模式时尝试多个超参数。在模式识别过程中,AutoML Vision Object Detection 会使用验证数据集来测试模型的超参数。 AutoML Vision Object Detection 会从训练阶段识别的所有选项中选择表现最佳的算法和模式。

在识别出表现最佳的算法和模式之后,使用测试数据集测试它们的错误率、质量和准确度。客户必须拥有一个单独且可以独立测试模型的测试数据集。该测试数据集可由用户在训练集中指定,也可由系统在训练时自动选择。

系统使用验证和测试数据集是为了避免模型出现偏差。 验证阶段使用最佳模型参数。使用最佳模型参数可能会导致指标偏差。在验证阶段结束后使用测试数据集来评估模型质量可为训练过程提供公正的模型质量评估结果

如果您手动选择数据集样本,则应以能够代表相同群体的方式构建数据集。同样,您应该创建具有相似图片的数据集分块,所有分块都具有相似的标签分布。

手动和自动拆分数据集

导入数据集时,您可以在 CSV 文件中手动指定训练集、验证集和测试集的分块。

如果您不指定这些分块,AutoML Vision Object Detection 会随机拆分您的数据。按以下方式创建分块:

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

常见问题

  • 不均衡数据:在许多情况下,每个类别(标签)的样本数量都不相等。轻度不均衡通常不会产生问题,但如果各类别之间存在较大差异,就可能会导致问题。如果存在更严重的不均衡(例如,某些类别的表示次数为其他类别的 10 倍以上),则模型构建会出现问题。虽然有一些方法可以抵消类别不平衡,但这并不是模型训练的理想配置。尽可能避免使用高度不均衡的数据进行模型训练。

    一般来说,最常见类别和最不常见类别之间的比率应低于 2:1

  • 不良分块:在您提供训练数据时,AutoML Vision Object Detection 会自动将其拆分为训练数据集、验证数据集和测试数据集。 您也可以自行分配训练分块标签。

    如果您多次导入相同的数据,不一定能得到同样的分块结果。

    训练数据、验证数据和测试数据不应具有强相关性。例如,一种常见的不良情况是图片来自视频,这会导致许多图片彼此非常相似。如果您允许系统随机拆分数据集,则训练数据和验证/测试数据中的图片很有可能高度相似。这会导致对测试数据不正确的高准确率。

  • 数据泄露:数据泄露是一个严重的问题,可能会导致模型存在偏差。 如果算法能够在模型训练期间使用其本不应使用,而且在未来的预测过程中不会提供的信息,则属于数据泄露。这会导致训练数据集、验证数据集和测试数据集的结果过于乐观。但是,在应用于未来的某些未知数据时,表现可能不会同样好。这种情况通常是无意中发生的,您在准备数据时需要特别小心。

    泄露示例:从不同图片来源或视角产生的正例和负例。