SageMaker TensorFlow对象检测模型-600学习网

600学习网终身会员188,所有资源无秘无压缩-购买会员

本文描述了如何在Amazon SageMaker中使用TensorFlow对象检测模型API来实现这一点。

首先,基于AWS示例笔记本,我们将解释如何使用SageMaker端点在单个图像上运行模型。对于较小的图像,这种方法是可行的,但对于较大的图像,我们会遇到问题。

要解决这些问题,请改用批处理转换作业。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

起点:使用SageMaker TensorFlow对象检测API进行模型推断

AWS提供了一些GitHub如何使用SageMaker的好例子。

使用此示例可以使用TensorFlow对象检测API预测对象检测模型:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

将模型部署为端点时,可以通过调用端点,使用模型一次推断一个图像。此代码取自示例笔记本,展示了如何定义TensorFlowModel并将其部署为模型端点:

导入cv2

进口香肠制造商

从sagemaker.utils导入名称

从sagemaker.tensorflow导入TensorFlowModel

角涩=圣人。获取_执行_角涩()

模型_人工制品=’<你的-模型-s3-路径>’

模型_端点=TensorFlowModel(

name=name_来自_base(‘tf2-object-detection’)

模型_数据=模型_人工制品

角涩=角涩

framework_版本=’2.2′

)

predictor=model_endpoint.deploy(初始_实例_计数=1,实例_类型=’ml.m5.large’)

然后,将图像作为NumPy数组加载,并将其解析为列表,以将其传递给端点:

def image_file_to_张量(路径):

cv_img=cv2.imread(路径,1).astype(‘uint8’)

cv_img=cv2.cvtColor(cv_2img,cv2.COLOR_BGR2RGB)

返回简历_ img

img=图像_文件_到_张量(‘test _ images/22673445.jpg’)

输入={

“实例”:〔img.tolist()〕

最后,调用端点:

检测=预测器.预测(输入)〔”预测”〕〔0〕

问题:终结点请求负载大小太大

这在使用小图像时很好,因为API调用的请求负载足够小。但是,当使用较大的图像时,API返回413错误。这意味着有效负载超过了允许的6MB大小。

当然,我们可以在调用端点之前调整图像大小,但我想使用批处理转换作业。

解决方案:改用批处理转换作业

使用SageMaker批处理转换作业,您可以定义自己的最大负载大小,这样我们就不会遇到413个错误。其次,这些作业可以用于一次处理一组完整的图像。

图像需要存储在S3存储桶中。所有图像都以批处理模式处理(名称中的内容),预测也存储在S3中。

为了使用批处理转换作业,我们再次定义了TensorFlowModel,但这次我们还定义了入口点和源目录:

型号_批次=TensorFlowModel(

name=name_来自_base(‘tf2-object-detection’)

模型_数据=模型_工件

角涩=角涩

framework_版本=’2.2′

入口_点=”推断.py”

source_ dir=”.”

)

参考的输入和输出数据。py代码转换模型在文档中进行了描述。此代码需要将请求有效载荷(图像)更改为NumPy数组并将其解析为列表对象。

在这个例子中,我修改了加载图像并将其转换为NumPy数组的代码。会议中的input_handler函数。py更改为以下内容:

导入io

导入json

将numpy导入为np

从PIL导入图像

def输入_处理程序(数据,上下文):

“””发送到TensorFlow Serving REST API之前的预处理请求输入

参数:

data(obj):请求数据,格式为dict或string

context(context):包含请求和配置详细信息的对象

退货:

(dict):一个JSON可序列化的dict,包含请求正文和头

"""

如果context.request_content_type==”application/x-image”:

payload=data.read()image=image.open(io.BytesIO(payloa))array=np.asarray(image)return json.dumps({’instances’:〔array.tolist()〕})raise ValueError(‘{’error’:”unsupported content type{}”}’format(context.request_content类型或”unknown”)))

请注意,output_handler函数不在上面的代码中。

此函数需要Python包NumPy和Pillow,它们未安装在运行批处理推理作业的计算机上。

我们可以创建自己的图像并使用它(在初始化TensorFlowModel对象时使用image_uri关键字)。

您还可以提供需求。txt并将其存储在笔记本所在的文件夹中(称为source_dir=”.”)。此文件用于在映像引导期间使用pip安装所需的软件包。内容为:

笨蛋

枕头

首先,您希望使用OpenCV(如端点示例中所示),但这个包不容易安装。

现在,我们使用模型来创建transformer对象,而不是将模型部署为模型端点:

输入路径=”s3://桶/输入”

输出路径=”s3://桶/输出”

张量流_服务_变压器=型号_批量变压器(

实例_ count=1

例如_类型=”ml.m5.large”

max_ concurrent_

max_有效载荷=5

输出_路径=输出_路径

)

最后,使用变换:

张量流服务变压器(

输入_路径

content_ type=”应用程序/x-图像”

)

图像由模型处理,结果最终将作为JSON文件存储在output_path存储桶中。名称等于输入文件名,后跟。外延伸。您还可以调整和优化实例类型.最大负载等。

最后的

这可能不是最具成本效益的方法,因为我们将图像作为NumPy数组传递给转换器。

此外,我们还可以通过会议中的output_handler函数调整S3上压缩和存储的JSON。py或仅返回相关检测。

免责声明: 1、本站信息来自网络,版权争议与本站无关 2、本站所有主题由该帖子作者发表,该帖子作者与本站享有帖子相关版权 3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和本站的同意 4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责 5、用户所发布的一切软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 6、您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 7、请支持正版软件、得到更好的正版服务。 8、如有侵权请立即告知本站,本站将及时予与删除 9、本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章和视频仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
600学习网 » SageMaker TensorFlow对象检测模型-600学习网