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

Posted

技术标签:

【中文标题】如何在 AWS Sagemaker 中检索分段掩码中使用的标签【英文标题】:How to retrieve the labels used in a segmentation mask in AWS Sagemaker 【发布时间】:2020-09-15 08:43:02 【问题描述】:

从分割掩码中,我试图检索掩码中表示的标签。

这是我在 AWS Sagemaker 中通过语义分割模型运行的图像。

预测和显示掩码的代码。

from sagemaker.predictor import json_serializer, json_deserializer, RealTimePredictor
from sagemaker.content_types import CONTENT_TYPE_CSV, CONTENT_TYPE_JSON

%%time
ss_predict = sagemaker.RealTimePredictor(endpoint=ss_model.endpoint_name, 
                                     sagemaker_session=sess,
                                    content_type = 'image/jpeg',
                                    accept = 'image/png')

return_img = ss_predict.predict(img)

from PIL import Image
import numpy as np
import io

num_labels = 21
mask = np.array(Image.open(io.BytesIO(return_img)))
plt.imshow(mask, vmin=0, vmax=num_labels-1, cmap='jet')
plt.show()

此图像是创建的分割蒙版,它代表摩托车,其他一切都是背景。

[

从代码中可以看出,有 21 个可能的标签,其中 2 个用于面具,一个用于摩托车,另一个用于背景。我现在想弄清楚的是,如何从 21 个可能的选项中打印出这个面具中实际使用的标签?

如果您需要任何进一步的信息,请告诉我,非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

你应该有一个从标签整数到标签类的映射,例如

label_map = 0: 'background', 1: 'motorbike', 2: 'train', ...

如果您使用 Pascal VOC 数据集,则为 (1=aeroplane, 2=bicycle, 3=bird, 4=boat, 5=bottle, 6=bus, 7=car , 8=cat, 9=椅子, 10=牛, 11=餐桌, 12=狗, 13=马, 14=摩托车, 15=人, 16=盆栽, 17=羊, 18=沙发, 19=火车, 20=电视/显示器) -看这里:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/segexamples/index.html

然后你可以简单地使用那个地图:

used_classes = np.unique(mask)
for cls in used_classes:
    print("Found class: ".format(label_map[cls]))

【讨论】:

正是我想要的谢谢。您能否提供一些我可以阅读的用于分割掩码的文档?我希望能够弄清楚:掩码中表示的是什么十六进制颜色,图像中每个类的大小是多少?请让我知道我是否应该只发布新问题。谢谢。

以上是关于如何在 AWS Sagemaker 中检索分段掩码中使用的标签的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 aws 区域错误“ValueError:必须使用 SageMaker 支持的区域设置本地 AWS 配置”

ClearML 如何在 AWS Sagemaker 中更改 clearml.conf 文件

如何在等待响应时增加 AWS Sagemaker 调用超时

如何将 AWS SageMaker 提供给组织外部的人员使用?

AWS DeepRacer 参数调优 Amazon SageMaker 和 Amazon RoboMaker

AWS Sagemaker Spark S3 访问问题