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。一个 keras.layers.Layer 实例,负责将 RetinaNet 预测(边界框回归和分类)转换为带有置信分数的最终边界框和类别。默认为 NonMaxSuppression 实例。

[源代码]

from_preset 方法

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

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

预设是一个包含配置、权重和其他文件资产的目录,用于保存和加载预训练模型。preset 可以作为以下之一传递:

  1. 一个内置的预设标识符,如 'bert_base_en'
  2. 一个 Kaggle Models 句柄,如 '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:字符串。一个内置预设标识符、一个 Kaggle Models 句柄、一个 Hugging Face 句柄或一个本地目录的路径。
  • load_weights: 布尔值。如果为 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 骨干网络,在 800x800 分辨率的 COCO 数据集上进行微调,FPN 特征从 P5 级别创建。
retinanet_resnet50_fpn_coco 34.12M RetinaNet 模型,带有 ResNet50 骨干网络,在 800x800 分辨率的 COCO 数据集上进行微调。

backbone 属性

keras_hub.models.RetinaNetObjectDetector.backbone

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


preprocessor 属性

keras_hub.models.RetinaNetObjectDetector.preprocessor

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