SAMMaskDecoder 层

[源代码]

SAMMaskDecoder

keras_hub.layers.SAMMaskDecoder(
    hidden_size,
    num_layers,
    intermediate_dim,
    num_heads,
    embedding_dim=256,
    num_multimask_outputs=3,
    iou_head_depth=3,
    iou_head_hidden_dim=256,
    activation="gelu",
    **kwargs
)

Segment Anything Model (SAM) 的掩码解码器。

这个轻量级模块有效地将图像嵌入和一组提示嵌入映射到输出掩码。在应用 transformer 解码器之前,该层首先在提示嵌入集中插入一个学习到的输出 token 嵌入,该嵌入将在解码器的输出处使用。为简单起见,这些嵌入(不包括图像嵌入)统称为“tokens”。

图像嵌入、位置图像嵌入和 tokens 通过 transformer 解码器进行传递。运行解码器后,该层使用两个转置卷积层将更新后的图像嵌入上采样 4 倍(现在相对于输入图像缩小了 4 倍)。然后,tokens 再次关注图像嵌入,并将更新后的输出 token 嵌入传递给一个小的 3 层 MLP,该 MLP 输出一个与上采样图像嵌入的通道维度匹配的向量。

最后,通过上采样图像嵌入和 MLP 输出之间的空间逐点乘积来预测掩码。

参数

  • hidden_size: int。TwoWayTransformer 的隐藏大小。
  • num_layers: int。TwoWayTransformer 的层数。
  • intermediate_dim: int。TwoWayTransformer 的中间维度。
  • num_heads: int。TwoWayTransformer 的头数。
  • embedding_dim: int, optional。transformer 解码器的输入特征数量。默认为 256
  • num_multimask_outputs: int, optional。多掩码输出的数量。模型将生成这么多额外的掩码。模型生成的总掩码数为 1 + num_multimask_outputs。默认为 3
  • iou_head_depth: int, optional。用于预测 IoU 置信度的密集网络深度。默认为 3
  • iou_head_hidden_dim: int, optional。用于预测 IoU 置信度的密集网络中使用的隐藏层的单元数。默认为 256
  • activation: str, optional。在掩码上采样网络中使用的激活函数。默认为 "gelu"