Azure ML 机器学习: 将`.jsonl`格式文件以及对应的图像数据上传至Azure Datastore,并且注册至Azure Datasets

Azure ML: 将 .jsonl 格式文件以及对应的图像数据上传至Azure Datastore,并且注册至Azure Datasets

解释如何将.jsonl格式文件以及对应的图像数据上传至Azure Datastore,并且注册至Azure Datasets中(注:此场景主要发生在通过 Azure AutoML 训练/部署图像分类,物体识别任务时,需将训练图像集对应的标签文件转化为.jsonl文件后,再将图像以及标签数据上传并注册,用以模型运行与验证使用)。



1 Azure Datasets 和 Azure Datastore 概念

回忆一下,当我们新建一个Azure Machine Learning Workspace的时候,需要链接或者新建一个Azure Storage账户(用以保存数据),一个Azure Key Vault账户(用以保存密码),一个Azure Application insights账户(一些monitoring功能),以及一个Azure Container Registry账户(保存Container及其相关)。

在这里插入图片描述

1.1 Azure Datastore

在Azure Machine Learning中,Azure Datastore是对Azure Storage的引用。每个Azure ML Workspace都有一个默认的数据存储区域,就是我们刚创建Workspace的时候链接的Azure Storage账户。

下面是我们通过workspace.get_default_datastore()返回的datastore实例:

{
  "name": "XXX",
  "container_name": "XXX",
  "account_name": "XXX",
  "protocol": "XXX",
  "endpoint": "XXX"
}

注意,这里container_name指的是Azure Storage Container Name。

所以说,我们可以通俗意义上把Azure Datastore和Azure Storage划约等号。

1.2 Azure Datasets

上面提到的Azure Datastore是我们这个Azure ML Workspace存储数据的引用,那么Azure Datasets 就是具体的数据集的引用了。需要注意的是,Azure Datasets并不是指一个数据集,实际上它有两种类型:FileDatasetTabularDataset,具体取决于用户在训练中使用它们的方式。 这两种类型均可用于涉及估算器、AutoML、hyperDrive 和管道的 Azure 机器学习训练工作流。

下面是我们通过Dataset.get_by_name返回的dataset实例:

TabularDataset
{
  "source": [
    "('workspaceblobstore', 'XXX')"
  ],
  "definition": [
    "GetDatastoreFiles",
    "ReadParquetFile",
    "DropColumns"
  ],
  "registration": {
    "id": "XXX",
    "name": "XXX",
    "version": 2,
    "workspace": "XXX"
  }
}

当我们进入Azure Machine Learning Studio,打开Datasets这栏,我们就能看到注册成功的Azure Datasets,比如下图:

在这里插入图片描述

2 .jsonl格式标签文件

我们训练数据集的标签文件通常以VOC或COCO的格式,我们需要先把标签格式转化为.jsonl。这里我们不描述转化的过程。.jsonl格式的文件如下所示:

{
    "image_url": "AmlDatastore://image_data/Image_01.png",
    "image_details":
    {
        "format": "png",
        "width": "2230px",
        "height": "4356px"
    },
    "label":
    {
        "label": "cat",
        "topX": "1",
        "topY": "0",
        "bottomX": "0",
        "bottomY": "1",
        "isCrowd": "true",
    }
}
{
    "image_url": "AmlDatastore://image_data/Image_02.png",
    "image_details":
    {
        "format": "jpeg",
        "width": "1230px",
        "height": "2356px"
    },
    "label":
    {
        "label": "dog",
        "topX": "0",
        "topY": "1",
        "bottomX": "0",
        "bottomY": "1",
        "isCrowd": "false",
    }
}

3 jsonl文件的上传与注册

为了在图像分类/物体识别中使用AutoML,我们需要首先将图像数据集标签从其他格式转换为.jsonl格式。然后上传并注册到Azure Datastore以及Azure Datasets

首先,我们将所有图像和数据上传到Azure Datastore

# Retrieving default datastore that got automatically created when we setup a workspace
ds = ws.get_default_datastore()
ds.upload(src_dir="./[localFolderName]", target_path="[azureStorageFolderName]")

当我们运行上述代码后,我们会发现,在./[localFolderName]路径下所有的文件都会保存到这个Workspace链接的Azure Storage账号,[azureStorageFolderName]文件夹路径下。

然后,我们需要创建一个AzureML Tabular Dataset,从我们上传到Azure Datastore的数据中。这里,我们上传一个训练数据集以及一个名为train_annotations.jsonl的标签文件到Azure Datasets,并命名为odTrainingDataset

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

# get existing training dataset
training_dataset_name = "odTrainingDataset"
training_dataset = Dataset.Tabular.from_json_lines_files(
        path=ds.path("odObjects/train_annotations.jsonl"),
        set_column_types={"image_url": DataType.to_stream(ds.workspace)},
    )
training_dataset = training_dataset.register(
    workspace=ws, name=training_dataset_name
)

运行成功后,我们就能在Azure Machine Learning Studio里的Datasets中看到一个新建的数据集,名为odTrainingDataset

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

破浪会有时

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值