KerasHub: 预训练模型 / API 文档 / 模型架构 / MobileNetV5 / MobileNetV5Backbone 模型

MobileNetV5Backbone 模型

[源代码]

MobileNetV5Backbone

keras_hub.models.MobileNetV5Backbone(
    stackwise_block_types,
    stackwise_num_blocks,
    stackwise_num_filters,
    stackwise_strides,
    stackwise_act_layers,
    stackwise_exp_ratios,
    stackwise_se_ratios,
    stackwise_dw_kernel_sizes,
    stackwise_dw_start_kernel_sizes,
    stackwise_dw_end_kernel_sizes,
    stackwise_exp_kernel_sizes,
    stackwise_pw_kernel_sizes,
    stackwise_num_heads,
    stackwise_key_dims,
    stackwise_value_dims,
    stackwise_kv_strides,
    stackwise_use_cpe,
    filters=3,
    stem_size=16,
    stem_bias=True,
    fix_stem=False,
    num_features=2048,
    pad_type="same",
    use_msfa=True,
    msfa_indices=(-2, -1),
    msfa_output_resolution=16,
    act_layer="gelu",
    norm_layer="rms_norm",
    se_layer=keras_hub.src.models.mobilenet.mobilenet_backbone.SqueezeAndExcite2D,
    se_from_exp=True,
    round_chs_fn=round_channels,
    drop_path_rate=0.0,
    layer_scale_init_value=None,
    image_shape=(None, None, 3),
    data_format=None,
    dtype=None,
    **kwargs
)

MobileNetV5 主干网络。

此类表示 MobileNetV5 架构的主干,可用作各种下游任务的特征提取器。

参数

  • stackwise_block_types: 列表的列表,包含字符串。每个堆栈中每个块的块类型。
  • stackwise_num_blocks: 整数列表。每个堆栈的块数。
  • stackwise_num_filters: 整数列表的列表。每个堆栈中每个块的滤波器数量。
  • stackwise_strides: 整数列表的列表。每个堆栈中每个块的步幅。
  • stackwise_act_layers: 字符串列表的列表。每个堆栈中每个块的激活函数。
  • stackwise_exp_ratios: 浮点数列表的列表。每个堆栈中每个块的扩展比。
  • stackwise_se_ratios: 浮点数列表的列表。每个堆栈中每个块的 SE 比。
  • stackwise_dw_kernel_sizes: 整数列表的列表。每个堆栈中每个块的深度卷积核大小。
  • stackwise_dw_start_kernel_sizes: 整数列表的列表。每个堆栈中每个 uir 块的起始深度卷积核大小。
  • stackwise_dw_end_kernel_sizes: 整数列表的列表。每个堆栈中每个 uir 块的结束深度卷积核大小。
  • stackwise_exp_kernel_sizes: 整数列表的列表。每个堆栈中每个 er 块的扩展卷积核大小。
  • stackwise_pw_kernel_sizes: 整数列表的列表。每个堆栈中每个 er 块的点卷积核大小。
  • stackwise_num_heads: 整数列表的列表。每个堆栈中每个 mqamha 块的注意力头数。
  • stackwise_key_dims: 整数列表的列表。每个堆栈中每个 mqamha 块的关键维度。
  • stackwise_value_dims: 整数列表的列表。每个堆栈中每个 mqamha 块的值维度。
  • stackwise_kv_strides: 整数列表的列表。每个堆栈中每个 mqamha 块的键值步幅。
  • stackwise_use_cpe: 布尔值列表的列表。是否为每个堆栈中的每个 mqamha 块使用条件位置编码。
  • filters: int. 输入通道数。
  • stem_size: int. Stem 卷积中的通道数。
  • stem_bias: bool. 如果为 True,则在 stem 卷积中使用偏置项。
  • fix_stem: bool. 如果为 True,则 stem 大小不会被四舍五入。
  • num_features: int. 输出特征数,当 use_msfaTrue 时使用。
  • pad_type: str. 卷积的填充类型。
  • use_msfa: bool. 如果为 True,则使用多尺度融合适配器。
  • msfa_indices: tuple. MSFA 使用的特征图的索引。
  • msfa_output_resolution: int. MSFA 的输出分辨率。
  • act_layer: str. 要使用的激活函数。
  • norm_layer: str. 要使用的归一化层。
  • se_layer: keras.layers.Layer. 要使用的 Squeeze-and-Excitation 层。
  • se_from_exp: bool. 如果为 True,则 SE 通道缩减基于扩展的通道。
  • round_chs_fn: callable. 用于四舍五入通道数的函数。
  • drop_path_rate: float. 随机深度率。
  • layer_scale_init_value: float. 层缩放的初始值。
  • image_shape: tuple. 输入图像的形状。默认为 (None, None, 3)
  • data_format: str, 图像通道的数据格式。可以是 "channels_first""channels_last"。如果指定为 None,则将使用您 Keras 配置文件中的 image_data_format 值,位于 ~/.keras/keras.json。默认为 None
  • dtype: None 或 str 或 keras.mixed_precision.DTypePolicy。用于模型计算和权重的 dtype。默认为 None

