使用自动化机器学习来准备用于计算机视觉任务的数据

适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)

重要

支持在 Azure 机器学习中使用自动化 ML 训练计算机视觉模型是一项实验性公共预览功能。 某些功能可能不受支持或者受限。 有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

在本文中,你将了解如何准备图像数据,以便在 Azure 机器学习中使用自动化机器学习来训练计算机视觉模型。

要使用自动化机器学习来生成用于计算机视觉任务的模型,需要以 MLTable 的形式引入标记的图像数据作为模型训练的输入。

可以从 JSONL 格式的已标记训练数据创建一个 MLTable。 如果标记的训练数据采用不同的格式(例如 pascal VOC 或 COCO),则可以使用转换脚本先将其转换为 JSONL,然后创建一个 MLTable。 也可以使用 Azure 机器学习的数据标记工具手动标记图像,并导出用于训练 AutoML 模型的标记数据。

先决条件

获取标记的数据

若要使用 AutoML 训练计算机视觉模型,需要首先获取标记的训练数据。 图像需要上传到云,标签注释需要采用 JSONL 格式。 可以使用 Azure 机器学习数据标签工具来标记数据,也可以一开始就采用经过预先标记的图像数据。

使用 Azure 机器学习数据标签工具来标记训练数据

如果没有预标记的数据,可以使用 Azure 机器学习的数据标记工具来手动标记图像。 该工具会自动生成接受格式的训练所需的数据。

此工具有助于创建、管理和监视数据标签任务以实现以下目的

  • 图像分类(多类和多标签)
  • 对象检测(范围框)
  • 实例分段(多边形)

如果已有要使用的标记数据,则可以将标记的数据导出为 Azure 机器学习数据集,然后在 Azure 机器学习工作室中的“数据集”选项卡下访问数据集。 然后,可以使用 azureml:<tabulardataset_name>:<version> 格式将这个已导出的数据集作为输入传递。 下面是一个示例,说明了如何将现有数据集作为训练计算机视觉模型的输入进行传递。

适用于:Azure CLI ml 扩展 v2(当前版本)

training_data:
  path: azureml:odFridgeObjectsTrainingDataset:1
  type: mltable
  mode: direct

从本地计算机使用预先标记的训练数据

如果已有要用于训练模型的标记数据,则需要将映像上传到 Azure。 可以将映像上传到 Azure 机器学习工作区的默认 Azure Blob 存储,并将其注册为数据资产

以下脚本将本地计算机上的图像数据上传到 Azure Blob 存储中的数据存储的路径“./data/odFridgeObjects”。 然后,它在 Azure 机器学习工作区中创建名为“fridge-items-images-object-detection”的新数据资产。

如果 Azure 机器学习工作区中已存在名为“fridge-items-images-object-detection”的数据资产,它会更新数据资产的版本号,并将其指向上传了图像数据的新位置。

适用于:Azure CLI ml 扩展 v2(当前版本)

请创建一个具有以下配置的 .yml 文件。

$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: fridge-items-images-object-detection
description: Fridge-items images Object detection
path: ./data/odFridgeObjects
type: uri_folder

若要将图像作为数据资产上传,请使用 .yml 文件的路径、工作区名称、资源组和订阅 ID 运行以下 CLI v2 命令。

az ml data create -f [PATH_TO_YML_FILE] --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]

如果你已有现有数据存储中的数据,想要从中创建数据资产,则可通过提供数据存储中数据的路径而不是提供本地计算机的路径来执行此操作。 将上述代码更新为以下代码片段。

适用于:Azure CLI ml 扩展 v2(当前版本)

请创建一个具有以下配置的 .yml 文件。

$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: fridge-items-images-object-detection
description: Fridge-items images Object detection
path: azureml://subscriptions/<my-subscription-id>/resourcegroups/<my-resource-group>/workspaces/<my-workspace>/datastores/<my-datastore>/paths/<path_to_image_data_folder>
type: uri_folder

接下来,需要获取 JSONL 格式的标签注释。 已标记数据的架构取决于手头的计算机视觉任务。 请参阅 AutoML 计算机视觉试验的 JSONL 文件的架构,详细了解每个任务类型所需的 JSONL 架构。

如果你的训练数据采用不同的格式(例如 pascal VOC 或 COCO),则可使用笔记本示例中提供的帮助程序脚本,将数据转换为 JSONL。

按照上述步骤创建 jsonl 文件后,可以使用 UI 将其注册为数据资产。 请确保在架构部分选择 stream 类型,如此动画所示。

动画显示如何从 jsonl 文件注册数据资产

使用 Azure Blob 存储中的预先标记的训练数据

如果 Azure Blob 存储的容器中存在标记的训练数据,则可以通过创建引用该容器的数据存储直接从那里访问这些数据。

创建 MLTable

标记 JSONL 格式的数据后,可以使用它创建 MLTable,如此 yaml 代码片段所示。 MLtable 会将数据打包为一个可供训练使用的对象。

paths:
  - file: ./train_annotations.jsonl
transformations:
  - read_json_lines:
        encoding: utf8
        invalid_lines: error
        include_path_column: false
  - convert_column_types:
      - columns: image_url
        column_type: stream_info

然后,你可以传入 MLTable,作为 AutoML 训练作业的数据输入

后续步骤