Compartir a través de

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

适用于:Python SDK azureml v1

重要

本文中的一些 Azure CLI 命令使用适用于 Azure 机器学习的 azure-cli-ml 或 v1 扩展。 对 v1 扩展的支持将于 2025 年 9 月 30 日结束。 在该日期之前,你将能够安装和使用 v1 扩展。

建议在 2025 年 9 月 30 日之前转换为 ml 或 v2 扩展。 有关 v2 扩展的详细信息,请参阅 Azure ML CLI 扩展和 Python SDK v2

重要

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

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

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

为确保你的 TabularDataset 包含可接受的架构以供自动化机器学习使用,你可以使用 Azure 机器学习数据标记工具或使用转换脚本。

先决条件

Azure 机器学习数据标记

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

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

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

如果你已经有一个数据标记项目并且想要使用该数据,则可以将标记数据导出为 Azure 机器学习 TabularDataset,然后可以直接与自动化机器学习一起使用来训练计算机视觉模型。

使用转换脚本

如果已使用常用的计算机视觉数据格式(如 VOC 或 COCO)标记数据,笔记本示例中提供了帮助程序脚本以生成用于训练和验证数据的 JSONL 文件。

如果你的数据不遵循前面提到的任何格式,你可以使用自己的脚本生成 JSON Lines 文件。 若要生成 JSON Lines 文件,请使用 AutoML 映像试验的 JSONL 文件架构中定义的架构。

将数据文件转换为接受的 JSONL 格式后,就可将它们上传到 Azure 上的存储帐户。

将 JSONL 文件和图像上传到存储

要将数据用于自动机器学习训练,请通过数据存储将数据上传到 Azure 机器学习工作区。 数据存储提供了一种用于上传/下载数据到 Azure 上的存储以及从远程计算目标与其交互的机制。

将包含图像和 JSONL 文件的整个父目录上传到在创建工作区时自动创建的默认数据存储。 此数据存储连接到默认 Azure blob 存储容器,该容器是在创建工作区的过程中创建的。

# Retrieve default datastore that's automatically created when we setup a workspace
ds = ws.get_default_datastore()
ds.upload(src_dir='./fridgeObjects', target_path='fridgeObjects')

数据上传完成后,可以创建 Azure 机器学习 TabularDataset。然后,将数据集注册到工作区,以供将来用作计算机视觉模型的自动化 ML 试验的输入。

from azureml.core import Dataset
from azureml.data import DataType

training_dataset_name = 'fridgeObjectsTrainingDataset'
# create training dataset
training_dataset = Dataset.Tabular.from_json_lines_files(path=ds.path("fridgeObjects/train_annotations.jsonl"),
                                                         set_column_types={"image_url": DataType.to_stream(ds.workspace)}
                                                        )
training_dataset = training_dataset.register( workspace=ws,name=training_dataset_name)

print("Training dataset name: " + training_dataset.name)

后续步骤