Keras 3 API 文档 / KerasCV / 模型 / 主干网络 / ResNetV1 主干网络

ResNetV1 主干网络

[源代码]

ResNetBackbone

keras_cv.models.ResNetBackbone(
    stackwise_filters,
    stackwise_blocks,
    stackwise_strides,
    include_rescaling,
    input_shape=(None, None, 3),
    input_tensor=None,
    block_type="block",
    **kwargs
)

实例化 ResNet 架构。

参考

ResNetV1 和 ResNetV2 的区别在于其各个构建块的结构。在 ResNetV2 中,批归一化和 ReLU 激活在卷积层之前应用,而 ResNetV1 则在卷积层之后应用批归一化和 ReLU 激活。

对于迁移学习用例,请务必阅读 迁移学习和微调指南

参数

  • stackwise_filters: 整数列表,模型中每个堆栈的过滤器数量。
  • stackwise_blocks: 整数列表,模型中每个堆栈的块数。
  • stackwise_strides: 整数列表,模型中每个堆栈的步幅。
  • include_rescaling: 布尔值,是否对输入进行缩放。如果设置为 True,则输入将通过 Rescaling(1/255.0) 层。
  • input_shape: 可选的形状元组,默认为 (None, None, 3)。
  • input_tensor: 可选的 Keras 张量(例如,layers.Input() 的输出),用作模型的图像输入。
  • block_type: 字符串,"basic_block" 或 "block" 之一。要堆叠的块类型。对于 ResNet18 和 ResNet34,使用 "basic_block"。

示例

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

# Pretrained backbone
model = keras_cv.models.ResNetBackbone.from_preset("resnet50_imagenet")
output = model(input_data)

# Randomly initialized backbone with a custom config
model = ResNetBackbone(
    stackwise_filters=[64, 128, 256, 512],
    stackwise_blocks=[2, 2, 2, 2],
    stackwise_strides=[1, 2, 2, 2],
    include_rescaling=False,
)
output = model(input_data)

[源代码]

from_preset 方法

ResNetBackbone.from_preset()

从预设配置和权重实例化 ResNetBackbone 模型。

参数

  • preset: 字符串。必须是 "resnet18"、"resnet34"、"resnet50"、"resnet101"、"resnet152"、"resnet50_imagenet" 之一。如果要查找具有预训练权重的预设,请选择 "resnet50_imagenet" 之一。
  • load_weights: 是否将预训练权重加载到模型中。默认为 None,它遵循预设是否有可用的预训练权重。

示例

# Load architecture and weights from preset
model = keras_cv.models.ResNetBackbone.from_preset(
    "resnet50_imagenet",
)

