# الهيكل الأساسي

العمود الفقري هو نموذج يُستخدم لاستخراج الميزات لمهام الرؤية الحاسوبية الأعلى مستوى مثل كشف الأشياء وتصنيف الصور. يوفر Transformers فئة [AutoBackbone](/docs/transformers/main/ar/main_classes/backbones#transformers.AutoBackbone) لتبني عمود فقري لـ Transformers من أوزان نموذج مُدرَّب مسبقًا، بالإضافة إلى فئتي أدوات:

* يتيح [BackboneMixin](/docs/transformers/main/ar/main_classes/backbones#transformers.BackboneMixin) تهيئة العمود الفقري (backbone) من Transformers أو [timm](https://hf.co/docs/timm/index)، ويتضمن دوال لإرجاع مخرجات الميزات والفهارس.
* يحدد [BackboneConfigMixin](/docs/transformers/main/ar/main_classes/backbones#transformers.BackboneConfigMixin) مخرجات الميزات والفهارس في إعدادات الهيكل العظمي.

تُحمَّل نماذج [timm](https://hf.co/docs/timm/index) باستخدام الفئات [TimmBackbone](/docs/transformers/main/ar/main_classes/backbones#transformers.TimmBackbone) و[TimmBackboneConfig](/docs/transformers/main/ar/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)
* [سوين ترانسفورمر](../model_doc/swin)
* [سوين ترانسفورمر 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)

مزيج (Mixin) لدعم معالجة سمات `out_features` و`out_indices` لإعدادات الهيكل العظمي (backbone).

#### 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]`، *اختياري*) : أسماء الميزات التي يجب على الهيكل الأساسي (backbone) إخراجها. القيمة الافتراضية هي `config._out_features` إذا لم تُقدَّم.

out_indices (`list[int]` أو `tuple[int]`، *اختياري*) : فهارس الميزات التي يجب على الهيكل الأساسي إخراجها. القيمة الافتراضية هي `config._out_indices` إذا لم تُقدَّم.

تُعيّن فهارس المخرجات والميزات إلى قيم جديدة وتُحاذاها مع `stage_names` المُعطاة. إذا لم يُعطَ أحد المدخلات، فابحث عن `out_features` أو `out_indices` المقابلة لـ`stage_names` المُعطاة.

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

```python
to_dict()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/backbone_utils.py#L147)

يسلسل هذه النسخة إلى قاموس Python. يتجاوز الطريقة الافتراضية `to_dict()` من `PreTrainedConfig` ليشمل سمات `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)

تحقق من أن out_indices و out_features صالحة لـ stage_names المحددة.

## 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 لاستخدامها كعظائم. يتيح ذلك استخدام نماذج 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/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/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
```

