KerasHub:预训练模型 / API 文档 / 模型架构 / CSPNet / CSPNetBackbone 模型

CSPNetBackbone 模型

[来源]

CSPNetBackbone

keras_hub.models.CSPNetBackbone(
    stem_filters,
    stem_kernel_size,
    stem_strides,
    stackwise_depth,
    stackwise_strides,
    stackwise_num_filters,
    block_type,
    groups=1,
    stage_type=None,
    activation="leaky_relu",
    output_strides=32,
    bottle_ratio=[1.0],
    block_ratio=[1.0],
    expand_ratio=[1.0],
    stem_padding="valid",
    stem_pooling=None,
    avg_down=False,
    down_growth=False,
    cross_linear=False,
    image_shape=(None, None, 3),
    data_format=None,
    dtype=None,
    **kwargs
)

此类表示 CSPNet 模型的 Keras Backbone。

此类实现了 CSPNet: 一个可以增强 CNN 学习能力的新 Backbone (CSPNet: A New Backbone that can Enhance Learning Capability of CNN) 中描述的 CSPNet Backbone。

参数

  • stem_filters: int 或 int 列表,茎的滤波器大小。
  • stem_kernel_size: int 或 2 个整数的元组/列表,茎的核大小。
  • stem_strides: int 或 2 个整数的元组/列表,茎的卷积步长。
  • stackwise_num_filters: int 列表,模型中每个块级别的滤波器大小。
  • stackwise_strides: int 或 int 的元组/列表,模型中每个块级别的步长。
  • stackwise_depth: int 列表,表示模型中每个块级别的深度(块数)。
  • block_type: str。可以是 "bottleneck_block""dark_block""edge_block" 之一。对 DarkNet 块使用 "dark_block",对 EdgeResidual / Fused-MBConv 块使用 "edge_block"
  • groups: int,指定输入沿通道轴分割成的组数。默认为 1
  • stage_type: str。可以是 "csp""dark""cs3" 之一。对 DarkNet 阶段使用 "dark",对 Cross Stage 使用 "csp",对只有一个过渡卷积的 Cross Stage 使用 "cs3"。默认为 None,此时默认为 "cs3"
  • activation: str。模型的激活函数。
  • output_strides: int,backbone 模型的输出步长。必须是 (8, 16, 32) 之一。默认为 32
  • bottle_ratio: float 或 float 的元组/列表。中间 bottleneck 空间的维度(即 bottleneck 卷积的输出滤波器数),计算方式为 (filters * bottle_ratio),并应用于
    • "dark_block""edge_block" 的第一个卷积
    • 每个阶段 "bottleneck_block" 的前两个卷积。默认为 1.0
  • block_ratio: float 或 float 的元组/列表。每个块的滤波器大小,计算方式为每个阶段 (stackwise_num_filters * block_ratio)。默认为 1.0
  • expand_ratio: float 或 float 的元组/列表。不同级别 "csp""cs3" 阶段的滤波器比率。默认为 1.0
  • stem_padding: str,茎的填充值,可以是 "valid""same"。默认为 "valid"
  • stem_pooling: str,茎的池化值。默认为 None
  • avg_down: bool,如果为 True,当 strides == 2 时,在每个阶段开始应用 AveragePooling2D。默认为 False
  • down_growth: bool,下采样通道增长到输出通道。仅应用于 Cross Stage。默认为 False
  • cross_linear: bool,如果为 True,在扩张卷积后不应用激活。仅应用于 Cross Stage。默认为 False
  • data_format: None 或 str。如果指定,可以是 "channels_last""channels_first"。输入的维度顺序。"channels_last" 对应形状为 (batch_size, height, width, channels) 的输入,而 "channels_first" 对应形状为 (batch_size, channels, height, width) 的输入。它默认为 Keras 配置文件 ~/.keras/keras.json 中找到的 image_data_format 值。如果您从未设置过它,则默认为 "channels_last"
  • image_shape: tuple。不包含 batch size 的输入形状。默认为 (None, None, 3)
  • dtype: None 或 str 或 keras.mixed_precision.DTypePolicy。用于模型计算和权重的 dtype。

示例

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

# Pretrained backbone
model = keras_hub.models.CSPNetBackbone.from_preset(
    "cspdarknet53_ra_imagenet"
)
model(input_data)

# Randomly initialized backbone with a custom config
model = keras_hub.models.CSPNetBackbone(
    stem_filters=32,
    stem_kernel_size=3,
    stem_strides=1,
    stackwise_depth=[1, 2, 4],
    stackwise_strides=[1, 2, 2],
    stackwise_num_filters=[32, 64, 128],
    block_type="dark,
)
model(input_data)

[来源]

from_preset 方法

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

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

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

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

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

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

参数

  • preset: string。内置 preset 标识符、Kaggle Models 句柄、Hugging Face 句柄或本地目录的路径。
  • load_weights: bool。如果为 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,
)
Preset 参数 描述
csp_darknet_53_ra_imagenet 26.65M 一个 CSP-DarkNet (Cross-Stage-Partial) 图像分类模型,在 Randomly Augmented ImageNet 1k 数据集上以 224x224 分辨率进行预训练。