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 或者是一个 tf.keras.Model,它实现了 pyramid_level_inputs 属性,该属性具有键“P2”、“P3”、“P4”和“P5”,以及层名称作为值。
  • num_classes: int,检测模型的类别数,包括背景类别。
  • projection_filters: int,将拼接特征投影到分割图的卷积层中的滤波器数量。默认值为 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: string。必须是以下之一:“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 模型。

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

参数

  • backbone: 用于特征提取的 KerasCV 骨干。
  • num_classes: 分割的类别数,包括背景类别。

示例

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 模型。

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

参数

  • backbone: 用于特征提取的 KerasCV 骨干。
  • num_classes: 分割的类别数,包括背景类别。

示例

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 模型。

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

参数

  • backbone: 用于特征提取的 KerasCV 骨干。
  • num_classes: 分割的类别数,包括背景类别。

示例

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 模型。

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

参数

  • backbone: 用于特征提取的 KerasCV 骨干。
  • num_classes: 分割的类别数,包括背景类别。

示例

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 模型。

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

参数

  • backbone: 用于特征提取的 KerasCV 骨干。
  • num_classes: 分割的类别数,包括背景类别。

示例

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 模型。

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

参数

  • backbone: 用于特征提取的 KerasCV 骨干。
  • num_classes: 分割的类别数,包括背景类别。

示例

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)