骨干
Backbone(骨干网络)是一种用于更高级计算机视觉任务(如目标检测和图像分类)的特征提取模型。Transformers 提供了一个 AutoBackbone 类,用于从预训练模型权重初始化 Transformers 骨干网络,以及两个实用类:
- BackboneMixin 支持从 Transformers 或 timm 初始化 backbone,并包含用于返回输出特征和索引的函数。
- BackboneConfigMixin 用于设置骨干网络配置的输出特征和索引。
timm 模型通过 TimmBackbone 和 TimmBackboneConfig 类进行加载。
以下模型支持骨干网络:
- BEiT
- BiT
- ConvNext
- ConvNextV2
- DiNAT
- DINOV2
- FocalNet
- MaskFormer
- ResNet
- Swin Transformer
- Swin Transformer v2
- ViTDet
AutoBackbone
BackboneMixin
重写 post_init 以始终安装捕获钩子,因为 backbone 总是会捕获输出。我们需要在 post_init 中执行此操作,因为模块必须已经实例化。
这样可以避免与 torch.compile 产生一些混淆,因为首次安装钩子时需要/创建一个图断点,这可能会与外部用户调用(例如 model = torch.compile(model...))发生冲突。
BackboneConfigMixin
一个 Mixin,用于支持处理骨干网络配置中的 out_features 和 out_indices 属性。
set_output_features_output_indices
< source >( out_features: list | Noneout_indices: list | None )
将输出索引和特征设置为新值,并与给定的 stage_names 对齐。
如果未提供其中一个输入,则根据给定的 stage_names 查找对应的 out_features 或 out_indices。
将此实例序列化为 Python 字典。重写 PreTrainedConfig 中默认的 to_dict(),以包含 out_features 和 out_indices 属性。
验证 out_indices 和 out_features 对于给定的 stage_names 是否有效。
TimmBackbone
用于作为骨干网络的 timm 模型的包装类。这使得 timm 模型可以与库中的其他模型互换使用,同时保持相同的 API。
TimmBackboneConfig
类 transformers.TimmBackboneConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonebackbone: str | None = Nonenum_channels: int = 3features_only: bool = True_out_indices: list[int] | None = Nonefreeze_batch_norm_2d: bool = Falseoutput_stride: int | None = None )
这是用于存储 TimmBackbone 配置的类。它根据指定的参数实例化 Timm Backbone 模型,并定义模型架构。使用默认值实例化配置将生成与 类似的配置。
配置对象继承自 PreTrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PreTrainedConfig 的文档。
示例:
>>> from transformers import TimmBackboneConfig, TimmBackbone
>>> # Initializing a timm backbone
>>> configuration = TimmBackboneConfig("resnet50")
>>> # Initializing a model from the configuration
>>> model = TimmBackbone(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config