DINOV2Backbone 类keras_hub.models.DINOV2Backbone(
patch_size,
num_layers,
hidden_dim,
num_heads,
intermediate_dim,
layer_scale_init_value=1.0,
num_register_tokens=0,
use_mask_token=True,
use_swiglu_ffn=False,
dropout_rate=0.0,
drop_path_rate=0.0,
image_shape=(224, 224, 3),
position_embedding_shape=(518, 518, 3),
antialias_in_interpolation=False,
apply_layernorm=False,
data_format=None,
dtype=None,
name=None,
**kwargs
)
具有超参数的DINOV2核心网络。
DINOV2提供了一个强大的、通用的视觉主干,完全从无标签图像中学习得到,如 DINOv2: Learning Robust Visual Features without Supervision 中所述。
默认构造函数会生成一个完全可定制的、随机初始化的DINOV2模型,具有任意数量的层、头和嵌入维度。要加载预设架构和权重,请使用 from_preset 构造函数。
请注意,这个主干是一个特征金字塔主干,可以输出模型不同阶段的中间特征图。有关如何访问这些特征金字塔输出的示例,请参阅下面的示例。
请注意,此主干支持位置嵌入到输入图像形状的插值。当输入图像形状与训练位置嵌入的形状不同时,这非常有用。position_embedding_shape 参数用于指定训练位置嵌入的原始形状。
参数
1.0。0。True。False。0.0。0.0。(224, 224, 3)。(518, 518)。False。False。None或str。如果指定,则为"channels_last"或"channels_first"。输入维度的顺序。"channels_last"对应于形状为(batch_size, height, width, channels)的输入,而"channels_first"对应于形状为(batch_size, channels, height, width)的输入。它默认为Keras配置文件~/.keras/keras.json中找到的image_data_format值。如果您从未设置过,则默认为"channels_last"。keras.mixed_precision.DTypePolicy。用于模型计算和权重的dtype。请注意,某些计算(如softmax和层归一化)将始终以float32精度进行,而与dtype无关。示例
# Pretrained DINOV2 model.
input_data = {
"images": np.ones(shape=(1, 518, 518, 3), dtype="float32"),
}
model = keras_hub.models.DINOV2Backbone.from_preset(
"dinov2_base"
)
model(input_data)
# Pretrained DINOV2 model with custom image shape.
input_data = {
"images": np.ones(shape=(1, 224, 224, 3), dtype="float32"),
}
model = keras_hub.models.DINOV2Backbone.from_preset(
"dinov2_base", image_shape=(224, 224, 3)
)
model(input_data)
# Randomly initialized DINOV2 model with custom config.
model = keras_hub.models.DINOV2Backbone(
patch_size=14,
num_layers=2,
hidden_dim=32,
num_heads=2,
intermediate_dim=128,
image_shape=(224, 224, 3),
position_embedding_shape=(518, 518),
)
model(input_data)
# Accessing feature pyramid outputs.
backbone = keras_hub.models.DINOV2Backbone.from_preset(
"dinov2_base", image_shape=(224, 224, 3)
)
model = keras.Model(
inputs=backbone.inputs,
outputs=backbone.pyramid_outputs,
)
features = model(input_data)
from_preset 方法DINOV2Backbone.from_preset(preset, load_weights=True, **kwargs)
从模型预设实例化一个 keras_hub.models.Backbone。
预设是一个包含配置、权重和其他文件资源的目录,用于保存和加载预训练模型。preset 可以作为以下之一传递:
'bert_base_en''kaggle://user/bert/keras/bert_base_en''hf://user/bert_base_en''modelscope://user/bert_base_en'。'./bert_base_en'此构造函数可以通过两种方式之一调用。要么从基类调用,如 keras_hub.models.Backbone.from_preset(),要么从模型类调用,如 keras_hub.models.GemmaBackbone.from_preset()。如果从基类调用,则返回对象的子类将根据预设目录中的配置进行推断。
对于任何 Backbone 子类,您可以运行 cls.presets.keys() 来列出该类上所有可用的内置预设。
参数
示例
# Load a Gemma backbone with pre-trained weights.
model = keras_hub.models.Backbone.from_preset(
"gemma_2b_en",
)
# Load a Bert backbone with a pre-trained config and random weights.
model = keras_hub.models.Backbone.from_preset(
"bert_base_en",
load_weights=False,
)
| 预设 | 参数 | 描述 |
|---|---|---|
| dinov2_small | 22.58M | 使用 DINOv2 训练的 Vision Transformer (小型模型)。 |
| dinov2_with_registers_small | 22.58M | 使用 DINOv2 训练的 Vision Transformer (小型模型),包含寄存器。 |
| dinov2_base | 87.63M | 使用 DINOv2 训练的 Vision Transformer (基础模型)。 |
| dinov2_with_registers_base | 87.64M | 使用 DINOv2 训练的 Vision Transformer (基础模型),包含寄存器。 |
| dinov2_large | 305.77M | 使用 DINOv2 训练的 Vision Transformer (大型模型)。 |
| dinov2_with_registers_large | 305.78M | 使用 DINOv2 训练的 Vision Transformer (大型模型),包含寄存器。 |
| dinov2_giant | 1.14B | 使用 DINOv2 训练的 Vision Transformer (巨型模型)。 |
| dinov2_with_registers_giant | 1.14B | 使用 DINOv2 训练的 Vision Transformer (巨型模型),包含寄存器。 |