Skip to main content

口罩

掩码是用于深度学习中图像分割的源数据。掩码URI是SingleFrame的一个属性。

ClearML 以两种模式之一应用掩码:

  • 像素分割 - 每个像素的RGB值都被映射到分割标签。
  • Alpha通道 - Pixel RGB值被解释为不透明度级别。

在WebApp的帧查看器中,您可以选择如何在帧上应用遮罩。

像素分割掩码

对于像素分割,掩码RGB像素值被映射到标签。

掩码标签映射在数据集级别定义,通过版本元数据中的mask_labels属性。

mask_labels 是一个字典列表,其中每个字典包含以下键:

  • value - 掩码的RGB像素值
  • labels - 与值关联的标签。

了解如何以Python方式管理数据集版本掩码标签 这里

在用户界面中,您可以在数据集版本的Metadata标签页中查看映射。

数据集元数据面板

当查看一个带有与版本掩码标签映射相对应的掩码的帧时,用户界面会随意为每个标签分配一种颜色。颜色分配可以自定义

例如:

  • 原始帧图像:

    无面具的框架

  • 启用语义分割掩码的帧图像。标签根据数据集版本的掩码标签映射应用:

    带有语义分割掩码的框架

框架的源数组包含一个字典的掩码列表,看起来像这样:

{
"id": "<framegroup_id>",
"timestamp": "<timestamp>",
"context_id": "car_1",
"sources": [
{
"id": "<source_id>",
"content_type": "<type>",
"uri": "<image_uri>",
"timestamp": 1234567889,
...
"masks": [
{
"id": "<mask_id>",
"content_type": "video/mp4",
"uri": "<mask_uri>",
"timestamp": 123456789
}
]
}
]
}

masks 字典包括帧的掩码的 URIs 和 IDs。

Alpha通道遮罩

对于alpha通道,遮罩的RGB像素值被解释为不透明度值,因此当应用遮罩时,只有源图像的所需部分可见。

例如:

  • 原始框架:

    无遮罩帧

  • 相同的帧带有alpha通道遮罩,强调巨魔娃娃:

    Alpha遮罩框架

框架的源数组包含一个字典的掩码列表,看起来像这样:

{
"sources" : [
{
"id" : "321"
"uri" : "https://i.ibb.co/bs7R9k6/troll.png"
"masks" : [
{
"id" : "troll",
"uri" : "https://i.ibb.co/TmJ3mvT/troll-alpha.png"
}
]
"timestamp" : 0
}
]
}

请注意,对于alpha通道掩码,不使用标签。

用法

使用掩码注册帧

要使用遮罩注册帧,请创建一个帧并指定帧的遮罩文件的URI。

# create dataset version
version = DatasetVersion.create_version(
dataset_name="Example",
version_name="Registering frame with mask"
)

# create frame with mask
frame = SingleFrame(
source='https://s3.amazonaws.com/allegro-datasets/cityscapes/leftImg8bit_trainvaltest/leftImg8bit/val/frankfurt/frankfurt_000000_000294_leftImg8bit.png',
mask_source='https://s3.amazonaws.com/allegro-datasets/cityscapes/gtFine_trainvaltest/gtFine/val/frankfurt/frankfurt_000000_000294_gtFine_labelIds.png'
)

# add frame to version
version.add_frames([frame])

要使用掩码进行像素分割,请为DatasetVersion定义像素标签映射:

version.set_masks_labels(
{(0,0,0): ["background"], (1,1,1): ["person", "sitting"], (2,2,2): ["cat"]}
)

根据版本的掩码标签映射字典,相关标签被应用于版本中的所有掩码。

使用多个掩码注册帧

帧可以包含多个掩码。要添加多个掩码,请使用 SingleFrame 的 masks_source 属性。输入以下之一:

  • 一个字典,包含掩码字符串ID键和掩码URI值
  • A list of mask URIs. Numeric IDs are automatically assigned to the masks ("00", "01", etc.).
frame = SingleFrame(source='https://s3.amazonaws.com/allegro-datasets/cityscapes/leftImg8bit_trainvaltest/leftImg8bit/val/frankfurt/frankfurt_000000_000294_leftImg8bit.png',)

# add multiple masks
# with dictionary
frame.masks_source={"ID 1 ": "<mask_URI_1>", "ID 2": "<mask_URI_2>"}
# with list
frame.masks_source=[ "<mask_URI_1>", "<mask_URI_2>"]