我用invoke_endpoint函数从AWS调用一个语义分割模型,但没有得到图像响应,而是得到了一个应用程序/x-recordio protobuf,无法将其转换为图像以供进一步处理。语义分割模型在我的sagemaker笔记本中的工作方式与预期的一样,问题是当从AWS调用它时。我需要从AWS或类似的服务中调用它,这样我就可以将它与通过rest服务传递图像输入的应用程序连接起来。
下面是我代码的相关部分:
runtime= boto3.client('runtime.sagemaker')
response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
ContentType='image/jpeg',
Body=imageBody,
Accept='image/jpeg')我还没有找到好的例子,说明如何正确地调用端点,特别是针对AWS的语义分段模型。我也尝试过导入sagemaker,但是AWS没有提供这个模块,而且我也找不到一个很好的sagemaker层。
如果有人想知道如何从AWS调用语义分割模型,传递图像,并获得图像作为响应,我将不胜感激。
发布于 2022-11-24 00:43:15
我想,当您在笔记本中声明它有效时,您使用的是.predict() - SageMaker Python。
如果是这样的话,您可以使用boto3客户机(我看到您已经展示了这个客户机)。您只需要像SDK一样将imageBody序列化为字节,并设置正确的AcceptType和ContentType。
要查询部署到端点的经过训练的模型,您需要提供一个图像和一个AcceptType来表示所需的输出类型。端点以图像/ JPEG内容类型获取jpeg图像。如果您请求图像/ PNG的AcceptType,则算法以与标签本身相同的格式输出带有分段掩码的PNG文件。如果您请求接受类型的应用程序/x-recordio protobuf,该算法将返回以recordio protobuf格式编码的类概率。
https://stackoverflow.com/questions/74512026
复制相似问题