SAMPromptEncoder 层

[来源]

SAMPromptEncoder

keras_hub.layers.SAMPromptEncoder(
    hidden_size=256,
    image_embedding_size=(64, 64),
    input_image_size=(1024, 1024),
    mask_in_channels=16,
    activation="gelu",
    **kwargs
)

Segment Anything Model (SAM) 的 Prompt 编码器。

Prompt 编码器为三种类型的 prompt 生成编码: - 点 prompt:图像上的点,附带一个标签,指示该点是位于前景(掩码的一部分)还是背景(不是掩码的一部分)。 - 框 prompt:一批边界框,格式为 [(x1, y1), (x2, y2)],用于确定图像中掩码的位置。 - 掩码 prompt:可以传入一个输入掩码来细化输出掩码的位置嵌入。

首先,将点 prompt 和框 prompt 拼接起来,并使用随机空间频率生成位置编码。一个点表示为其位置的位置编码与指示点位于前景或背景的两个学习到的嵌入之一的总和。一个框由一对嵌入表示:(1) 其左上角的位置编码与代表“左上角”的学习到的嵌入的总和;以及 (2) 相同的结构,但使用指示“右下角”的学习到的嵌入。框和点编码被称为“prompt 稀疏编码”。如果传入掩码 prompt,则使用卷积神经网络对其进行下采样以生成“密集编码”。如果没有传入掩码 prompt,则 instead 使用嵌入层生成一个“无掩码”嵌入。

参数

  • hidden_size: int,可选。输出嵌入中的特征数量。默认为 256
  • image_embedding_size: int,可选。图像编码器生成的图像嵌入中的特征数量。默认为 (64, 64)
  • input_image_size: tuple[int],可选。prompt 图像的高度和宽度组成的元组。默认为 (1024, 1024)
  • mask_in_channels: int,可选。掩码 prompt 的通道数。默认为 16
  • activation: str,可选。在掩码下采样神经网络中使用的激活函数。默认为 "gelu"