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 模型句柄,例如 '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 模型句柄、Hugging Face 句柄或本機目錄的路徑。
  • load_weights:布林值。如果為 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,
)