标记用于机器学习的训练数据

教程

概览

在本教程中,学习如何在 Amazon SageMaker Ground Truth 中设置标注作业,以便为您的机器学习(ML)模型注释训练数据。

标记的数据集对有监督的 ML 模型训练至关重要。很多企业都有大量数据集,但缺少与数据关联的标签。使用 Amazon SageMaker Ground Truth,您可以选择借助人工标注人员,通过 Amazon Mechanical Turk、第三方供应商或您自己的专门团队轻松标记数据。 

在本教程中,您会使用 SageMaker Ground Truth 来标记一系列交通工具图像,包括飞机、汽车、渡轮、直升机和摩托车等。由于本教程使用非敏感型数据集,因此您可以选择 Amazon Mechanical Turk 选项。

您将学到的内容

在本指南中,您将:

  • 创建并配置数据标注作业
  • 审核标注作业的结果

先决条件

在开始学习本指南之前,您需要:

  • 一个 AWS 账户:如果您还没有账户,请遵循设置 AWS 环境入门指南中的说明获取快速概览。 

 AWS 使用经验

新手

 完成时间

30 分钟

 所需费用

请参阅 SageMaker 定价估算此教程的费用。

 需要

您必须登录 AWS 账户。

 使用的服务

Amazon SageMaker Ground Truth

 上次更新日期

2022 年 7 月 6 日

实施

第 1 步:设置 Amazon SageMaker 笔记本电脑实例

在 AWS 管理控制台搜索栏中,输入 SageMaker,然后选择 Amazon SageMaker 以打开 SageMaker 控制台。

在左侧导航窗格中,单击 “Notebook”(笔记本)。  选择 Notebook instances(笔记本实例),然后选择 Create notebook instance(创建笔记本实例)。

Create notebook instance(创建笔记本实例)页面的 Notebook instance settings(笔记本实例设置)框下方,为 Notebook instance name(笔记本实例名称)输入 SageMaker-Ground-Truth-Tutorial。对于 Notebook instance type(笔记本实例类型),选择 ml.t2.medium。 

Permissions and encryption(权限和加密)部分,为 IAM role(IAM 角色)选择 Create a new role(创建新角色)。 IAM role(IAM 角色)对话框中,选择 Any S3 bucket(任意 S3 桶)并选择 Create role(创建角色)。最佳做法是,在生产环境中以所需的最低权限限制 S3 桶对特定 IAM 角色的访问。记住此角色名称,它将被用于最后的清理。

SageMaker 将创建 AmazonSageMaker-ExecutionRole-<role-id> 角色。保留其余设置的默认设置,然后选择 Create notebook instance(创建笔记本实例)。

Notebook instances(笔记本实例)部分,新创建的 SageMaker-Ground-Truth-Tutorial 笔记本实例的状态将显示为 Pending。当状态变更为 InService 时,笔记本即可使用。

第 2 步:创建标注作业

本教程中待标记的示例图像取自公开的 Caltech 101 数据集(Li, F.-F., Andreeto, M., Ranzato, M. A., & Perona, P.(2022).Caltech 101 (Version 1.0) [Data set].CaltechDATA),它包含 101 个对象类别的图片。要最大限度降低本教程的成本,您要使用由 10 张图像的样本;从以下类别中各取两张图像:飞机、汽车、渡轮、直升机和摩托车。但为较大型数据集启动标注作业的步骤与本教程中的步骤相同。10 张样本图像位于 Amazon S3 桶 sagemaker-sample-files

在这一步中,您要使用您的 SageMaker 笔记本实例来编写 Python 代码,将样本图像从 sagemaker-sample-files S3 桶上传到您的默认 S3 桶 sagemaker-<your-Region>-<your-aws-account-id>SageMaker-Ground-Truth-Tutorial 笔记本实例状态更改为 InService 以后,选择 Open Jupyter(打开 Jupyter)。

Jupyter notebook 中,为 New(新建)选择 conda_python3

单击 Untitled.ipynb 以打开笔记本。在 Jupyter notebook 的新代码单元格中,复制并粘贴以下代码,然后运行该单元格。

import sagemaker

sess = sagemaker.Session()
bucket = sess.default_bucket()

!aws s3 sync s3://sagemaker-sample-files/datasets/image/caltech-101/inference/ s3://{bucket}/ground-truth-demo/images/

