无法读取 Sagemaker 语义分割模型批量转换输出文件

     2023-03-27     133

关键词:

【中文标题】无法读取 Sagemaker 语义分割模型批量转换输出文件【英文标题】:Not able to read Sagemaker Semantic Segmentation Model Batch Transformation Output file 【发布时间】:2021-02-09 23:06:18 【问题描述】:

目前我已经部署了一个语义分割模型和一个端点,我可以使用它来调用和获取推理。现在,我一次对每张图像进行推断。

现在我想使用批量转换作业一次尝试批量图像。它工作得非常好,但创建的图像是一个 .out 文件,我无法使用任何可视化库(如 matplotlib imread、PIL)打开该文件图像和 openCV 读取。这一切都不是图像。

只是想了解.out 文件是什么?,如果它是通常是语义分割模型的输出的分割掩码图像,那么我该如何读取该文件。

我的批量转换代码:

from sagemaker.predictor import RealTimePredictor, csv_serializer, csv_deserializer

class Predictor(RealTimePredictor):
    
    def __init__(self, endpoint_name, sagemaker_session=None):
        super(Predictor, self).__init__(
            endpoint_name, sagemaker_session, csv_serializer, csv_deserializer
        )

ss_model = sagemaker.model.Model(role =role, image=training_image, model_data = model, predictor_cls=Predictor, sagemaker_session=sess)

transformer = ss_model.transformer(instance_count=1, instance_type='ml.c4.xlarge', output_path=batch_output_data)

transformer.transform(data=batch_input_data, data_type='S3Prefix', content_type='image/png', split_type='None')

transformer.wait()

【问题讨论】:

你能解决这个问题吗? 不,我只对单个图像使用推理,并在一个循环中运行它以进行批处理,您是否也面临同样的问题? 是的,面临同样的问题。您是如何仅对一张图像进行推断的?我看到了你的另一篇文章,但我得到了同样的错误“文件'model_new/model_algo-1'中缺少参数'head.psp.conv1.0.weight'”,我不知道如何在“ png" 而不是 ".out" 根据文档,“.out”文件是带有数据和 pridicted 标签的 CSV 类型的结果文件。尝试使用文本编辑应用程序打开和调查 【参考方案1】:

作为official doc say:

SageMaker 语义分割算法提供了一个细粒度的、 像素级方法来开发计算机视觉应用程序。 它使用预定义类集合中的类标签标记图像中的每个像素

...

因为语义分割算法对每个像素进行分类 图像,它还提供有关对象形状的信息 包含在图像中。 分割输出表示为 灰度图像,称为分割掩码。分割掩码是 与输入图像形状相同的灰度图像。

所以,.out 文件有像素数组(为每个像素分配的类)。 你需要反序列化文件:

from PIL import Image
import numpy as np
import io
from boto3.session import Session

session = Session(
    aws_access_key_id=KEY_ID, aws_secret_access_key=ACCESS_KEY, region_name=REGION_NAME
)
s3 = session.resource("s3")
out_file = io.BytesIO()
s3_object = s3.Object(BUCKET, PATH)
s3_object.download_fileobj(out_file)
out_file.seek(0)

mask = np.array(Image.open(out_file))

另外,我在this doc 中找到了一个类ImageDeserializer 来处理数据流。也许您可以将其调整为适合您的文件,因为它读取从 inference 端点返回的字节流(批量转换将此数据放入 .out 文件中)。

【讨论】:

谢谢你,让我检查一下然后回来。【参考方案2】:

.out 文件是什么?

.out 文件本质上是您的 http 响应 HttpEntity(包括标题和正文)中的流(内容)。它与您输入文件中记录的顺序相匹配。

更具体地说,对于每个批量转换,SageMaker 将您的输入文件拆分为记录,构建多个 http 请求并将它们发送到模型服务器。推理结果包含在 http 响应中。 SageMaker 将推理结果上传到带有“.out”后缀的 s3。

【讨论】:

Sagemaker 语义分割:每类 iou 和像素精度

】Sagemaker语义分割:每类iou和像素精度【英文标题】:SagemakerSemanticSegmentation:iouandpixelaccuracyperclass【发布时间】:2019-10-3123:45:21【问题描述】:我正在AWSsagemaker上做一些语义分割工作。我的输出是我所有类的平均iou和像素精度,... 查看详情

多类语义分割模型评估

...,通过降低损失值来输出漂亮的下降分割图像。但是,我无法在诸如meanIoU或Dice系数之类的指标中评估模型性能。在二元语义分割的情况下,很容易将阈值设置为0.5,将输出分类为对象或背景,但在多类语 查看详情

基于mindspore复现unet—语义分割(代码片段)

...简介1.1模型结构1.2模型特点2.案例实现2.1环境准备与数据读取2.2数据集创建2.3模型构建2.4自定义评估指标2.5模型训练及评估2.6模型预测3.总结1.模型简介Unet模型于2015年在论文《U-Net:ConvolutionalNetworksforBiomedicalImageSegmentation》中被提... 查看详情

如何将图像转换为数据集以进行语义分割

