提问人:Hack-R 提问时间:6/7/2019 最后编辑:Hack-R 更新时间:6/10/2019 访问量:1056
将 s3 中的图像与 SageMaker 一起使用,而不使用 .lst 文件
Use images in s3 with SageMaker without .lst files
问:
我正在尝试在 s3 和 SageMaker 之间创建(我认为是)一个简单的图像分类管道。
图像存储在 s3 存储桶中,当前文件名中带有类标签,例如
我的-s3-bucket-dir
cat-1.jpg
dog-1.jpg
cat-2.jpg
..
我一直在尝试利用几个相关的示例 .py 脚本,但大多数似乎都是以 .rec 格式下载数据集或包含我没有的特殊清单或注释文件。
我想要的只是将图像从 s3 传递到位于同一区域、IAM 账户等的 SageMaker 图像分类算法。我想这意味着我需要一个文件.lst
当我尝试手动创建时,它似乎不喜欢它,而且手动工作也需要很长时间才能成为一种好的做法。.lst
如何自动生成文件(或以其他方式发送图像/类进行训练)?.lst
我读到的东西听起来像是一个解决方案,但我不明白如何。我现在正在使用的例子是im2rec.py
Image-classification-fulltraining-highlevel.ipynb
但它似乎将数据下载为 ,.rec
download('http://data.mxnet.io/data/caltech-256/caltech-256-60-train.rec')
download('http://data.mxnet.io/data/caltech-256/caltech-256-60-val.rec')
它只是跳过处理 .jpeg 文件。我找到了另一个将它们转换为它们,但它本质上已经是 as 并且只是转换它。.rec
.lst
.json
我主要在 AWS 控制台(在我的浏览器中)使用 Python Jupyter 笔记本,但我也尝试使用他们的 GUI。
如何在不手动创建文件的情况下简单自动地生成或以其他方式将数据/类信息导入 SageMaker?.lst
.lst
更新
看起来 im2py 无法针对 s3 运行。您必须将所有 s3 存储桶中的所有内容完全下载到笔记本的存储中......
请注意,[...] im2rec.py 在本地运行, 因此无法从 S3 存储桶获取输入。生成列表 文件,您需要下载数据,然后使用 IM2REC 工具。- AWS SageMaker 团队
答:
有 3 个选项可以向图像分类算法提供带注释的数据:(1) 在 recordIO 文件中打包标签,(2) 将标签存储在 JSON 清单文件中(“增强清单”选项),(3) 将标签存储在列表文件中。所有选项都记录在此处:https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html。
Augmented Manifest 和 .lst files 选项可以快速完成,因为它们只需要您创建一个通常具有快速循环的注释文件。RecordIO 需要你使用工具,这需要更多的工作。for
im2rec.py
使用 .lst 文件是另一个相当简单的选项:您只需要使用快速 for 循环创建注释,如下所示:
# assuming train_index, train_class, train_pics store the pic index, class and path
with open('train.lst', 'a') as file:
for index, cl, pic in zip(train_index, train_class, train_pics):
file.write(str(index) + '\t' + str(cl) + '\t' + pic + '\n')
评论