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)