DeepLabV3Plus 分割
[來源]
DeepLabV3Plus
類別
keras_cv.models.DeepLabV3Plus(
backbone,
num_classes,
projection_filters=48,
spatial_pyramid_pooling=None,
segmentation_head=None,
**kwargs
)
一個實現 DeepLabV3+ 架構的 Keras 模型,用於語義分割。
參考文獻
參數
- backbone:
keras.Model
。模型的主幹網路,用作 DeepLabV3+ 編碼器的特徵提取器。應該是 keras_cv.models.backbones.backbone.Backbone
或實現了 pyramid_level_inputs
屬性(鍵為 "P2" 和 "P5",值為層名稱)的 keras.Model
。在許多情況下,一個合理的選擇是使用 keras_cv.models.ResNet50V2Backbone.from_preset("resnet50_v2_imagenet")
。
- num_classes:整數,檢測模型的類別數。請注意,
num_classes
包含背景類別,資料中的類別應由範圍為 [0, num_classes
) 的整數表示。
- projection_filters:整數,投影來自
backbone
的低級特徵的卷積層中的濾波器數量。默認值設置為 48
,與 TensorFlow 的 DeepLab 實現 相同。 # noqa: E501
- spatial_pyramid_pooling:(可選)
keras.layers.Layer
。也稱為空洞空間金字塔池化 (ASPP)。在金字塔的不同空間級別上執行空間池化,並帶有膨脹率。如果提供,則來自主幹的特徵圖將在 DeepLabV3 編碼器內部傳遞給它,否則將使用 keras_cv.layers.spatial_pyramid.SpatialPyramidPooling
。
- segmentation_head:(可選)
keras.layers.Layer
。如果提供,DeepLabV3 編碼器的輸出將傳遞給該層,它應該基於來自主幹的特徵和來自解碼器的特徵預測分割掩碼,否則將使用默認的 DeepLabV3 卷積頭。
範例
import keras_cv
images = np.ones(shape=(1, 96, 96, 3))
labels = np.zeros(shape=(1, 96, 96, 1))
backbone = keras_cv.models.ResNet50V2Backbone(input_shape=[96, 96, 3])
model = keras_cv.models.segmentation.DeepLabV3Plus(
num_classes=1, backbone=backbone,
)
# Evaluate model
model(images)
# Train model
model.compile(
optimizer="adam",
loss=keras.losses.BinaryCrossentropy(from_logits=False),
metrics=["accuracy"],
)
model.fit(images, labels, epochs=3)
[來源]
from_preset
方法
DeepLabV3Plus.from_preset()
從預設配置和權重實例化 DeepLabV3Plus 模型。
參數
- 預設模型:字串。必須為以下其中之一:"resnet18"、"resnet34"、"resnet50"、"resnet101"、"resnet152"、"resnet18_v2"、"resnet34_v2"、"resnet50_v2"、"resnet101_v2"、"resnet152_v2"、"mobilenet_v3_small"、"mobilenet_v3_large"、"csp_darknet_tiny"、"csp_darknet_s"、"csp_darknet_m"、"csp_darknet_l"、"csp_darknet_xl"、"efficientnetv1_b0"、"efficientnetv1_b1"、"efficientnetv1_b2"、"efficientnetv1_b3"、"efficientnetv1_b4"、"efficientnetv1_b5"、"efficientnetv1_b6"、"efficientnetv1_b7"、"efficientnetv2_s"、"efficientnetv2_m"、"efficientnetv2_l"、"efficientnetv2_b0"、"efficientnetv2_b1"、"efficientnetv2_b2"、"efficientnetv2_b3"、"densenet121"、"densenet169"、"densenet201"、"efficientnetlite_b0"、"efficientnetlite_b1"、"efficientnetlite_b2"、"efficientnetlite_b3"、"efficientnetlite_b4"、"yolo_v8_xs_backbone"、"yolo_v8_s_backbone"、"yolo_v8_m_backbone"、"yolo_v8_l_backbone"、"yolo_v8_xl_backbone"、"vitdet_base"、"vitdet_large"、"vitdet_huge"、"videoswin_tiny"、"videoswin_small"、"videoswin_base"、"resnet50_imagenet"、"resnet50_v2_imagenet"、"mobilenet_v3_large_imagenet"、"mobilenet_v3_small_imagenet"、"csp_darknet_tiny_imagenet"、"csp_darknet_l_imagenet"、"efficientnetv2_s_imagenet"、"efficientnetv2_b0_imagenet"、"efficientnetv2_b1_imagenet"、"efficientnetv2_b2_imagenet"、"densenet121_imagenet"、"densenet169_imagenet"、"densenet201_imagenet"、"yolo_v8_xs_backbone_coco"、"yolo_v8_s_backbone_coco"、"yolo_v8_m_backbone_coco"、"yolo_v8_l_backbone_coco"、"yolo_v8_xl_backbone_coco"、"vitdet_base_sa1b"、"vitdet_large_sa1b"、"vitdet_huge_sa1b"、"videoswin_tiny_kinetics400"、"videoswin_small_kinetics400"、"videoswin_base_kinetics400"、"videoswin_base_kinetics400_imagenet22k"、"videoswin_base_kinetics600_imagenet22k"、"videoswin_base_something_something_v2"、"deeplab_v3_plus_resnet50_pascalvoc"。如果您正在尋找具有預先訓練權重的預設模型,請選擇以下其中之一:"resnet50_imagenet"、"resnet50_v2_imagenet"、"mobilenet_v3_large_imagenet"、"mobilenet_v3_small_imagenet"、"csp_darknet_tiny_imagenet"、"csp_darknet_l_imagenet"、"efficientnetv2_s_imagenet"、"efficientnetv2_b0_imagenet"、"efficientnetv2_b1_imagenet"、"efficientnetv2_b2_imagenet"、"densenet121_imagenet"、"densenet169_imagenet"、"densenet201_imagenet"、"yolo_v8_xs_backbone_coco"、"yolo_v8_s_backbone_coco"、"yolo_v8_m_backbone_coco"、"yolo_v8_l_backbone_coco"、"yolo_v8_xl_backbone_coco"、"vitdet_base_sa1b"、"vitdet_large_sa1b"、"vitdet_huge_sa1b"、"videoswin_tiny_kinetics400"、"videoswin_small_kinetics400"、"videoswin_base_kinetics400"、"videoswin_base_kinetics400_imagenet22k"、"videoswin_base_kinetics600_imagenet22k"、"videoswin_base_something_something_v2"、"deeplab_v3_plus_resnet50_pascalvoc"。
- 載入權重:是否將預先訓練的權重載入模型中。預設為
None
,這取決於預設模型是否有可用的預先訓練權重。
- 輸入形狀:將傳遞給骨幹網路初始化的輸入形狀,預設為
None
。如果為 None
,則將使用預設模型的值。
範例
# Load architecture and weights from preset
model = keras_cv.models.DeepLabV3Plus.from_preset(
"resnet50_imagenet",
)
# Load randomly initialized model from preset architecture with weights
model = keras_cv.models.DeepLabV3Plus.from_preset(
"resnet50_imagenet",
load_weights=False,
預設模型名稱 |
參數 |
說明 |
deeplab_v3_plus_resnet50_pascalvoc |
39.19M |
具有 ResNet50 v2 骨幹網路的 DeeplabV3Plus。在 PascalVOC 2012 語意分割任務上進行訓練,該任務包含 20 個類別和一個背景類別。此模型在評估數據集上達到了 89.34% 的最終分類準確率和 0.6391 的 mIoU。此預設模型僅與 Keras 3 相容。 |