print('Copy and paste the below link into a web browser to confirm the ten images were successfully uploaded to your bucket:')
print(f'https://s3.console.aws.amazon.com/s3/buckets/{bucket}/ground-truth-demo/images/')

print('\nWhen prompted by Sagemaker to enter the S3 location for input datasets, you can paste in the below S3 URL')

print(f's3://{bucket}/ground-truth-demo/images/')

print('\nWhen prompted by Sagemaker to Specify a new location, you can paste in the below S3 URL')

print(f's3://{bucket}/ground-truth-demo/labeled-data/')

在成功运行代码以后,打开 Amazon S3 控制台并导航至 sagemaker-<your-Region>-<your-aws-account-id>/ground-truth-demo/images 位置,确认十张图像已上传。

打开 SageMaker 控制台。在左侧导航窗格中,选择 Ground TruthLabeling jobs(标注作业)。然后选择 Create labeling job(创建标注作业)。

Specify job details(指定作业详细信息)页面的 Job overview(作业概览)下方,输入 vehicle-labeling-demoJob name(作业名称)框。在 Input data setup(输入数据设置)下方,选择 Automated data setup(自动数据设置)。 

您可以在 SageMaker Ground Truth 控制台中使用存储在 Amazon S3 中的图像、视频、视频帧、文本(.txt)文件和以逗号分隔的值(.csv)文件,并通过自动数据设置为您的标注作业创建清单文件。当使用自动数据设置时,您要指定存储输入数据的 Amazon S3 位置,并指定输入数据类型,SageMaker Ground Truth 会查找与您在该位置中指定的类型匹配的文件。

Data setup(数据设置)部分:对于 S3 location for input datasets(用于输入数据集的 S3 位置),选择 Browse S3(浏览 S3),然后选择 S3 位置 s3://sagemaker-<your-Region>-<your-aws-account-id>/ground-truth-demo/images/(您在上一步中将图像上传到该位置)。 对于 S3 location for output datasets(用于输出数据集的 S3 位置),选择 Specify a new location(指定新位置)。然后,指定要存储标记图像的路径:s3://sagemaker-<your-Region>-<your-aws-account-id>/ground-truth-demo/labeled-data/。 对于 Data type(数据类型),选择 Image(图像)。 对于 IAM Role(IAM 角色),选择 Create a new role(创建新角色)。 或者,您可以使用来自我们早前所运行 Jupyter notebook 的 print 语句的对应值。

Create an IAM role(创建 IAM 角色)弹出提示中,选择 Any S3 bucket(任意 S3 桶),然后选择 Create(创建)。

SageMaker Ground Truth 会自动创建 IAM 角色,并将它输入到 IAM Role(IAM 角色)框。 选择 Complete data setup(完成数据设置)。确认消息 Input data connection was successful(输入数据连接已成功)将会出现。

Task type(任务类型)部分,为 Task category(任务类别)选择 Image(图像)。对于 Task selection(任务选择),选择 Image Classification (Single Label)(图像分类(单个标签)),然后选择 Next(下一步)。

Select workers and configure tool(选择工作人员并配置工具)部分中,对于Worker types(工作人员类型),选择 Amazon Mechanical Turk。

选择 The dataset does not contain adult content(数据集不包含成人内容)。 

选择 You understand and agree that the Amazon Mechanical Turk workforce consists of independent contractors located worldwide and that you should not share confidential information, personal information or protected health information with this workforce(您了解并同意 Amazon Mechanical Turk 工作团队由分布在世界各地的独立合约商组成,而且您不得与该工作团队分享机密信息、个人信息或受保护的健康信息。)

 

Image classification (Single Label) labeling tool(图像分类(单个标签)标记工具)部分中,输入以下信息:

对于 brief description of task(任务的简短描述),输入 Please select the label that best matches the image below(请在下方选择与图像最匹配的标签)。您可以为每张图像仅选择 1 个标签。

对于 Select an option(选择选项),在单独的框中输入以下标签:Airplane(飞机)、Car(汽车)、Ferry(渡轮)、Helicopter(直升机)、Motorbike(摩托车)。

展开 Additional instructions(其他说明),添加以下文本到第 3 步:If there are multiple vehicles in a single image, choose the most prominent vehicle in the image(如果一张图像中有多个交通工具,请选择在图像中最突出的交通工具)。

要了解标注人员将看到怎样的标记工具,请选择 Preview(预览)。 