示例

import keras
from keras_hub.models import MobileNetV5Backbone

# Randomly initialized backbone with a custom config.
model_args = {
    "stackwise_block_types": [["er"], ["uir", "uir"]],
    "stackwise_num_blocks": [1, 2],
    "stackwise_num_filters": [[24], [48, 48]],
    "stackwise_strides": [[2], [2, 1]],
    "stackwise_act_layers": [["relu"], ["relu", "relu"]],
    "stackwise_exp_ratios": [[4.0], [6.0, 6.0]],
    "stackwise_se_ratios": [[0.0], [0.0, 0.0]],
    "stackwise_dw_kernel_sizes": [[0], [5, 5]],
    "stackwise_dw_start_kernel_sizes": [[0], [0, 0]],
    "stackwise_dw_end_kernel_sizes": [[0], [0, 0]],
    "stackwise_exp_kernel_sizes": [[3], [0, 0]],
    "stackwise_pw_kernel_sizes": [[1], [0, 0]],
    "stackwise_num_heads": [[0], [0, 0]],
    "stackwise_key_dims": [[0], [0, 0]],
    "stackwise_value_dims": [[0], [0, 0]],
    "stackwise_kv_strides": [[0], [0, 0]],
    "stackwise_use_cpe": [[False], [False, False]],
    "use_msfa": False,
}
model = MobileNetV5Backbone(**model_args)
input_data = keras.ops.ones((1, 224, 224, 3))
output = model(input_data)

# Load the backbone from a preset and run a prediction.
backbone = MobileNetV5Backbone.from_preset("mobilenetv5_300m_gemma3n")

# Expected output shape = (1, 16, 16, 2048).
outputs = backbone.predict(keras.ops.ones((1, 224, 224, 3)))

[源代码]

from_preset 方法

MobileNetV5Backbone.from_preset(preset, load_weights=True, **kwargs)

从模型预设实例化一个 keras_hub.models.Backbone

预设是一个包含配置、权重和其他文件资源的目录,用于保存和加载预训练模型。preset 可以作为以下之一传递:

  1. 一个内置的预设标识符,如 'bert_base_en'
  2. 一个 Kaggle Models 句柄,如 'kaggle://user/bert/keras/bert_base_en'
  3. 一个 Hugging Face 句柄,如 'hf://user/bert_base_en'
  4. 一个 ModelScope 句柄,例如 'modelscope://user/bert_base_en'
  5. 一个本地预设目录的路径,如 './bert_base_en'

此构造函数可以通过两种方式之一调用。要么从基类调用,如 keras_hub.models.Backbone.from_preset(),要么从模型类调用,如 keras_hub.models.GemmaBackbone.from_preset()。如果从基类调用,则返回对象的子类将根据预设目录中的配置进行推断。

对于任何 Backbone 子类,您可以运行 cls.presets.keys() 来列出该类上所有可用的内置预设。

参数

  • preset:字符串。一个内置预设标识符、一个 Kaggle Models 句柄、一个 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,
)
预设 参数 描述
mobilenetv5_300m_enc_gemma3n 294.28M 轻量级 3 亿参数的卷积视觉编码器,用作 Gemma 3n 的图像骨干网络。