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 头部中隐藏的全连接层的维度。
  • 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: string。内置预设标识符、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,
)