如何访问 azureml FileDataSet 中的文件(图像)?

How can I access files (images) in an azureml FileDataSet?

我已将一个大 (10+gb) 数据集上传到 Azure Blob 存储中,其中包含数千张图像 (jpg) 格式。
我在 Azure 机器学习服务中将 blob 容器注册为数据存储,我还注册了一个文件数据集,指向包含图像的实际 blob 容器。 (显示有 44440 张图片)。

现在,我想要 运行 一个需要读取特定图像并将其加载到图像中的笔记本(在 AzureML 中)(使用 cv2.imread())。但是,我似乎没有为此找到合适的文档...我看到的唯一选择是将整个数据集下载到本地临时存储中,我不想这样做(多个千兆字节)。

有没有我可以用来访问实际文件引用并将其传递给我的第 3 方方法的选项?

您可以在下面找到一些相关的代码:

# get workspace and datastore
ws = Workspace.from_config()
dstore = ws.datastores[datastore_name]
image_dataset = ws.datasets[image_dataset_name]

mounted_images = image_dataset.mount() 

img = cv2.imread(mounted_images['my_file_name.jpg']) # this will not work

知道如何让它发挥作用吗?

谢谢

dataset.mount() 实际上 returns 一个具有 mount_point 属性的 MountContext。

所以:

img = cv2.imread(mounted_images.mount_point +'/my_file_name.jpg')

应该可以正常工作。

关于 Daniel 回答的额外注释。装载数据集时,将数据集引用的文件附加到目录(装载点)并使其在计算目标上可用。安装操作本身几乎是即时的,它只会在处理时加载脚本使用的部分数据(在您的情况下为 'my_file_name.jpg')。

用这种方式试试mount_text

with dataset.mount() as mount_context:
    print(os.listdir(mount_context.mount_point))

这里我挂载了10k的高分辨率图片。

%%time
with dataset.mount() as mount_context:
    print(os.listdir(mount_context.mount_point))