# Load randomly initialized model from preset architecture with weights
model = keras_cv.models.ResNetBackbone.from_preset(
    "resnet50_imagenet",
    load_weights=False,
预设名称 参数 描述
resnet18 11.19M 具有 18 层的 ResNet 模型,其中批归一化和 ReLU 激活在卷积层之后应用(v1 样式)。
resnet34 21.30M 具有 34 层的 ResNet 模型,其中批归一化和 ReLU 激活在卷积层之后应用(v1 样式)。
resnet50 23.56M 具有 50 层的 ResNet 模型,其中批归一化和 ReLU 激活在卷积层之后应用(v1 样式)。
resnet101 42.61M 具有 101 层的 ResNet 模型,其中批归一化和 ReLU 激活在卷积层之后应用(v1 样式)。
resnet152 58.30M 具有 152 层的 ResNet 模型,其中批归一化和 ReLU 激活在卷积层之后应用(v1 样式)。
resnet50_imagenet 23.56M 具有 50 层的 ResNet 模型,其中批归一化和 ReLU 激活在卷积层之后应用(v1 样式)。在 Imagenet 2012 分类任务上训练。

[源代码]

ResNet18Backbone

keras_cv.models.ResNet18Backbone(
    stackwise_filters,
    stackwise_blocks,
    stackwise_strides,
    include_rescaling,
    input_shape=(None, None, 3),
    input_tensor=None,
    block_type="block",
    **kwargs
)

具有 18 层的 ResNetBackbone(V1)模型。

参考

ResNetV1 和 ResNetV2 的区别在于其各个构建块的结构。在 ResNetV2 中,批归一化和 ReLU 激活在卷积层之前应用,而 ResNetV1 则在卷积层之后应用批归一化和 ReLU 激活。

对于迁移学习用例,请务必阅读 迁移学习和微调指南

参数

  • include_rescaling: 布尔值,是否对输入进行缩放。如果设置为 True,则输入将通过 Rescaling(1/255.0) 层。
  • input_shape: 可选的形状元组,默认为 (None, None, 3)。
  • input_tensor: 可选的 Keras 张量(例如,layers.Input() 的输出),用作模型的图像输入。

示例

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

# Randomly initialized backbone
model = ResNet18Backbone()
output = model(input_data)

[源代码]

ResNet34Backbone

keras_cv.models.ResNet34Backbone(
    stackwise_filters,
    stackwise_blocks,
    stackwise_strides,
    include_rescaling,
    input_shape=(None, None, 3),
    input_tensor=None,
    block_type="block",
    **kwargs
)

具有 34 层的 ResNetBackbone(V1)模型。

参考

ResNetV1 和 ResNetV2 的区别在于其各个构建块的结构。在 ResNetV2 中,批归一化和 ReLU 激活在卷积层之前应用,而 ResNetV1 则在卷积层之后应用批归一化和 ReLU 激活。

对于迁移学习用例,请务必阅读 迁移学习和微调指南

参数

  • include_rescaling: 布尔值,是否对输入进行缩放。如果设置为 True,则输入将通过 Rescaling(1/255.0) 层。
  • input_shape: 可选的形状元组,默认为 (None, None, 3)。
  • input_tensor: 可选的 Keras 张量(例如,layers.Input() 的输出),用作模型的图像输入。

示例

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

# Randomly initialized backbone
model = ResNet34Backbone()
output = model(input_data)

[源代码]

ResNet50Backbone

keras_cv.models.ResNet50Backbone(
    stackwise_filters,
    stackwise_blocks,
    stackwise_strides,
    include_rescaling,
    input_shape=(None, None, 3),
    input_tensor=None,
    block_type="block",
    **kwargs
)

具有 50 层的 ResNetBackbone(V1)模型。

参考

ResNetV1 和 ResNetV2 的区别在于其各个构建块的结构。在 ResNetV2 中,批归一化和 ReLU 激活在卷积层之前应用,而 ResNetV1 则在卷积层之后应用批归一化和 ReLU 激活。

对于迁移学习用例,请务必阅读 迁移学习和微调指南

参数

  • include_rescaling: 布尔值,是否对输入进行缩放。如果设置为 True,则输入将通过 Rescaling(1/255.0) 层。
  • input_shape: 可选的形状元组,默认为 (None, None, 3)。
  • input_tensor: 可选的 Keras 张量(例如,layers.Input() 的输出),用作模型的图像输入。

示例

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

# Randomly initialized backbone
model = ResNet50Backbone()
output = model(input_data)

[源代码]

ResNet101Backbone

keras_cv.models.ResNet101Backbone(
    stackwise_filters,
    stackwise_blocks,
    stackwise_strides,
    include_rescaling,
    input_shape=(None, None, 3),
    input_tensor=None,
    block_type="block",
    **kwargs
)

具有 101 层的 ResNetBackbone(V1)模型。

参考

ResNetV1 和 ResNetV2 的区别在于其各个构建块的结构。在 ResNetV2 中,批归一化和 ReLU 激活在卷积层之前应用,而 ResNetV1 则在卷积层之后应用批归一化和 ReLU 激活。

对于迁移学习用例,请务必阅读 迁移学习和微调指南

参数

  • include_rescaling: 布尔值,是否对输入进行缩放。如果设置为 True,则输入将通过 Rescaling(1/255.0) 层。
  • input_shape: 可选的形状元组,默认为 (None, None, 3)。
  • input_tensor: 可选的 Keras 张量(例如,layers.Input() 的输出),用作模型的图像输入。

示例

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

# Randomly initialized backbone
model = ResNet101Backbone()
output = model(input_data)

[源代码]

ResNet152Backbone

keras_cv.models.ResNet152Backbone(
    stackwise_filters,
    stackwise_blocks,
    stackwise_strides,
    include_rescaling,
    input_shape=(None, None, 3),
    input_tensor=None,
    block_type="block",
    **kwargs
)

具有 152 层的 ResNetBackbone(V1)模型。

参考

ResNetV1 和 ResNetV2 的区别在于其各个构建块的结构。在 ResNetV2 中,批归一化和 ReLU 激活在卷积层之前应用,而 ResNetV1 则在卷积层之后应用批归一化和 ReLU 激活。

对于迁移学习用例,请务必阅读 迁移学习和微调指南

参数

  • include_rescaling: 布尔值,是否对输入进行缩放。如果设置为 True,则输入将通过 Rescaling(1/255.0) 层。
  • input_shape: 可选的形状元组,默认为 (None, None, 3)。
  • input_tensor: 可选的 Keras 张量(例如,layers.Input() 的输出),用作模型的图像输入。

示例

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

# Randomly initialized backbone
model = ResNet152Backbone()
output = model(input_data)