如何在Azure ML Studio将带分类子文件夹的图片上传至Azure Blob Storage
方案1:使用Azure存储资源管理器(Storage Explorer)上传(最推荐)
这是最简便的保留文件夹结构的方法,操作步骤如下:
- 下载安装Azure Storage Explorer,绑定你的Azure账号后,找到Azure ML工作区关联的Blob存储容器(默认容器名称一般为
azureml-blobstore-<工作区UUID>) - 直接在容器内创建你需要的
Main_folder根目录,然后把本地整段的分类子文件夹拖拽到该根目录下即可,上传过程会100%保留原始的嵌套文件夹结构 - 上传完成后,回到Azure ML Studio的数据集创建页面,选择「从数据存储中选择」,类型选择文件数据集,直接定位到刚才上传的
Main_folder路径创建即可,不会修改原有结构,后续挂载数据集后可以直接把路径传入flow_from_directory()使用
方案2:通过Azure ML Python SDK上传
如果需要批量自动化上传,可以用SDK实现结构保留:
- 首先安装azureml-core包,连接到你的工作区:
from azureml.core import Workspace, Datastore ws = Workspace.from_config() datastore = ws.get_default_datastore()
- 调用
upload()方法时指定对应参数,原生支持保留子文件夹结构:
datastore.upload( src_dir="本地的Main_folder绝对路径", target_path="Main_folder", # Blob上的目标存储路径 overwrite=False, show_progress=True )
- 上传完成后按目标路径创建文件数据集即可。
替代方案(无法调整上传结构时使用)
如果已经将所有图片上传到了根目录,也可以不用重新上传,适配flow_from_directory()的要求即可:
- 读取所有图片的路径和对应的分类标签(从原始文件名、或者本地留存的分类映射表提取分类名)
- 在训练计算环境的临时存储中,按分类名称创建子文件夹,通过软链接指向实际的Blob文件路径,构造出符合
flow_from_directory()要求的目录结构,软链接创建几乎不占用额外存储空间,执行效率很高。
内容的提问来源于stack exchange,提问作者Shora Dehkordi
相关产品推荐
相关产品推荐

