创建数据标记项目并导出标签

了解如何创建和运行数据标签项目以标记 Azure 机器学习中的图像和文本数据。 使用机器学习辅助数据标记或“人机回圈”标记,以协助完成任务。

数据标记功能

重要

必须在 Azure Blob 数据存储中提供数据图像或文本。 (如果没有现有的数据存储,可以在创建项目过程中上传文件。)

图像数据可以是以下任意类型的文件:“jpg”、“.jpeg”、“.png”、“.jpe”、“.jfif”、“.bmp”、“.tif”、“.tiff”、“.dcm”、“dicom”。 每个文件都是要标记的项。

文本数据可以是“.txt”或“.csv”文件。

  • 对于“.txt”文件,每个文件表示一个要标记的项。
  • 对于“.csv”文件,文件的每行表示一个要标记的项。

Azure 机器学习数据标记是创建、管理和监视标记项目的一个中心位置:

  • 可以协调数据、标签和团队成员,以有效地管理标记任务。
  • 跟踪进度并维护未完成标记任务的队列。
  • 启动和停止项目并控制标记进度。
  • 检查已标记的数据,并以 COCO 格式导出已标记的数据或将其导出为 Azure 机器学习数据集。

先决条件

  • 本地文件或 Azure Blob 存储中要标记的数据。
  • 要应用的一组标签。
  • 标记说明。
  • Azure 订阅。 如果没有 Azure 订阅,可在开始前创建一个试用帐户
  • 机器学习工作区。 请参阅创建 Azure 机器学习工作区

创建数据标记项目

标记项目是通过 Azure 机器学习管理的。 可以使用“标记项目”页来管理项目。

如果数据已在 Azure Blob 存储中,在创建标记项目之前,应以数据存储的形式提供这些数据。 有关如何使用数据存储的示例,请参阅教程:创建第一个图像分类标记项目

若要创建项目,请选择“添加项目”。 为项目指定适当的名称,然后选择“标记任务类型”。 项目名称不能重复使用,即使该项目会在将来被删除也是如此。

图像标签项目

  • 选择“图像”以创建图像标签项目。

    图像标签的标签项目创建

    • 若要将一组标签中的单个标签应用到某个图像,请为项目选择“多类图像分类”。
    • 若要将一组标签中的一个或多个标签应用到某个图像,请为项目选择“多标签图像分类”。 例如,可以使用“狗”和“白天”标记狗的照片。
    • 若要将标签和边界框应用到图像中的每个对象,请为项目选择“对象标识(边界框)”。
    • 如果要分配标签并在图像中每个对象的周围绘制多边形,请选择“实例分段(多边形)”。
  • 准备好继续时,选择“下一步”。

文本标签项目(预览版)

重要

文本标签目前提供公共预览版。 该预览版在提供时没有附带服务级别协议,建议不要将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

  • 选择“文本”以创建文本标签项目。

    文本标签的标签项目创建

    • 若要仅将单个标签从一组标签应用到每段文本,请选择项目的“文本分类多类(预览)”。
    • 若要将一个或多个标签从一组标签应用到每段文本,请选择项目的“文本分类多类(预览)”。
  • 准备好继续时,选择“下一步”。

指定要标记的数据

如果已创建包含数据的数据集,请从“选择现有数据集”下拉列表中选择该数据集。 或者,选择“创建数据集”以使用现有的 Azure 数据存储或上传本地文件。

备注

一个项目最多包含 500,000 个文件。 如果数据集中包含的图像超过此限制,将只加载前 500,000 个文件。

从 Azure 数据存储创建数据集

在许多情况下,上传本地文件就可以了。 但是,使用 Azure 存储资源管理器可以更快、更可靠地传输大量数据。 建议将存储资源管理器用作移动文件的默认方式。

