KerasHub:预训练模型 / API 文档 / 模型架构 / RetinaNet / RetinaNetObjectDetector 模型

RetinaNetObjectDetector 模型

[来源]

RetinaNetObjectDetector

keras_hub.models.RetinaNetObjectDetector(
    backbone,
    num_classes,
    bounding_box_format="yxyx",
    anchor_generator=None,
    label_encoder=None,
    use_prediction_head_norm=False,
    classification_head_prior_probability=0.01,
    pre_logits_num_conv_layers=4,
    preprocessor=None,
    activation=None,
    dtype=None,
    prediction_decoder=None,
    **kwargs
)

RetinaNet 目标检测模型。

此类实现了 RetinaNet 目标检测架构。它包含一个特征提取器骨干网络、一个特征金字塔网络 (FPN) 以及两个预测头(用于分类和边界框回归)。

参数

  • backbone: keras.Model. 一个 keras.models.RetinaNetBackbone 类,定义了骨干网络的架构。为检测提供特征图。
  • anchor_generator: 一个 keras_hub.layers.AnchorGenerator 实例。在图像的不同尺度和纵横比上生成锚框。如果为 None,则使用以下参数创建默认的 AnchorGenerator: - bounding_box_format:与模型的 bounding_box_format 相同。 - min_level:骨干网络的 min_level。 - max_level:骨干网络的 max_level。 - num_scales:3。 - aspect_ratios:[0.5, 1.0, 2.0]。 - anchor_size:4.0。您可以通过实例化 keras_hub.layers.AnchorGenerator 类并传递所需参数来创建自定义的 AnchorGenerator
  • num_classes: int. 要检测的对象类别数量。
  • bounding_box_format: str. 数据集边界框格式(例如,"xyxy","yxyx")。默认为 yxyx
  • label_encoder: Optional. 一个 RetinaNetLabelEncoder 实例。将地面真值框和类别编码为训练目标。它根据 IoU 将地面真值框与锚框匹配,并将框坐标编码为偏移量。如果为 None,则创建一个默认编码器。有关详细信息,请参阅 RetinaNetLabelEncoder 类。如果为 None,则使用标准参数创建默认编码器。 - anchor_generator:与模型的相同。 - bounding_box_format:与模型的 bounding_box_format 相同。 - positive_threshold:0.5 - negative_threshold:0.4 - encoding_format:"center_xywh" - box_variance:[1.0, 1.0, 1.0, 1.0] - background_class:-1 - ignore_class:-2
  • use_prediction_head_norm: bool. 是否在预测头中的卷积层后使用组归一化。默认为 False
  • classification_head_prior_probability: float. 分类头的前验概率(用于 focal loss)。默认为 0.01。
  • pre_logits_num_conv_layers: int. logits 层之前的头部卷积层数量。这些卷积层在生成输出预测(边界框回归、分类分数)的最终线性层(logits)之前应用。
  • preprocessor: Optional. RetinaNetObjectDetectorPreprocessor 或自定义预处理器的实例。处理输入馈入骨干网络之前的图像预处理。
  • activation: Optional. 用于分类头的激活函数。如果为 None,则使用 sigmoid。
  • dtype: Optional. 预测头的数据类型。默认为骨干网络的 dtype policy。
  • prediction_decoder: Optional. 一个负责将 RetinaNet 预测(框回归和分类)转换为带有置信度分数的最终边界框和类别的 keras.layers.Layer 实例。默认为 NonMaxSuppression 实例。

[来源]

from_preset 方法

RetinaNetObjectDetector.from_preset(preset, load_weights=True, **kwargs)

从模型预设实例化一个 keras_hub.models.Task

预设是用于保存和加载预训练模型的配置、权重和其他文件资源的目录。preset 可以是以下之一:

  1. 内置预设标识符,例如 'bert_base_en'
  2. Kaggle 模型句柄,例如 'kaggle://user/bert/keras/bert_base_en'
  3. Hugging Face 句柄,例如 'hf://user/bert_base_en'
  4. 本地预设目录的路径,例如 './bert_base_en'

对于任何 Task 子类,您可以运行 cls.presets.keys() 来列出该类上所有可用的内置预设。

此构造函数可以通过两种方式调用。要么从任务特定的基类调用,例如 keras_hub.models.CausalLM.from_preset(),要么从模型类调用,例如 keras_hub.models.BertTextClassifier.from_preset()。如果从基类调用,则返回对象的子类将从预设目录中的配置推断。

参数

  • preset: string. 内置预设标识符、Kaggle 模型句柄、Hugging Face 句柄或本地目录的路径。
  • load_weights: bool. 如果为 True,则将保存的权重加载到模型架构中。如果为 False,则所有权重将随机初始化。

示例

# Load a Gemma generative task.
causal_lm = keras_hub.models.CausalLM.from_preset(
    "gemma_2b_en",
)

# Load a Bert classification task.
model = keras_hub.models.TextClassifier.from_preset(
    "bert_base_en",
    num_classes=2,
)
预设 参数 描述
retinanet_resnet50_fpn_v2_coco 31.56M RetinaNet 模型,带有 ResNet50 骨干网络,在 COCO 上以 800x800 分辨率进行微调,并使用 P5 级别创建的 FPN 特征。
retinanet_resnet50_fpn_coco 34.12M RetinaNet 模型,带有 ResNet50 骨干网络,在 COCO 上以 800x800 分辨率进行微调。

backbone 属性

keras_hub.models.RetinaNetObjectDetector.backbone

一个带有核心架构的 keras_hub.models.Backbone 模型。


preprocessor 属性

keras_hub.models.RetinaNetObjectDetector.preprocessor

一个用于预处理输入的 keras_hub.models.Preprocessor 层。