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)其左上角的 the positional encoding 与表示“左上角”的 learned embedding 相加;(2)使用指示“右下角”的 learned embedding 的相同结构。框和点编码被称为“prompt_sparse encodings”。如果提供了掩码提示,则使用卷积神经网络将其下采样以生成“dense encodings”。如果不提供掩码提示,则使用嵌入层代替来生成“no mask”嵌入。

参数

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