首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >S3中对多幅图像进行推理的最佳方法?

S3中对多幅图像进行推理的最佳方法?
EN

Stack Overflow用户
提问于 2018-04-26 18:39:35
回答 2查看 2.7K关注 0票数 0

我用内置的RESnet18坞映像训练了一个模型,现在我想将模型部署到端点,并对大约100万张图像进行分类。我在S3上以RecordIO格式存储了所有的培训、验证和测试图像(与im2rec.py转换)。根据文档

亚马逊SageMaker图像分类算法支持RecordIO (应用程序/x-记录)和图像(应用程序/x-图像)内容类型进行培训。该算法只支持更好的应用/x图像进行推理。

因此,我不能用RecordIO格式对我的训练数据进行推断。为了克服这一问题,我将所有原始的.jpg映像(~ 2GB)复制到我的实例中,并通过以下方式一次进行一次推理:

代码语言:javascript
复制
img_list = os.listdir('temp_data') # list of all ~1,000,000 images

for im in img_list:
    with open('temp_data/'+im, 'rb') as f:
        payload = f.read()
        payload = bytearray(payload)
    response = runtime.invoke_endpoint(EndpointName=endpoint_name, 
                                       ContentType='application/x-image', 
                                       Body=payload)

    etc...

不用说,将所有数据传输到我的Notebook实例需要花费很长时间,而且在运行推断之前,我希望不必这样做。为什么SageMaker图像分类不支持RecordIO进行推理?更重要的是,在不需要将图像从S3中移开的情况下,对许多图像运行推断的最佳方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-12 04:22:35

RecordIO格式被设计成将大量图像打包到一个文件中,所以我认为它对预测单个图像不太好。

当涉及到预测时,您肯定不必将图像复制到笔记本实例或S3。您只需从任何地方加载它们,并在您的预测请求中将它们内联。

如果您想要基于HTTP的预测,下面是您的选项:

1)在任何计算机上使用SageMaker SDK Predictor.predict() API (只要它具有正确的Predictor.predict凭据) https://github.com/aws/sagemaker-python-sdk

2)在任何机器上使用AWS (又名boto3) API invoke_endpoint() (只要它具有正确的AWS凭据)

您甚至可以构建一个简单的服务来使用Lambda执行预处理或后处理。下面是一个例子:https://medium.com/@julsimon/using-chalice-to-serve-sagemaker-predictions-a2015c02b033

如果您想要批处理预测:最简单的方法是从SageMaker中检索经过训练的模型,编写几行特殊的MXNet代码来加载它并运行所有预测。下面是一个例子:image.html

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2018-07-17 18:09:48

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50049928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档