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
)

此类代表 Keras CSPNet 模型的主干。

此类实现了 CSPNet: A New Backbone that can Enhance Learning Capability of CNN 中所述的 CSPNet 主干。

参数

  • stem_filters:int 或 int 列表,表示 stem 的滤波器大小。
  • stem_kernel_size:int 或 2 个整数的元组/列表,表示 stem 的卷积核大小。
  • stem_strides:int 或 2 个整数的元组/列表,表示 stem 的卷积步长。
  • 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" 表示 Cross Stage,使用 "cs3" 表示只有一次转换卷积的 Cross Stage。默认为 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,stem 的填充值,可以是 "valid""same"。默认为 "valid"
  • stem_pooling:str,stem 的池化值。默认为 None
  • avg_down:bool,如果为 True,则在每个阶段的开始处应用 AveragePooling2D(当 strides == 2 时)。默认为 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: 元组。不带批量大小的输入形状。默认为 (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. 一个 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,
)
预设 参数 描述
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。