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) 的提示编码器。

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

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

参数

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