选择 Create(创建)。

新的 vehicle-labeling-demo 标注作业被列在 SageMaker 控制台 Labeling jobs(标注作业)部分的下方,其 Status(状态)为 In progressTask type(任务类型)为 Image Classification (Single Label)(图像分类(单个标签))。标注作业可能需要几分钟才能完成。 在 Amazon Mechanical Turk 公共工作人员标记数据后,状态变为 Complete

第 3 步 – 审核标注作业结果

审核标注作业结果对评估标记质量以及确定您是否需要优化说明和数据来说十分重要。

在 SageMaker 控制台的左侧导航窗格中,选择 Labeling jobs(标注作业),然后选择 vehicle-labeling-demo

 

vehicle-labeling-demo 详细信息页面上,Labeled dataset objects(标记数据集对象)部分将显示您的数据集图像的缩略图,并以对应标签作为标题。

 

要评估标注作业的完整结果,请在 Labeling job summary(标注作业摘要)部分中,选择 Output dataset location(输出数据集位置)链接。

选择 manifests(清单)、output(输出)、output.manifest

 

选择 Open(打开),以 JSON Lines 格式下载标记结果。JSON Lines 是以换行符分隔的格式,可存储结构化数据且每一行都是有效的 JSON 值。

 

output.manifest 清单包括以下数据: 

source-ref:在输入清单文件中指定图像条目的位置。由于您在第 2 步中选择了 Automated data setup(自动数据设置),Amazon SageMaker Ground Truth 已自动创建这些条目以及输入清单文件。

vehicle-labeling-demo:使用从 0 开始的编号数值来指定目标标签。针对此示例中的五个图像分类,标签分别为 0、1、2、3、4。

vehicle-labeling-demo-metadata:指定标记元数据,如置信度评分、作业名称、标签字符串名称(例如,飞机、汽车、渡轮、直升机和摩托车),以及人工或机器注释(主动学习)。

您可以解析 output.manifest 以便为下游应用程序创建标记数据集,如图像分类等。有关如何在 Amazon SageMaker 中使用 output.manifest 文件来训练模型的更多信息,请参阅使用 SageMaker Ground Truth 标记的数据集轻松训练模型博客文章。

第 4 步:清理资源

最佳实践是删除您不再使用的资源,以免产生意外费用。

要删除 S3 桶,请执行以下操作: 

  • 打开 Amazon S3 控制台。在导航栏上,选择 Buckets(桶)、sagemaker-<your-Region>-<your-account-id>,然后选择 ground-truth-demo 旁的复选框。然后选择 Delete(删除)。 
  • Delete objects(删除对象)对话框中,确认您是否已选中要删除的正确对象,并在 Permanently delete objects(永久删除对象)确认框中输入 permanently delete

在 AWS 管理控制台搜索栏中输入 IAM 并选择 IAM,以打开 AWS IAM 控制台。在 IAM 控制台的左侧导航窗格中,选择 Roles(角色)。要搜索用于本教程的 IAM 角色,在搜索栏中输入 Amazon。在 Role name(角色名称)下方,选择角色,然后选择 Delete(删除)。注意,此操作需要与您的账户关联的管理员权限。

要打开 SageMaker 控制台,在 AWS 管理控制台的搜索栏中输入 SageMaker,然后从搜索结果中选择 Amazon SageMaker。 在 SageMaker 控制台的左侧窗格中,选择 Notebook instances(笔记本实例),然后选择 SageMaker-Ground-Truth-Tutorial。对于 Actions(操作),选择 Stop(停止)。

实例状态更改为 Stopped 以后,选择 Actions(操作),然后选择 Delete(删除)。在确认弹出提示中选择 Delete(删除)。

结论

恭喜! 您已完成标记用于机器学习的训练数据教程。 

在本教程中,您使用 Amazon SageMaker Ground Truth 和 Amazon Mechanical Turk 为机器学习构建了训练数据集。 

您可以按照下面的步骤使用 Amazon SageMaker 继续机器学习之旅。

此页内容对您是否有帮助?

自动创建 ML 模型

了解如何使用 AutoML 在不编写代码的情况下开发 ML 模型。
下一步 »

部署经过训练的模型

了解如何部署经过训练的 ML 模型以进行推理。
下一步 »

查找更多操作教程

探索其他机器学习教程以进行深入了解。
下一步 »