Keras 3 API 文档 / KerasCV / 模型 / 骨干网络 / MobileNetV3 骨干网络

MobileNetV3 骨干网络

[源代码]

MobileNetV3Backbone

keras_cv.models.MobileNetV3Backbone(
    stackwise_expansion,
    stackwise_filters,
    stackwise_kernel_size,
    stackwise_stride,
    stackwise_se_ratio,
    stackwise_activation,
    include_rescaling,
    input_shape=(None, None, 3),
    input_tensor=None,
    alpha=1.0,
    **kwargs
)

实例化 MobileNetV3 架构。

参考文献

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

参数

  • stackwise_expansion:整数或浮点数列表,模型中每个反向残差块的扩展比率。
  • stackwise_filters:整数列表,模型中每个反向残差块的过滤器数量。
  • stackwise_stride:整数列表,模型中每个反向残差块的步长。
  • include_rescaling:布尔值,是否重新缩放输入。如果设置为 True,则输入将通过 Rescaling(scale=1 / 255) 层。
  • input_shape:可选的形状元组,默认为 (None, None, 3)。
  • input_tensor:可选的 Keras 张量(即 layers.Input() 的输出),用作模型的图像输入。
  • alpha:浮点数,控制网络的宽度。这在 MobileNetV3 论文中称为深度乘数,但为了与 Keras 中的 MobileNetV1 保持一致,名称保持不变。
    • 如果 alpha < 1.0,则按比例减少每一层的过滤器数量。
    • 如果 alpha > 1.0,则按比例增加每一层的过滤器数量。
    • 如果 alpha = 1,则使用论文中每一层默认的过滤器数量。

示例

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

# Randomly initialized backbone with a custom config
model = MobileNetV3Backbone(
    stackwise_expansion=[1, 72.0 / 16, 88.0 / 24, 4, 6, 6, 3, 3, 6, 6, 6],
    stackwise_filters=[16, 24, 24, 40, 40, 40, 48, 48, 96, 96, 96],
    stackwise_kernel_size=[3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5],
    stackwise_stride=[2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1],
    stackwise_se_ratio=[0.25, None, None, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25],
    stackwise_activation=["relu", "relu", "relu", "hard_swish", "hard_swish", "hard_swish", "hard_swish", "hard_swish", "hard_swish", "hard_swish", "hard_swish"],
    include_rescaling=False,
)
output = model(input_data)

[源代码]

from_preset 方法

MobileNetV3Backbone.from_preset()

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

参数

  • preset:字符串。必须是 "mobilenet_v3_small"、"mobilenet_v3_large"、"mobilenet_v3_large_imagenet"、"mobilenet_v3_small_imagenet" 之一。如果正在寻找具有预训练权重的预设,请选择 "mobilenet_v3_large_imagenet" 或 "mobilenet_v3_small_imagenet" 之一。
  • load_weights:是否将预训练权重加载到模型中。默认为 None,这取决于预设是否有可用的预训练权重。

示例

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

# Load randomly initialized model from preset architecture with weights
model = keras_cv.models.MobileNetV3Backbone.from_preset(
    "mobilenet_v3_large_imagenet",
    load_weights=False,
预设名称 参数 描述
mobilenet_v3_small 933.50K 具有 14 层的 MobileNetV3 模型,其中批归一化和硬 Swish 激活应用于卷积层之后。
mobilenet_v3_large 2.99M 具有 28 层的 MobileNetV3 模型,其中批归一化和硬 Swish 激活应用于卷积层之后。
mobilenet_v3_large_imagenet 2.99M 具有 28 层的 MobileNetV3 模型,其中批归一化和硬 Swish 激活应用于卷积层之后。在 ImageNet 2012 分类任务上进行了预训练。
mobilenet_v3_small_imagenet 933.50K 具有 14 层的 MobileNetV3 模型,其中批归一化和硬 Swish 激活应用于卷积层之后。在 ImageNet 2012 分类任务上进行了预训练。

[源代码]

MobileNetV3SmallBackbone

keras_cv.models.MobileNetV3SmallBackbone(
    stackwise_expansion,
    stackwise_filters,
    stackwise_kernel_size,
    stackwise_stride,
    stackwise_se_ratio,
    stackwise_activation,
    include_rescaling,
    input_shape=(None, None, 3),
    input_tensor=None,
    alpha=1.0,
    **kwargs
)

具有 14 层的 MobileNetV3Backbone 模型。

参考文献

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

参数

  • include_rescaling:布尔值,是否重新缩放输入。如果设置为 True,则输入将通过 Rescaling(scale=1 / 255) 层。默认为 True。
  • input_shape:可选的形状元组,默认为 (None, None, 3)。
  • input_tensor:可选的 Keras 张量(即 layers.Input() 的输出),用作模型的图像输入。

示例

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

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

[源代码]

MobileNetV3LargeBackbone

keras_cv.models.MobileNetV3LargeBackbone(
    stackwise_expansion,
    stackwise_filters,
    stackwise_kernel_size,
    stackwise_stride,
    stackwise_se_ratio,
    stackwise_activation,
    include_rescaling,
    input_shape=(None, None, 3),
    input_tensor=None,
    alpha=1.0,
    **kwargs
)

具有 28 层的 MobileNetV3Backbone 模型。

参考文献

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

参数

  • include_rescaling:布尔值,是否重新缩放输入。如果设置为 True,则输入将通过 Rescaling(scale=1 / 255) 层。默认为 True。
  • input_shape:可选的形状元组,默认为 (None, None, 3)。
  • input_tensor:可选的 Keras 张量(即 layers.Input() 的输出),用作模型的图像输入。

示例

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

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