ImageClassifier 模型
[來源]
ImageClassifier
類別
keras_cv.models.ImageClassifier(
backbone, num_classes, pooling="avg", activation="softmax", **kwargs
)
具有池化層和密集層預測頭的影像分類器。
參數
- backbone:
keras.Model
實例,在輸入上呼叫的分類器骨幹架構。將在骨幹輸出的最後一個維度上呼叫池化層。
- num_classes: int,要預測的類別數。
- pooling: str,池化層的類型。必須是 "avg" 或 "max" 之一。
- activation: 可選的
str
或可呼叫物件,預設為 "softmax"。要在密集層上使用的激活函數。設定 activation=None
以返回輸出 logits。
範例
input_data = tf.ones(shape=(8, 224, 224, 3))
# Pretrained classifier (e.g., for imagenet categories)
model = keras_cv.models.ImageClassifier.from_preset(
"resnet50_v2_imagenet_classifier",
)
output = model(input_data)
# Pretrained backbone
backbone = keras_cv.models.ResNet50V2Backbone.from_preset(
"resnet50_v2_imagenet",
)
model = keras_cv.models.ImageClassifier(
backbone=backbone,
num_classes=4,
)
output = model(input_data)
# Randomly initialized backbone with a custom config
model = keras_cv.models.ImageClassifier(
backbone=keras_cv.models.ResNet50V2Backbone(),
num_classes=4,
)
output = model(input_data)
[來源]
from_preset
方法
ImageClassifier.from_preset()
從預設配置和權重實例化 ImageClassifier 模型。
參數
- preset:字串。必須為下列其中一項:"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"、"resnet50_v2_imagenet_classifier"、"efficientnetv2_s_imagenet_classifier"、"efficientnetv2_b0_imagenet_classifier"、"efficientnetv2_b1_imagenet_classifier"、"efficientnetv2_b2_imagenet_classifier"、"mobilenet_v3_large_imagenet_classifier"。如果您要尋找具有預先訓練權重的預設值,請選擇以下其中一項:"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"、"resnet50_v2_imagenet_classifier"、"efficientnetv2_s_imagenet_classifier"、"efficientnetv2_b0_imagenet_classifier"、"efficientnetv2_b1_imagenet_classifier"、"efficientnetv2_b2_imagenet_classifier"、"mobilenet_v3_large_imagenet_classifier"。
- load_weights:是否將預先訓練的權重載入模型中。預設值為
None
,這取決於預設值是否有可用的預先訓練權重。
- input_shape :將傳遞給骨幹初始化的輸入形狀,預設值為
None
。如果為 None
,則將使用預設值。
範例
# Load architecture and weights from preset
model = keras_cv.models.ImageClassifier.from_preset(
"resnet50_imagenet",
)
# Load randomly initialized model from preset architecture with weights
model = keras_cv.models.ImageClassifier.from_preset(
"resnet50_imagenet",
load_weights=False,
預設名稱 |
參數 |
說明 |
resnet50_v2_imagenet_classifier |
25.61M |
具有 50 個層的 ResNet 分類器,其中批次正規化和 ReLU 激活先於卷積層(v2 樣式)。在 Imagenet 2012 分類任務上訓練。 |
efficientnetv2_s_imagenet_classifier |
21.61M |
使用 EfficientNet 小型架構的影像分類器。在 EfficientNet 架構的這個變體中,有 6 個卷積區塊。權重初始化為預先訓練的 imagenet 分類權重。已發布的權重能夠在 imagenet 上獲得 83.9% 的 top 1 準確率和 96.7% 的 top 5 準確率。 |
efficientnetv2_b0_imagenet_classifier |
7.20M |
使用 EfficientNet B0 架構的影像分類器。在 EfficientNet 架構的這個變體中,有 6 個卷積區塊。與所有 B 類型 EfficientNet 變體一樣,每個卷積區塊中的濾波器數量按 width_coefficient=1.0 和 depth_coefficient=1.0 進行縮放。權重初始化為預先訓練的 imagenet 分類權重。已發布的權重能夠在 imagenet 上獲得 77.1% 的 top 1 準確率和 93.3% 的 top 5 準確率。 |
efficientnetv2_b1_imagenet_classifier |
8.21M |
使用 EfficientNet B1 架構的影像分類器。在 EfficientNet 架構的這個變體中,有 6 個卷積區塊。與所有 B 類型 EfficientNet 變體一樣,每個卷積區塊中的濾波器數量按 width_coefficient=1.0 和 depth_coefficient=1.1 進行縮放。權重初始化為預先訓練的 imagenet 分類權重。已發布的權重能夠在 imagenet 上獲得 79.1% 的 top 1 準確率和 94.4% 的 top 5 準確率。 |
efficientnetv2_b2_imagenet_classifier |
10.18M |
使用 EfficientNet B2 架構的 ImageClassifier。在 EfficientNet 架構的這個變體中,有 6 個卷積塊。與所有 B 類型 EfficientNet 變體一樣,每個卷積塊中的過濾器數量按 width_coefficient=1.1 和 depth_coefficient1.2 進行縮放。權重初始化為預先訓練的 imagenet 分類權重。已發布的權重能夠在 imagenet 上獲得 80.1% 的 top 1 準確率和 94.9% 的 top 5 準確率。 |
mobilenet_v3_large_imagenet_classifier |
3.96M |
使用 MobileNetV3Large 架構的 ImageClassifier。此預設集使用 Dense 層作為分類頭,而不是典型的全卷積 MobileNet 頭。因此,它的參數比原始 MobileNetV3Large 模型少,後者有 540 萬個參數。已發布的權重能夠在 imagenet 上獲得 69.4% 的 top-1 準確率和 89.4% 的 top 5 準確率。 |