KerasHub: 预训练模型 / API 文档 / 模型架构 / HGNetV2 / HGNetV2Backbone 模型

HGNetV2Backbone 模型

[源代码]

HGNetV2Backbone

keras_hub.models.HGNetV2Backbone(
    depths,
    embedding_size,
    hidden_sizes,
    stem_channels,
    hidden_act,
    use_learnable_affine_block,
    stackwise_stage_filters,
    apply_downsample,
    use_lightweight_conv_block,
    image_shape=(None, None, 3),
    data_format=None,
    out_features=None,
    dtype=None,
    **kwargs
)

此类代表 HGNetV2 模型的 Keras Backbone。

此类实现 HGNetV2 主干架构,这是一种针对 GPU 效率优化的卷积神经网络 (CNN)。HGNetV2 在目标检测管道(如 RT-DETR 和 YOLO 变体)中常被用作轻量级 CNN 主干,在分类和检测任务上表现出色,与更大的 CNN 主干相比,具有速度提升和准确性提高。

参数

  • depths: int 列表,每个阶段中的块数。
  • embedding_size: int,嵌入层的大小。
  • hidden_sizes: int 列表,隐藏层的大小。
  • stem_channels: int 列表,stem 部分的通道数。
  • hidden_act: str,隐藏层的激活函数。
  • use_learnable_affine_block: bool,是否使用可学习的仿射变换。
  • stackwise_stage_filters: 元组列表,其中每个元组包含一个阶段的配置:(stage_in_channels, stage_mid_channels, stage_out_channels, stage_num_blocks, stage_num_of_layers, stage_kernel_size)。
    • stage_in_channels: int,阶段的输入通道数
    • stage_mid_channels: int,阶段的中间通道数
    • stage_out_channels: int,阶段的输出通道数
    • stage_num_blocks: int,阶段中的块数
    • stage_num_of_layers: int,每个块中的层数
    • stage_kernel_size: int,阶段的核大小
  • apply_downsample: bool 列表,是否在每个阶段进行下采样。
  • use_lightweight_conv_block: bool 列表,是否在每个阶段使用 HGNetV2 轻量级卷积块。
  • image_shape: 元组,输入图像的形状(不包含批量大小)。默认为 (None, None, 3)
  • data_format: None 或 str,数据格式('channels_last' 或 'channels_first')。如果未指定,则默认为 Keras 配置中的 image_data_format 值。
  • out_features: str 列表或 None,要返回的输出特征的名称。如果为 None,则返回所有阶段的所有可用特征。默认为 None
  • dtype: None 或 str 或 keras.mixed_precision.DTypePolicy,计算和权重的类型。

示例

import numpy as np
from keras_hub.src.models.hgnetv2.hgnetv2_backbone import HGNetV2Backbone
input_data = np.ones(shape=(8, 224, 224, 3))

# Pretrained backbone.
model = keras_hub.models.HGNetV2Backbone.from_preset(
    "hgnetv2_b5_ssld_stage2_ft_in1k"
)
model(input_data)

# Randomly initialized backbone with a custom config.
model = HGNetV2Backbone(
    depths=[1, 2, 4],
    embedding_size=32,
    hidden_sizes=[64, 128, 256],
    stem_channels=[3, 16, 32],
    hidden_act="relu",
    use_learnable_affine_block=False,
    stackwise_stage_filters=[
        (32, 16, 64, 1, 1, 3),     # Stage 0
        (64, 32, 128, 2, 1, 3),    # Stage 1
        (128, 64, 256, 4, 1, 3),   # Stage 2
    ],
    apply_downsample=[False, True, True],
    use_lightweight_conv_block=[False, False, False],
    image_shape=(224, 224, 3),
)
model(input_data)

[源代码]

from_preset 方法

HGNetV2Backbone.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,
)
预设 参数 描述
hgnetv2_b4_ssld_stage2_ft_in1k 13.60M HGNetV2 B4 模型,采用 2 阶段 SSLD 训练,在 ImageNet-1K 上进行了微调。
hgnetv2_b5_ssld_stage1_in22k_in1k 33.42M HGNetV2 B5 模型,采用 1 阶段 SSLD 训练,在 ImageNet-22K 上预训练,在 ImageNet-1K 上微调。
hgnetv2_b5_ssld_stage2_ft_in1k 33.42M HGNetV2 B5 模型,采用 2 阶段 SSLD 训练,在 ImageNet-1K 上进行了微调。
hgnetv2_b6_ssld_stage1_in22k_in1k 69.18M HGNetV2 B6 模型,采用 1 阶段 SSLD 训练,在 ImageNet-22K 上预训练,在 ImageNet-1K 上微调。
hgnetv2_b6_ssld_stage2_ft_in1k 69.18M HGNetV2 B6 模型,采用 2 阶段 SSLD 训练,在 ImageNet-1K 上进行了微调。