VitDet 模型

[源代码]

ViTDetBackbone

keras_hub.models.ViTDetBackbone(
    hidden_size,
    num_layers,
    intermediate_dim,
    num_heads,
    global_attention_layer_indices,
    image_shape=(None, None, 3),
    patch_size=16,
    num_output_channels=256,
    use_bias=True,
    use_abs_pos=True,
    use_rel_pos=True,
    window_size=14,
    layer_norm_epsilon=1e-06,
    **kwargs
)

ViT 图像编码器的实现。

ViTDetBackbone 使用窗口 Transformer 编码器和相对位置编码。该代码改编自 Segment Anything 论文Segment Anything GitHubDetectron2

参数

  • hidden_size (int): 每个堆叠窗口 Transformer 编码器输出中要投影到的潜在维度。
  • num_layers (int): Vision Transformer 中要堆叠的 Transformer 编码器层数。
  • intermediate_dim (int): Transformer MLP 头部中隐藏 Dense 层的维度。
  • num_heads (int): 每个 Transformer 编码器的 MultiHeadAttentionWithRelativePE 层中使用的头数。
  • global_attention_layer_indices (list): 使用全局注意力的块的索引。
  • image_shape (tuple[int], optional): 输入图像的大小,格式为 (H, W, C)。默认为 (None, None, 3)
  • patch_size (int, optional): 要提供给 Patching 层的 patch 大小,以将输入图像转换为展平的 patch 序列。默认为 16
  • num_output_channels (int, optional): 输出(图像编码)中的通道(特征)数。默认为 256
  • use_bias (bool, optional): 是否在注意力层中使用偏置来投影键、查询和值。默认为 True
  • use_abs_pos (bool, optional): 是否将绝对位置嵌入添加到输出 patch。默认为 True
  • use_rel_pos (bool, optional): 是否在注意力层中使用相对位置编码。默认为 True
  • window_size (int, optional): Transformer 编码器块中窗口注意力的窗口大小。默认为 14
  • layer_norm_epsilon (int, optional): 在 Transformer 编码器中的层归一化块中使用的 epsilon。默认为 1e-6

示例

input_data = np.ones((2, 224, 224, 3), dtype="float32")

# Pretrained ViTDetBackbone backbone.
model = keras_hub.models.ViTDetBackbone.from_preset("vit_det")
model(input_data)

# Randomly initialized ViTDetBackbone backbone with a custom config.
model = keras_hub.models.ViTDetBackbone(
        image_shape = (16, 16, 3),
        patch_size = 2,
        hidden_size = 4,
        num_layers = 2,
        global_attention_layer_indices = [2, 5, 8, 11],
        intermediate_dim = 4 * 4,
        num_heads = 2,
        num_output_channels = 2,
        window_size = 2,
)
model(input_data)

[源代码]

from_preset 方法

ViTDetBackbone.from_preset(preset, load_weights=True, **kwargs)

从模型预设实例化一个 keras_hub.models.Backbone

预设是配置、权重和其他文件资产的目录,用于保存和加载预训练模型。preset 可以作为以下之一传递

  1. 内置预设标识符,例如 'bert_base_en'
  2. Kaggle Models 句柄,例如 'kaggle://user/bert/keras/bert_base_en'
  3. Hugging Face 句柄,例如 'hf://user/bert_base_en'
  4. 本地预设目录的路径,例如 './bert_base_en'

此构造函数可以通过两种方式调用。可以从基类(例如 keras_hub.models.Backbone.from_preset())调用,也可以从模型类(例如 keras_hub.models.GemmaBackbone.from_preset())调用。如果从基类调用,则返回对象的子类将从预设目录中的配置推断出来。

对于任何 Backbone 子类,您可以运行 cls.presets.keys() 以列出该类上所有可用的内置预设。

参数

  • preset: 字符串。内置预设标识符、Kaggle Models 句柄、Hugging Face 句柄或本地目录的路径。
  • load_weights: bool。如果为 True,权重将加载到模型架构中。如果为 False,权重将被随机初始化。

示例

# Load a Gemma backbone with pre-trained weights.
model = keras_hub.models.Backbone.from_preset(
    "gemma_2b_en",
)

# Load a Bert backbone with a pre-trained config and random weights.
model = keras_hub.models.Backbone.from_preset(
    "bert_base_en",
    load_weights=False,
)