# バックボーン

バックボーンは、オブジェクト検出や画像分類などの上位のコンピュータビジョンタスクにおける特徴抽出に使用されるモデルです。Transformers は、事前学習済みモデルの重みから Transformers のバックボーンを初期化するための [AutoBackbone](/docs/transformers/main/ja/main_classes/backbones#transformers.AutoBackbone) クラスと、2 つのユーティリティクラスを提供しています:

* [BackboneMixin](/docs/transformers/main/ja/main_classes/backbones#transformers.BackboneMixin) は、Transformers または [timm](https://hf.co/docs/timm/index) からバックボーンを初期化することを可能にし、出力特徴量とインデックスを返す関数を含みます。
* [BackboneConfigMixin](/docs/transformers/main/ja/main_classes/backbones#transformers.BackboneConfigMixin) は、backbone の設定における出力特徴量とインデックスを設定します。

[timm](https://hf.co/docs/timm/index)モデルは、[TimmBackbone](/docs/transformers/main/ja/main_classes/backbones#transformers.TimmBackbone)クラスと[TimmBackboneConfig](/docs/transformers/main/ja/main_classes/backbones#transformers.TimmBackboneConfig)クラスによって読み込まれます。

Backbonesは、以下のモデルでサポートされています:

* [BEiT](../model_doc/beit)
* [BiT](../model_doc/bit)
* [ConvNext](../model_doc/convnext)
* [ConvNextV2](../model_doc/convnextv2)
* [DiNAT](../model_doc/dinat)
* [DINOV2](../model_doc/dinov2)
* [FocalNet](../model_doc/focalnet)
* [MaskFormer](../model_doc/maskformer)
* [ResNet](../model_doc/resnet)
* [Swin Transformer](../model_doc/swin)
* [Swin Transformer v2](../model_doc/swinv2)
* [ViTDet](../model_doc/vitdet)

## AutoBackbone[[transformers.AutoBackbone]]

#### transformers.AutoBackbone[[transformers.AutoBackbone]]

```python
transformers.AutoBackbone(*args, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/auto/modeling_auto.py#L2601)

## BackboneMixin[[transformers.BackboneMixin]]

#### transformers.BackboneMixin[[transformers.BackboneMixin]]

```python
transformers.BackboneMixin(*args, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/backbone_utils.py#L192)

#### post_init[[transformers.BackboneMixin.post_init]]

```python
post_init()
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/backbone_utils.py#L218)

`post_init` をオーバーライドして、キャプチャ用フックを常にインストールするようにします。バックボーンは常に出力をキャプチャするためです。モジュールがすでにインスタンス化されている必要があるため、`post_init` 内でこれを行う必要があります。これにより、`torch.compile` との混同を回避できます。最初のフックのインストールはグラフのブレイクを必要とする/作成するため、`model = torch.compile(model...)` のような外部からのユーザー呼び出しと競合する可能性があるためです。

## BackboneConfigMixin[[transformers.BackboneConfigMixin]]

#### transformers.BackboneConfigMixin[[transformers.BackboneConfigMixin]]

```python
transformers.BackboneConfigMixin()
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/backbone_utils.py#L33)

バックボーン設定における`out_features`および`out_indices`属性の処理をサポートするためのMixinです。

#### set_output_features_output_indices[[transformers.BackboneConfigMixin.set_output_features_output_indices]]

```python
set_output_features_output_indices(out_features: list | None, out_indices: list | None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/backbone_utils.py#L38)

**パラメータ:**

out_features (`list[str]`、*任意*) : バックボーンが出力する特徴量の名称です。指定されない場合、デフォルトでは `config._out_features` が使用されます。

out_indices (`list[int]` または `tuple[int]`、*任意*) : バックボーンが出力する特徴量のインデックスです。指定されない場合、デフォルトで `config._out_indices` が使用されます。

出力インデックスと特徴量を新しい値に設定し、指定された`stage_names`と整合させます。入力の一つが指定されていない場合、指定された`stage_names`に対応する`out_features`または`out_indices`を特定します。

#### to_dict[[transformers.BackboneConfigMixin.to_dict]]

```python
to_dict()
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/backbone_utils.py#L147)

このインスタンスをPythonの辞書にシリアライズします。`PreTrainedConfig`のデフォルトの`to_dict()`をオーバーライドし、`out_features`および`out_indices`属性を含めるようにします。

#### verify_out_features_out_indices[[transformers.BackboneConfigMixin.verify_out_features_out_indices]]

```python
verify_out_features_out_indices()
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/backbone_utils.py#L74)

指定された stage_names に対して、out_indices と out_features が有効であることを確認します。

## TimmBackbone[[transformers.TimmBackbone]]

#### transformers.TimmBackbone[[transformers.TimmBackbone]]

```python
transformers.TimmBackbone(config: TimmBackboneConfig, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/timm_backbone/modeling_timm_backbone.py#L35)

バックボーンとして使用するための timm モデル用のラッパークラスです。これにより、ライブラリ内の他のモデルと同一の API を維持したまま、timm モデルを相互に交換して使用できます。

## TimmBackboneConfig[[transformers.TimmBackboneConfig]]

#### transformers.TimmBackboneConfig[[transformers.TimmBackboneConfig]]

```python
transformers.TimmBackboneConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, backbone: str | None = None, num_channels: int = 3, features_only: bool = True, _out_indices: list[int] | None = None, freeze_batch_norm_2d: bool = False, output_stride: int | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/timm_backbone/configuration_timm_backbone.py#L26)

**パラメータ:**

backbone (`str`、*任意*) : 読み込むtimmのチェックポイント。

num_channels (`int`、*任意*、デフォルトは`3`) : 入力チャネル数。

features_only (`bool`, *任意*, デフォルトは `True`) : 特徴量のみを出力するか、logits も出力するかを指定します。

freeze_batch_norm_2d (`bool`、*任意*、デフォルトは`False`) : 指定されたモジュールのすべての`BatchNorm2d`および`SyncBatchNorm`レイヤーを`FrozenBatchNorm2d`に変換します。

output_stride (`int`, *任意*) : 入力特徴マップと出力特徴マップの空間解像度の比率。

これは TimmBackbone の設定を保存するための設定クラスです。指定された引数に基づいて Timm Backbone モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[](https://huggingface.co/) と同様の設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

例:
```python
>>> 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
```

