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

适用于:Azure CLI ml 扩展 v2 (当前版本)Python SDK azure-ai-ml v2 (当前版本)

重要

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

本文介绍如何在 Azure 机器学习 中使用 自动机器学习为训练计算机视觉模型准备图像数据。 若要使用自动化机器学习为计算机视觉任务生成模型,需要将标记的图像数据以MLTable形式作为输入进行模型训练。

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

先决条件

获取标记的数据

若要使用 AutoML 训练计算机视觉模型,需要标记训练数据。 将图像上传到云。 标签批注需要采用 JSONL 格式。 可以使用Azure 机器学习数据标记工具标记数据,也可以从预标记的图像数据开始。

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

如果没有预标记数据,可以使用Azure 机器学习的数据标记工具手动标记图像。 该工具会自动生成符合要求格式的训练所需数据。 有关详细信息,请参阅设置图像标记项目

此工具可帮助创建、管理和监视以下数据标签任务:

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

如果已标记要使用的数据,请将该标记的数据导出为数据资产,并在Azure 机器学习工作室的 Data 节下对其进行访问。 可以使用azureml:<data_asset_name>:<version>格式将此导出的数据资产作为输入传递。 有关详细信息,请参阅导出标签

下面是一个示例,说明了如何将现有数据集作为训练计算机视觉模型的输入进行传递。

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

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

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

如果标记了要用于训练模型的数据,请将图像上传到Azure。 可以将图像上传到Azure 机器学习工作区的默认Azure Blob 存储。 将其注册为数据资产。 有关详细信息,请参阅创建和管理数据资产

以下脚本将本地计算机上的映像数据上传到路径 ./data/odFridgeObjects 到 Azure Blob 存储 中的数据存储。 然后,它会在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

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

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 格式的标签批注。 已标记数据的架构取决于手头的计算机视觉任务。 若要详细了解每种任务类型所需的 JSONL 架构,请参阅使用自动化机器学习训练计算机视觉模型的数据架构

如果训练数据采用不同的格式(如 pascal VOC 或 COCO),helper 脚本可将数据转换为 JSONL。 这些脚本在 notebook 示例中提供

创建 .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 训练作业。 有关详细信息,请参阅设置 AutoML 以训练计算机视觉模型