如何在 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 提供给组织外部的人员使用?