】如何将图像转换为数据集以进行语义分割【英文标题】:Howtoconvertimagesintoadatasetforsemanticsegmentation【发布时间】:2021-05-0104:01:09【问题描述】:我正在尝试制作一个新的语义分割模型,该模型将颗粒状显微图像作为输入并对其... 查看详情

如何在 AWS Sagemaker 中检索分段掩码中使用的标签

】如何在AWSSagemaker中检索分段掩码中使用的标签【英文标题】:HowtoretrievethelabelsusedinasegmentationmaskinAWSSagemaker【发布时间】:2020-09-1508:43:02【问题描述】:从分割掩码中,我试图检索掩码中表示的标签。这是我在AWSSagemaker中通过... 查看详情

openmmlabai实战营打卡笔记——06语义分割算法基础

...营打卡笔记,想要具体了解可以跳转课程视频:语义分割算法基础目录语义分割1.语义分割基本思路2.深度学习下的语义分割模型3.分割模型的评估方法4.语义分割算法总结语义分割这节课对语义分割算法做了详细的介绍&#x... 查看详情

将经过训练的 AWS SageMaker MXNet 模型部署/转换到 iOS 设备

】将经过训练的AWSSageMakerMXNet模型部署/转换到iOS设备【英文标题】:Deploy/converttrainedAWSSageMakerMXNetModeltoiOSdevices【发布时间】:2019-12-1318:18:13【问题描述】:我使用SageMaker对象检测算法训练了一个MXnetSSDresnet-50模型,并希望在iOS设... 查看详情

keras深度学习实战(18)——语义分割详解(代码片段)

Keras深度学习实战(18)——语义分割详解0.前言1.语义分割基本概念2.模型与数据集分析2.1模型训练流程2.2模型输出3.实现语义分割模型3.1加载数据集3.2模型构建与训练小结系列链接0.前言在《使用U-Net架构进行图像分割》... 查看详情

创建 SageMaker 模型时出现 ValidationError

】创建SageMaker模型时出现ValidationError【英文标题】:ValidationErrorwhencreatingaSageMakerModel【发布时间】:2018-12-0506:42:39【问题描述】:我是AWS的新手,并尝试通过参考他们的demo来构建模型(从Web控制台)。但是,当我尝试创建模型... 查看详情

亚马逊 AWS 和 S3 实例的语义分割

...,我想将此示例中使用的过程(https://github.com/awslabs/amazon-sagemaker-examples/blob/mast 查看详情

人工智能必须要知道的语义分割模型:deeplabv3+

...是像检测那样给出边界框。 图像分割可以分为两类:语义分割(SemanticSegmentation)和实例分割(InstanceSegmentation) 查看详情

语义分割之车道线检测lanenet(tensorflow版)(代码片段)

...条车道线的所有像素点进行重新建模    将语义分割和对像素进行向量表示结合起来的多任务模型,最近利用聚类完成对车道线的实例分割。   查看详情

图像语义分割方法

语义分割的基本结构如下,通过一个分割模型确定基本结果,再通过CRF等进行优化输出。后面优化的模型有以下几种:全连接条件随机场(DenseCRF)CRFasRNN马尔科夫随机场(MRF)高斯条件随机场(G-CRF) 后面的概率模型中存在二元势函... 查看详情

U-Net 语义分割模型在新图像上测试时失败

】U-Net语义分割模型在新图像上测试时失败【英文标题】:U-NetSemanticsegmentationmodelfailswhentestedonnewimage【发布时间】:2021-11-2209:28:54【问题描述】:我有一个U-Net模型,该模型具有来自自动编码器的预训练权重,自动编码器构建了... 查看详情

如何将 stepfunction 执行 ID 附加到 SageMaker 作业名称?

】如何将stepfunction执行ID附加到SageMaker作业名称?【英文标题】:HowtoappendstepfunctionexecutionidtoSageMakerjobnames?【发布时间】:2021-04-1300:40:08【问题描述】:我有一个创建SageMaker批量转换作业的步进函数状态机,定义是用Terraform编写... 查看详情

为啥训练多类语义分割的unet模型中的分类交叉熵损失函数非常高?

】为啥训练多类语义分割的unet模型中的分类交叉熵损失函数非常高?【英文标题】:whycategoricalcrossentropylossfunctionintrainingunetmodelformulticlasssemanticsegmentationisveryhigh?为什么训练多类语义分割的unet模型中的分类交叉熵损失函数非常... 查看详情

语义分割之车道线检测(tensorflow版)(代码片段)

   由于项目需要,参考了多篇相关车道线检测论文与源码,设计了一套Tensorflow版车道线检测功能。二、基本结构:   该模型主要由以下部分组成:1、数据源:包括所有原始数据,分组后的数据;2、数据预... 查看详情

计算机视觉框架openmmlab开源学习:语义分割基础

...智能领域初学者及研究者学习。➡️点击跳转到网站。 语义分割前言:本系列第六篇文章主要介绍语义分割知识,了解计算机视觉框架OpenMMLab的MMSegmentation工具基本原理及使用,为后续语义分割实战做铺垫。本节内... 查看详情