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 学习能力的新主干网络 中描述的 CSPNet 主干网络。

参数

  • 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""dark_block" 用于 DarkNet 块,"edge_block" 用于 EdgeResidual / Fused-MBConv 块。
  • groups: int,指定输入沿通道轴拆分为的组数。默认为 1
  • stage_type: str。可以是 "csp""dark""cs3""dark" 用于 DarkNet 阶段,"csp" 用于交叉阶段,"cs3" 用于只有一个转换卷积的交叉阶段。默认为 None,即默认为 "cs3"
  • activation: str。模型的激活函数。
  • output_strides: int,主干模型的输出步长。必须是 (8, 16, 32) 之一。默认为 32
  • bottle_ratio: float 或 float 元组/列表。中间瓶颈空间的维度(即瓶颈卷积中的输出过滤器数量),计算方式为 (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,将下采样通道增长到输出通道。仅适用于交叉阶段。默认为 False
  • cross_linear: bool,如果为 True,在扩展卷积后将不应用激活。仅适用于交叉阶段。默认为 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.jsonimage_data_format 的值。如果您从未设置它,则它将是 "channels_last"
  • image_shape: 元组。不带批量大小的输入形状。默认为 (None, None, 3)
  • dtypeNone 或 str 或 keras.mixed_precision.DTypePolicy。用于模型计算和权重的 dtype。

示例

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

# Pretrained backbone
model = keras_hub.models.CSPNetBackbone.from_preset(
    "csp_darknet_53_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)

从模型预设实例化一个 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. 一个本地预设目录的路径,如 './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,
)
预设 参数 描述
csp_resnext_50_ra_imagenet 20.57M 在随机增强的 ImageNet 1k 数据集上预训练的 CSP-ResNeXt(交叉阶段部分)图像分类模型,分辨率为 256x256。
csp_resnet_50_ra_imagenet 21.62M 在随机增强的 ImageNet 1k 数据集上预训练的 CSP-ResNet(交叉阶段部分)图像分类模型,分辨率为 256x256。
csp_darknet_53_ra_imagenet 27.64M 在随机增强的 ImageNet 1k 数据集上预训练的 CSP-DarkNet(交叉阶段部分)图像分类模型,分辨率为 256x256。
darknet_53_imagenet 41.61M 在 ImageNet 1k 数据集上预训练的 DarkNet 图像分类模型,分辨率为 256x256。