若要基于已存储在 Azure Blob 存储中的数据创建数据集:

  1. 选择“创建数据集” > “从数据存储”。
  2. 为数据集指定一个 名称
  3. 选择“数据集类型”。 图像仅支持文件数据集类型。 对于文本标签项目:
    • 如果使用 .csv 文件,其中每行都是一个响应,请选择“表格”。
    • 如果对每个响应使用单独的 .txt 文件,请选择“文件”。
  4. 选择数据存储。
  5. 如果数据位于 Blob 存储中的子文件夹中,请选择“浏览”以选择相应的路径。
    • 将“/**”追加到路径中可以包括所选路径的子文件夹中的所有文件。
    • 追加“* / .*”可以包括当前容器及其子文件夹中的所有数据。
  6. 提供数据集的说明。
  7. 选择“下一页”。
  8. 确认详细信息。 选择“后退”以修改设置,或选择“创建”以创建数据集。

基于上传的数据创建数据集

若要直接上传数据:

  1. 选择“创建数据集” > “从本地文件”。
  2. 为数据集指定一个 名称
  3. 选择“数据集类型”。 图像仅支持文件数据集类型。 对于文本标签项目:
    • 如果使用 .csv 文件,其中每行都是一个响应,请选择“表格”。
    • 如果对每个响应使用单独的 .txt 文件,请选择“文件”。
  4. 可选: 选择“高级设置”可以自定义数据存储、容器,以及数据的路径。
  5. 选择“浏览”选择要上传的本地文件。
  6. 提供数据集的说明。
  7. 选择“下一页”。
  8. 确认详细信息。 选择“后退”以修改设置,或选择“创建”以创建数据集。

数据将上传到机器学习工作区的默认 Blob 存储(“workspaceblobstore”)。

配置增量刷新

如果打算向数据集中添加新文件,请使用增量刷新将这些新文件添加到项目。 启用增量刷新时,将根据标记完成率定期检查数据集,以将新图像添加到项目。 项目包含的文件达到最大数 500,000 时,新数据检查将停止。

若要将更多文件添加到项目中,请使用 Azure 存储资源管理器上载到 Blob 存储中的相应文件夹。

如果希望项目持续监视数据存储中的新数据,请选中“启用增量刷新”框。 启用后此数据会每天拉取到项目中,因此在向数据存储添加新数据后,需要等待数据在项目中显示。 可在项目的“详细信息”选项卡的“增量刷新”部分中看到上次刷新数据的时间戳 。

如果不希望数据存储中的新文件添加到项目,请取消选中此框。

添加标签类

在“标签类”页上,指定用于对数据分类的类集。 标记程序能否在类中进行选择会影响其准确性和速度。 例如,不要拼写出植物或动物的完整属类和物种,而是使用字段代码或者将属类缩写。

在每行输入一个标签。 使用 + 按钮添加新行。 如果已经输入了 3 到 4 个标签,但不超过 10 个,则我们建议使用编号(“1:”、“2:”)作为名称的前缀,使标记程序能够使用编号键来加速工作。

说明数据标记任务

清楚地解释标记任务非常重要。 在“标记说明”页上,可以添加外部站点的链接来提供标记说明,或在该页上的编辑框中提供说明。 让说明面向任务并适合受众。 请考虑以下问题:

  • 他们将看到哪些标签,他们如何在标签之间进行选择? 是否提供了参考文本?
  • 如果没有合适的标签,应该怎么办?
  • 如果没有合适的多个标签,应该怎么办?
  • 他们应当向标签应用什么置信度阈值? 如果他们不确定,是否需要“最佳推测”?
  • 他们应该如何处理部分封闭或重叠的相关对象?
  • 如果某个相关对象被图像边缘剪裁,应该怎么办?
  • 如果他们错误地提交了标签,该怎么处理?

对于边界框,重要的问题包括:

  • 如何为此任务定义边界框? 边界框应是完全位于对象的内部还是外部? 是要尽可能准确地裁剪边界框,还是可以接受一定的间隙?
  • 希望标记程序在定义边界框中应用何种程度的缜密性和一致性?
  • 如何标记图像中部分显示的对象?
  • 如何标记其他对象部分遮盖的对象?

备注

请务必注意,标记程序可以使用编号键 1-9 选择前 9 个标签。

使用 ML 辅助数据标记

在“ML 辅助标记”页中可以触发自动机器学习模型,以加速完成标记任务。 它仅适用于图像标签。 医学图像(“.dcm”)不包含在辅助标记中。

在标记项目的开头,项将按随机顺序排列,以减少潜在的偏差。 但是,数据集中的任何偏差都会反映在训练的模型中。 例如,如果 80% 的项属于单个类,则用于训练模型的大约 80% 的数据将属于该类。 此训练不包括主动学习。

选择“启用 ML 辅助标记”并指定 GPU,以启用由以下两个阶段构成的辅助标记过程:

  • 群集(针对图像标签)
  • 预先标记

启动辅助标记所需的确切标记数据数目不是固定的。 它可能根据标记项目的不同而有很大的差异。 对于某些项目,在手动标记 300 个项后,有时可能会看到预先标记或聚类任务。 ML 辅助标记使用称为“迁移学习”的技术,该技术使用预先训练的模型来直接启动训练过程。 如果数据集的类类似于预先训练的模型中的类,则只有在手动标记数百个项之后,才能使用预先标签。 如果数据集与用于预先训练模型的数据有很大的不同,此时间可能要长得多。

由于最终的标签仍依赖于标记人员的输入,因此,此技术有时称为“人在回路”标记。

备注

ML 辅助数据标记不支持在虚拟网络后面受保护的默认存储帐户。 对于 ML 辅助数据标记,必须使用非默认存储帐户。 可在虚拟网络后面保护非默认存储帐户。

群集功能

提交一定数量的标签后,用于分类的机器学习模型开始将类似的项分组到一起。 这些类似的图像在同一个屏幕上向标记人员显示,以加速完成手动标记。 当标记人员查看包含 4、6 或 9 个图像的网格时,聚类将特别有用。

基于手动标记的数据训练机器学习模型后,该模型将截断至其最后一个完全连接的层。 然后,将在通常称作“嵌入”或“特征化”的流程中通过截断的模型传递未标记的图像。 这会将每个图像嵌入到此模型层定义的某个高维空间。 属于该空间中最近的邻域的图像将用于聚类任务。

对象检测模型或文本分类不会出现聚类分析阶段。

预先标记

提交足够的标签后,将使用分类模型来预测标记。 或者使用对象检测模型来预测边界框。 标记人员现在会看到包含一些页面,其中包含每个项上存在的预测标签。 对于对象检测,还会显示预测框。 接下来的任务是检查这些预测,并更正任何错误标记的图像,然后提交页面。

基于手动标记的数据训练机器学习模型后,将会基于手动标记的项的测试集评估该模型,以根据不同的置信度阈值确定其准确度。 此评估过程用于确定置信度阈值,如果超过该阈值,则表示模型足够准确,可以显示预先标签。 然后,将会根据未标记的数据评估模型。 预测结果的置信度高于此阈值的项将用于预先标记。

初始化数据标记项目

在初始化标记项目后,项目的某些方面是不可变的。 无法更改任务类型或数据集。 可以修改任务说明的标签和 URL。 请在创建项目之前仔细检查设置。 提交项目后,将返回到“数据标记”主页,其中显示项目的状态为“正在初始化”。

备注

此页面可能不会自动刷新。 因此,在暂停后,手动刷新页面会看到项目状态为“已创建”。

运行和监视项目

初始化项目后,Azure 将开始运行该项目。 在“数据标签”主页上选择该项目,以查看项目详细信息

若要暂停或重启项目,请在右上方切换“正在运行”状态。 只能在项目运行时标记数据。

仪表板

“仪表板”选项卡将显示标记任务的进度。

数据标签仪表板

进度图显示已标记的项数以及尚未完成的项数。 挂起的项可能:

  • 尚未添加到任务
  • 包含在分配给标记人员但尚未完成的任务中
  • 处于尚未分配的任务队列中

中间部分显示尚未分配的任务队列。 当 ML 辅助标记处于关闭状态时,此部分显示要分配的手动任务数。 当 ML 辅助标记处于开启状态时,这还会显示:

  • 在队列中包含群集项的任务
  • 在队列中包含预标记项的任务

此外,当 ML 辅助标记处于启用状态时,一个小进度栏会显示下一次训练运行的时间。 “试验”部分提供每个机器学习运行的链接。

  • 训练 - 训练模型以预测标签
  • 验证 - 确定此模型的预测是否将用于预标记项
  • 推理 - 新项的预测运行
  • 特征化 - 群集项(仅适用于图像分类项目)

右侧是已完成的任务的标签分布。 请记住,在某些项目类型中,一个项可以具有多个标签,在这种情况下,总标签数可以大于总项数。

“数据”选项卡

在“数据”选项卡上,可以查看数据集并检查已标记的数据。 如果发现数据标记不正确,可以选择该数据,然后选择“拒绝”,这会删除标签,并将数据放回到未标记队列中。

“详细信息”选项卡

查看项目的详细信息。 在此选项卡中,可以:

  • 查看项目详细信息和输入数据集
  • 启用增量刷新
  • 查看用于在项目中存储已标记的输出的存储容器详细信息
  • 将标签添加到项目
  • 编辑为标签提供的说明
  • 编辑 ML 辅助标记的详细信息,包括启用/禁用

标记人员的访问权限

有权访问工作区的任何人都可以在项目中标记数据。 还可以为标记人员自定义权限,以便他们可以访问标记,但不能访问工作区或标记项目的其他部分。 有关更多详细信息,请参阅管理对 Azure 机器学习工作区的访问权限,并了解如何创建标记人员自定义角色

将新标签类添加到项目

在数据标记过程中,你可能会发现对图像进行分类需要其他标签。 例如,可能需要添加“未知”或“其他”标签来指示含混的图像。

使用以下步骤将一个或多个标签添加到项目:

  1. 在“数据标记”主页上选择该项目。
  2. 在页面右上角,将“正在运行”切换为“已暂停”以使标记人员停止进行其活动。
  3. 选择“详细信息”选项卡。
  4. 在左侧的列表中,选择“标签类”。
  5. 在列表顶部,选择“+ 添加标签”添加标签
  6. 在窗体中添加新标签,然后选择如何继续。 由于已更改可用标签,因此请选择如何处理已标记的数据:
    • 重新开始,同时删除所有现有标签。 如果要从新的完整标签集开始标记,请选择此选项。
    • 重新开始,同时保留所有现有标签。 选择此选项可将所有数据标记为“未标记”,但保留现有标签作为先前标记的图像的默认标记。
    • 继续,同时保留所有现有标签。 选择此选项可以保留所有按原样标记的数据,并开始对尚未标记的数据使用新标签。
  7. 根据需要修改新标签的说明页。
  8. 添加所有新标签后,在页面右上方将“已暂停”切换为“正在运行”以重启项目。

导出标签

使用标记项目的“项目详细信息”页上的“导出”按钮。 随时可以导出标签数据以进行机器学习试验。

在机器学习的“数据集”部分访问导出的 Azure 机器学习数据集。 数据集详细信息页还提供了演示如何从 Python 访问标签的示例代码。

导出的数据集

疑难解答

如果你发现任何以下问题,请使用以下提示。

问题 解决方法
只能使用在 Blob 数据存储中创建的数据集。 这是当前版本的已知限制。
创建后,项目长时间显示“正在初始化”。 手动刷新页面。 初始化应该按每秒大约 20 个数据点的速率继续。 缺少 autorefresh 是一个已知问题。
查看映像时,最近添加标签的映像不显示。 若要加载所有带标签的映像,请选择“第一个”按钮。 按下“第一个”按钮会返回到列表的最前面,但会加载所有带标签的数据。
在为对象检测提供标记时按 Esc 键会在左上角创建大小为零的标签。 在此状态下提交标签会失败。 单击标签旁边的打叉标记来删除该标签。
无法将任务集分配给特定的标记工具。 这是当前版本的已知限制。

后续步骤