Keras 3 API 文件 / KerasCV / 模型 / 任務 / SegFormer 分割

SegFormer 分割

[來源]

SegFormer 類別

keras_cv.models.SegFormer(backbone, num_classes, projection_filters=256, **kwargs)

一個實現 SegFormer 架構的 Keras 模型,用於語義分割。

參考文獻

參數

  • backbone: keras.Model。模型的主幹網路,用作 SegFormer 編碼器的特徵提取器。它適用於專為 SegFormers 建立的 MiT 主幹模型。它應該是 keras_cv.models.backbones.backbone.Backbone 或實現 pyramid_level_inputs 屬性(鍵為「P2」、「P3」、「P4」和「P5」,值為層名稱)的 tf.keras.Model
  • num_classes: 整數,偵測模型的類別數,包括背景類別。
  • projection_filters: 整數,將串聯特徵投影到分割圖中的卷積層中的濾波器數量。預設值為 256`。

範例

將類別與 backbone 一起使用

import tensorflow as tf
import keras_cv

images = np.ones(shape=(1, 96, 96, 3))
labels = np.zeros(shape=(1, 96, 96, 1))
backbone = keras_cv.models.MiTBackbone.from_preset("mit_b0_imagenet")
model = keras_cv.models.segmentation.SegFormer(
    num_classes=1, backbone=backbone,
)

# Evaluate model
model(images)

# Train model
model.compile(
    optimizer="adam",
    loss=keras.losses.BinaryCrossentropy(from_logits=False),
    metrics=["accuracy"],
)
model.fit(images, labels, epochs=3)

[來源]

from_preset 方法

SegFormer.from_preset(
    preset, num_classes, load_weights=None, input_shape=None, **kwargs
)

從預設配置和權重實例化 SegFormer 模型。

參數

  • preset: 字串。必須是「mit_b0」、「mit_b1」、「mit_b2」、「mit_b3」、「mit_b4」、「mit_b5」、「mit_b0_imagenet」、「segformer_b0」、「segformer_b1」、「segformer_b2」、「segformer_b3」、「segformer_b4」、「segformer_b5」、「segformer_b0_imagenet」其中之一。如果要尋找具有預先訓練權重的預設配置,請選擇「segformer_b0_imagenet」其中之一。
  • load_weights: 是否將預先訓練的權重載入模型。預設值為 None,表示是否載入取決於預設配置是否有可用的預先訓練權重。
  • input_shape : 將傳遞給主幹初始化的輸入形狀,預設值為 None。如果為 None,則將使用預設值。

範例

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

# Load randomly initialized model from preset architecture with weights
model = keras_cv.models.SegFormer.from_preset(
    "segformer_b0_imagenet",
    load_weights=False,
預設名稱 參數 說明
mit_b0 3.32M 具有 8 個 Transformer 模組的 MiT(MixTransformer)模型。
mit_b1 13.16M 具有 8 個 Transformer 模組的 MiT(MixTransformer)模型。
mit_b2 24.20M 具有 16 個 Transformer 模組的 MiT(MixTransformer)模型。
mit_b3 44.08M 具有 28 個 Transformer 模組的 MiT(MixTransformer)模型。
mit_b4 60.85M 具有 41 個 Transformer 區塊的 MiT (MixTransformer) 模型。
mit_b5 81.45M 具有 52 個 Transformer 區塊的 MiT (MixTransformer) 模型。
mit_b0_imagenet 3.32M 具有 8 個 Transformer 區塊的 MiT (MixTransformer) 模型。 在 ImageNet-1K 上進行預先訓練,並在驗證集上獲得 69% 的 Top-1 準確度。
segformer_b0 3.72M 具有 MiTB0 骨幹的 SegFormer 模型。
segformer_b1 13.68M 具有 MiTB1 骨幹的 SegFormer 模型。
segformer_b2 24.73M 具有 MiTB2 骨幹的 SegFormer 模型。
segformer_b3 44.60M 具有 MiTB3 骨幹的 SegFormer 模型。
segformer_b4 61.37M 具有 MiTB4 骨幹的 SegFormer 模型。
segformer_b5 81.97M 具有 MiTB5 骨幹的 SegFormer 模型。
segformer_b0_imagenet 3.72M 具有預先訓練的 MiTB0 骨幹的 SegFormer 模型。

[來源]

SegFormerB0 類別

keras_cv.models.SegFormerB0(backbone, num_classes, projection_filters=256, **kwargs)

SegFormer 模型。

對於遷移學習的使用案例,請務必閱讀遷移學習與微調指南

參數

  • 骨幹:用於特徵提取的 KerasCV 骨幹。
  • 類別數量:用於分割的類別數量,包括背景類別。

範例

input_data = tf.ones(shape=(8, 224, 224, 3))

# Randomly initialized backbone
backbone = keras_cv.models.MiTBackbone.from_preset("mit_b0_imagenet")
segformer = keras_cv.models.SegFormer(backbone=backbone, num_classes=19)
output = model(input_data)

[來源]

SegFormerB1 類別

keras_cv.models.SegFormerB1(backbone, num_classes, projection_filters=256, **kwargs)

SegFormer 模型。

對於遷移學習的使用案例,請務必閱讀遷移學習與微調指南

參數

  • 骨幹:用於特徵提取的 KerasCV 骨幹。
  • 類別數量:用於分割的類別數量,包括背景類別。

範例

input_data = tf.ones(shape=(8, 224, 224, 3))

# Randomly initialized backbone
backbone = keras_cv.models.MiTBackbone.from_preset("mit_b0_imagenet")
segformer = keras_cv.models.SegFormer(backbone=backbone, num_classes=19)
output = model(input_data)

[來源]

SegFormerB2 類別

keras_cv.models.SegFormerB2(backbone, num_classes, projection_filters=256, **kwargs)

SegFormer 模型。

對於遷移學習的使用案例,請務必閱讀遷移學習與微調指南

參數

  • 骨幹:用於特徵提取的 KerasCV 骨幹。
  • 類別數量:用於分割的類別數量,包括背景類別。

範例

input_data = tf.ones(shape=(8, 224, 224, 3))

# Randomly initialized backbone
backbone = keras_cv.models.MiTBackbone.from_preset("mit_b0_imagenet")
segformer = keras_cv.models.SegFormer(backbone=backbone, num_classes=19)
output = model(input_data)

[來源]

SegFormerB3 類別

keras_cv.models.SegFormerB3(backbone, num_classes, projection_filters=256, **kwargs)

SegFormer 模型。

對於遷移學習的使用案例,請務必閱讀遷移學習與微調指南

參數

  • 骨幹:用於特徵提取的 KerasCV 骨幹。
  • 類別數量:用於分割的類別數量,包括背景類別。

範例

input_data = tf.ones(shape=(8, 224, 224, 3))

# Randomly initialized backbone
backbone = keras_cv.models.MiTBackbone.from_preset("mit_b0_imagenet")
segformer = keras_cv.models.SegFormer(backbone=backbone, num_classes=19)
output = model(input_data)

[來源]

SegFormerB4 類別

keras_cv.models.SegFormerB4(backbone, num_classes, projection_filters=256, **kwargs)

SegFormer 模型。

對於遷移學習的使用案例,請務必閱讀遷移學習與微調指南

參數

  • 骨幹:用於特徵提取的 KerasCV 骨幹。
  • 類別數量:用於分割的類別數量,包括背景類別。

範例

input_data = tf.ones(shape=(8, 224, 224, 3))

# Randomly initialized backbone
backbone = keras_cv.models.MiTBackbone.from_preset("mit_b0_imagenet")
segformer = keras_cv.models.SegFormer(backbone=backbone, num_classes=19)
output = model(input_data)

[來源]

SegFormerB5 類別

keras_cv.models.SegFormerB5(backbone, num_classes, projection_filters=256, **kwargs)

SegFormer 模型。

對於遷移學習的使用案例,請務必閱讀遷移學習與微調指南

參數

  • 骨幹:用於特徵提取的 KerasCV 骨幹。
  • 類別數量:用於分割的類別數量,包括背景類別。

範例

input_data = tf.ones(shape=(8, 224, 224, 3))

# Randomly initialized backbone
backbone = keras_cv.models.MiTBackbone.from_preset("mit_b0_imagenet")
segformer = keras_cv.models.SegFormer(backbone=backbone, num_classes=19)
output = model(input_data)