发布于: Jun 16, 2022

AI人工智能图片分类训练 实验步骤:

步骤如下:

  1. 将未标注的数据集上传到 S3 上
  2. 在 Sagemaker GroundTruth 中创建一个私有的 Labeling workforce
  3. 创建一个 GroundTruth Labeling job
  4. 使用 GroundTruth 平台来标注图片
  5. 分析结果

1.1.1 下载未标注的数据集:

在这一步中,我们将未标注的数据集下载到本地,然后 upload 到刚刚创建的存储桶中作为 SageMaker GroundTruth 的数据输入。这个数据集中包含 388 个文件,其中包含 6 大分类(Brachiosaurus, Dilophosaurus, Spinosaurus, Stegosaurus, Triceratops and Unknown)。
数据集下载地址:

下载地址1
下载地址2

将未标注的数据集上传到S3上:
在 ap-northeast-1 区域中创建一个 S3 存储桶并给存储桶唯一的命名.(比如,ground-truth-labelling-job-initials-20200112)

  • 将 download 的数据集上传到刚刚创建的桶中。(因为下面的步骤我们需要做人工标注,所以建议将 6 大类的乐高恐龙分别选取 2-3 张作为需要标注的数据集即可)

  • 在设置权限这一步保持默认即可,然后完成设置。

1.1.2 在 GroundTruth 中创建一个私有的 Labeling workforce:

这一步骤中我们将通过 Sagemaker GroundTruth 创建一个图像分类任务在 ap-northeast-1。

  • 打开 Amazon Web Services 控制台 > Amazon SageMaker > 标签工作人员(Labeling workforces)

  • 选择私有(Private)的标签然后创建私有团队(Create private team)

  • 给私有标注的工作组命名

  • 填写一个有效的邮箱地址



  • 创建私有团队

创建私有团队

  • 当创建成功后,我们的邮箱会收到来自于 no-reply@verificationemail.com 发来的验证邮件,这个邮件包含了我们创建 workforce 的用户名和临时密码。

创建 workforce

  • 使用 log in 的连接和临时密码登陆到标注控制台进行标注。
  • 此时会要求我们更改临时密码。
  • 因为我们还没有分配给 worker(我们自己)标注任务,此时标注任务是空的,下一步我们将分配给自己标注乐高恐龙的标注任务。

1.1.3 创建一个 GroundTruth Labeling job:

这一步骤就是我们创建一个标注的任务,然后分配给 workforce。

  • 打开 Amazon Web Services 控制台 > Amazon SageMaker > 标记任务(Labeling jobs)

  • Step 1:指定任务详细信息中:
    —定义任务名称(记住任务名称,我们在notebook中的代码会用到)
    —创建清单文件(manifest),输入 S3 训练数据集的路径,注意要以/结尾。For e.g. : s3:///<prefix/foldername>/

创建 manifest

  • IAM 角色,在测试环境中我们可以允许它访问所有的 S3 bucket,当然我们可以指定它可以访问特定 S3 bucket。

任务类型,我们选择图像分类。

任务类型

  • Step2: 选择工作人员并配置工具
    选择“私有(Private)”>“私有团队(Private teams)在下拉框中我们已经在 1.2 创建过的”>“取消自动标记”>“其他配置中工作人员数量为 1”>“图像分类标记工具中添加 6 个标签:Brachiosaurus, Dilophosaurus, Spinosaurus, Stegosaurus, Triceratops and Unknown”
  • 返回标注作业的页面查看 jobs 的状态,此时我们的邮箱会有 no-reply@verificationemail.com 发来的邮件,内容是分配给我 1 个 jobs 需要完成。

1.1.4 用GroundTruth平台来标注图片:

这一步骤就是人工标注的过程,因为前面我们已经节选出 13 张有代表的图像,我们下面就对这 13 张图像进行标注即可。如下图:
当标注完成后,我们返回到 Sagemaker 平台上。可以跟踪标记任务的状态以及进度。

1.1.5 结果验证:

我们可以用 sublime text 打开在 output中 的 /manifests/output.manifest 文件,它是一个 json 文件包含一些被标记图片的 metadata .比如:

Manifests 格式

图像分类代码
https://ml-jetson-greengrass.s3.cn-north-1.amazonaws.com.cn/sagemaker_image_classification-Copy1.ipynb
注意不要使用参考链接中的 github 上的代码。

1.2.1 下载代码 ipynb 并导入到 SageMaker notebook 中:

这一步我们主要的目的就是通过 Amazon SageMaker notebook 编写训练模型的代码,通过代码来调用云计算的资源,比如机器学习类型的 instance。它将执行数据训练,并将训练和优化好的模型以 Amazon SageMaker Neo 导出。下一步将 Amazon SageMaker Neo 模型部署到 Jetson Nano 的设备上。如果不想对模型进行训练的话可以到参考链接处下载训练好的模型。
这个 notebook 主要是展示端到端机器学习的工作流程

  • 使用 Sagemaker GroundTruth 创建的标签数据集。然后将数据集分为训练和验证。
  • 使用 Sagemaker 容器训练模型
  • 使用 Sagemaker Neo 优化模型

创建 Amazon SageMaker 笔记本

1.2.2 部分代码解析:

  • 在 OUTPUT_MANIFEST 要输入Sagemaker GroundTruth的output 路径,前面的步骤已经验证过 output 的 manifest 的 json 格式。

代码解析-1

  • 在创建 Sagemaker 训练任务的时候,请根据自己数据集训练的个数来调整超参数(hyperparamerter)和训练 instance 的类型(InstanceType)如下:

代码解析-2

  • 在 InputDataConfig 替换 AttributeNames 为自己定义的 name,比如:
    “AttributeNames”: [“source-ref”,”groundtruth-labeling-job-20191209-clone”]
  • 启动训练作业,我们可以在 Sagemaker notebook 中查看到结果,也可以返回到 Sagemaker 控制台的训练任务中看到训练的状态。训练的时间长短取决于训练实例类型、数据集大小、超参数的定义。

Sagemaker notebook 的训练状态

Sagemaker console 的训练状态

  • 通过使用 Sagemaker Neo 来优化压缩模型给终端 Jetson Nano 使用,导出的模型路径我们要记录一下,在下一步骤部署 GreenGrass 的时候会用到。

模型导出

实验小结:

回顾一下我们的 Demo 流程图,我们一起完成了第一部分:图片标注和第二部分模型训练与优化。下一章是我们的另一个重点,开始构建边缘环境与执行边缘推理。

 Amazon Web Services EI Demo 流程图

相关文章