Keras 3 API 文档 / KerasCV / 模型 / 主干网络 / ViTDet 主干网络

ViTDet 主干网络

[源代码]

ViTDetBackbone

keras_cv.models.ViTDetBackbone(
    include_rescaling,
    input_shape=(1024, 1024, 3),
    input_tensor=None,
    patch_size=16,
    embed_dim=768,
    depth=12,
    mlp_dim=3072,
    num_heads=12,
    out_chans=256,
    use_bias=True,
    use_abs_pos=True,
    use_rel_pos=True,
    window_size=14,
    global_attention_indices=[2, 5, 8, 11],
    layer_norm_epsilon=1e-06,
    **kwargs
)

使用窗口化 Transformer 编码器和相对位置编码的 ViT 图像编码器。

参数

  • input_shape (tuple[int], 可选): 输入图像的大小,格式为 (H, W, C)。默认为 (1024, 1024, 3)
  • input_tensor (KerasTensor, 可选): 用于作为模型图像输入的 keras.layers.Input() 的输出。默认为 None
  • include_rescaling (bool, 可选): 是否重新缩放输入。如果设置为 True,则输入将通过 Rescaling(1/255.0) 层。默认为 False
  • patch_size (int, 可选): 提供给 Patching 层以将输入图像转换为扁平化补丁序列的补丁大小。默认为 16
  • embed_dim (int, 可选): 每个堆叠的窗口化 Transformer 编码器输出中要投影到的潜在维度。默认为 768
  • depth (int, 可选): 在视觉 Transformer 中要堆叠的 Transformer 编码器层的数量。默认为 12
  • mlp_dim (int, 可选): Transformer MLP 头中隐藏 Dense 层的维度。默认为 768*4
  • num_heads (int, 可选): 每个 Transformer 编码器中 MultiHeadAttentionWithRelativePE 层中使用的头的数量。默认为 12
  • out_chans (int, 可选): 输出(图像编码)中的通道(特征)数量。默认为 256
  • use_bias (bool, 可选): 是否使用偏差来投影注意力层中的键、查询和值。默认为 True
  • use_abs_pos (bool, 可选): 是否将绝对位置嵌入添加到输出补丁中。默认为 True
  • use_rel_pos (bool, 可选): 是否在注意力层中使用相对位置编码。默认为 True
  • window_size (int, 可选): Transformer 编码器块中窗口化注意力的窗口大小。默认为 14
  • global_attention_indices (list, 可选): 使用全局注意力的块的索引。默认为 [2, 5, 8, 11]
  • layer_norm_epsilon (int, 可选): 在 Transformer 编码器中的层归一化块中使用的 epsilon。默认为 1e-6

参考文献


[源代码]

from_preset 方法

ViTDetBackbone.from_preset()

从预设配置和权重实例化 ViTDetBackbone 模型。

参数

  • preset: 字符串。必须是 "vitdet_base"、"vitdet_large"、"vitdet_huge"、"vitdet_base_sa1b"、"vitdet_large_sa1b"、"vitdet_huge_sa1b" 之一。如果正在寻找具有预训练权重的预设,请选择 "vitdet_base_sa1b"、"vitdet_large_sa1b"、"vitdet_huge_sa1b" 之一。
  • load_weights: 是否将预训练权重加载到模型中。默认为 None,遵循预设是否有可用的预训练权重。

示例

# Load architecture and weights from preset
model = keras_cv.models.ViTDetBackbone.from_preset(
    "vitdet_base_sa1b",
)

# Load randomly initialized model from preset architecture with weights
model = keras_cv.models.ViTDetBackbone.from_preset(
    "vitdet_base_sa1b",
    load_weights=False,
预设名称 参数 描述
vitdet_base 8967万 Detectron2 ViT 主干网络,具有 12 个 Transformer 编码器,嵌入维度为 768,注意力层具有 12 个头,在编码器 2、5、8 和 11 上使用全局注意力。
vitdet_large 3亿800万 Detectron2 ViT 主干网络,具有 24 个 Transformer 编码器,嵌入维度为 1024,注意力层具有 16 个头,在编码器 5、11、17 和 23 上使用全局注意力。
vitdet_huge 6亿3700万 Detectron2 ViT 主干网络模型,具有 32 个 Transformer 编码器,嵌入维度为 1280,注意力层具有 16 个头,在编码器 7、15、23 和 31 上使用全局注意力。
vitdet_base_sa1b 8967万 在 SA1B 数据集上训练的基本 Detectron2 ViT 主干网络。
vitdet_large_sa1b 3亿800万 在 SA1B 数据集上训练的大型 Detectron2 ViT 主干网络。
vitdet_huge_sa1b 6亿3700万 在 SA1B 数据集上训练的超大型 Detectron2 ViT 主干网络。

[源代码]

ViTDetBBackbone

keras_cv.models.ViTDetBBackbone(
    include_rescaling,
    input_shape=(1024, 1024, 3),
    input_tensor=None,
    patch_size=16,
    embed_dim=768,
    depth=12,
    mlp_dim=3072,
    num_heads=12,
    out_chans=256,
    use_bias=True,
    use_abs_pos=True,
    use_rel_pos=True,
    window_size=14,
    global_attention_indices=[2, 5, 8, 11],
    layer_norm_epsilon=1e-06,
    **kwargs
)

VitDetBBackbone 模型。

参考

对于迁移学习用例,请务必阅读迁移学习和微调指南

示例

input_data = np.ones(shape=(1, 1024, 1024, 3))

# Randomly initialized backbone
model = VitDetBBackbone()
output = model(input_data)

[源代码]

ViTDetLBackbone

keras_cv.models.ViTDetLBackbone(
    include_rescaling,
    input_shape=(1024, 1024, 3),
    input_tensor=None,
    patch_size=16,
    embed_dim=768,
    depth=12,
    mlp_dim=3072,
    num_heads=12,
    out_chans=256,
    use_bias=True,
    use_abs_pos=True,
    use_rel_pos=True,
    window_size=14,
    global_attention_indices=[2, 5, 8, 11],
    layer_norm_epsilon=1e-06,
    **kwargs
)

VitDetLBackbone 模型。

参考

对于迁移学习用例,请务必阅读迁移学习和微调指南

示例

input_data = np.ones(shape=(1, 1024, 1024, 3))

# Randomly initialized backbone
model = VitDetLBackbone()
output = model(input_data)

[源代码]

ViTDetHBackbone

keras_cv.models.ViTDetHBackbone(
    include_rescaling,
    input_shape=(1024, 1024, 3),
    input_tensor=None,
    patch_size=16,
    embed_dim=768,
    depth=12,
    mlp_dim=3072,
    num_heads=12,
    out_chans=256,
    use_bias=True,
    use_abs_pos=True,
    use_rel_pos=True,
    window_size=14,
    global_attention_indices=[2, 5, 8, 11],
    layer_norm_epsilon=1e-06,
    **kwargs
)

VitDetHBackbone 模型。

参考

对于迁移学习用例,请务必阅读迁移学习和微调指南

示例

input_data = np.ones(shape=(1, 1024, 1024, 3))

# Randomly initialized backbone
model = VitDetHBackbone()
output = model(input_data)