# MobileViTV2

## نظرة عامة

قُدِّم نموذج MobileViTV2 في [Separable Self-attention for Mobile Vision Transformers](https://huggingface.co/papers/2206.02680) من قِبل Sachin Mehta وMohammad Rastegari.

MobileViTV2 هي النسخة الثانية من MobileViT، وقد بُنيت عن طريق استبدال الانتباه الذاتي متعدد الرؤوس في MobileViT بالانتباه الذاتي القابل للفصل.

المستخلص من الورقة البحثية هو كالتالي:

*يمكن لتحويلات الرؤية المحمولة (MobileViT) تحقيق أداء متقدم على مستوى الفن في عدة مهام رؤية محمولة، بما في ذلك التصنيف والكشف. وعلى الرغم من أن هذه النماذج تحتوي على عدد أقل من المعاملات، إلا أن زمن الاستجابة لديها مرتفع مقارنةً بالنماذج القائمة على الشبكات العصبية التلافيفية. عنق الزجاجة الرئيسي للكفاءة في MobileViT هو الانتباه الذاتي متعدد الرؤوس (MHA) في التحويلات، والذي يتطلب تعقيدًا زمنيًا من الرتبة O(k2) بالنسبة لعدد الرموز (أو البقع) k. علاوة على ذلك، يتطلب MHA عمليات مكلفة (مثل ضرب المصفوفات على مستوى الدفعة) لحساب الانتباه الذاتي، مما يؤثر على زمن الاستجابة على الأجهزة ذات الموارد المحدودة. يقدم هذا الورقة طريقة انتباه ذاتي قابلة للفصل ذات تعقيد خطي، أي O(k). إحدى الخصائص البسيطة والفعالة للطريقة المقترحة هي أنها تستخدم عمليات على مستوى العنصر لحساب الانتباه الذاتي، مما يجعلها خيارًا جيدًا للأجهزة ذات الموارد المحدودة. النموذج المحسّن، MobileViTV2، هو متقدم على مستوى الفن في عدة مهام رؤية محمولة، بما في ذلك تصنيف الكائنات في ImageNet وكشف الكائنات في MS-COCO. ومع حوالي ثلاثة ملايين معامل، يحقق MobileViTV2 دقة top-1 تبلغ 75.6% على مجموعة بيانات ImageNet، متفوقًا على MobileViT بنسبة حوالي 1% بينما يعمل أسرع بمقدار 3.2× على جهاز محمول.*

تمت مساهمة هذا النموذج من قِبل [shehan97](https://huggingface.co/shehan97). يمكن العثور على الكود الأصلي [هنا](https://github.com/apple/ml-cvnets).

## نصائح للاستخدام

- يُشبه MobileViTV2 شبكات العصبية التلافيفية (CNN) أكثر من كونه نموذج Transformer. فهو لا يعمل على بيانات التسلسلات بل على دفعات من الصور. وعلى عكس ViT، لا توجد تمثيلات (embeddings). حيث يُخرج النموذج الأساسي خريطة ميزات (feature map).
- يمكن استخدام [MobileViTImageProcessor](/docs/transformers/main/ar/model_doc/mobilevit#transformers.MobileViTImageProcessor) لتحضير الصور للنموذج. لاحظ أنه إذا قمت بإجراء المعالجة المسبقة بنفسك، فإن نقاط التفتيش المُسبقة التدريب تتوقع أن تكون الصور بترتيب بكسل BGR (وليس RGB).
- النقاط الفاصلة المتاحة لتصنيف الصور مُدرَّبة مسبقًا على [ImageNet-1k](https://huggingface.co/datasets/ILSVRC/imagenet-1k) (المعروف أيضًا باسم ILSVRC 2012، وهو مجموعة تضم 1.3 مليون صورة و1,000 فئة).
- يستخدم نموذج التقطيع رأس [DeepLabV3](https://huggingface.co/papers/1706.05587). نقاط التفتيش المتاحة للتقطيع الدلالي مُدرَّبة مسبقًا على [PASCAL VOC](http://host.robots.ox.ac.uk/pascal/VOC/).

## MobileViTV2Config[[transformers.MobileViTV2Config]]

#### transformers.MobileViTV2Config[[transformers.MobileViTV2Config]]

```python
transformers.MobileViTV2Config(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, num_channels: int = 3, image_size: int | list[int] | tuple[int, int] = 256, patch_size: int | list[int] | tuple[int, int] = 2, expand_ratio: float = 2.0, hidden_act: str = 'swish', conv_kernel_size: int = 3, output_stride: int = 32, classifier_dropout_prob: float | int = 0.1, initializer_range: float = 0.02, layer_norm_eps: float = 1e-05, aspp_out_channels: int = 512, atrous_rates: list[int] | tuple[int, ...] = (6, 12, 18), aspp_dropout_prob: float | int = 0.1, semantic_loss_ignore_index: int = 255, n_attn_blocks: list[int] | tuple[int, ...] = (2, 4, 3), base_attn_unit_dims: list[int] | tuple[int, ...] = (128, 192, 256), width_multiplier: float | int = 1.0, ffn_multiplier: int = 2, attn_dropout: float | int = 0.0, ffn_dropout: float | int = 0.0)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mobilevitv2/configuration_mobilevitv2.py#L24)

**المعاملات:**

num_channels (`int`، *اختياري*، القيمة الافتراضية `3`) : عدد قنوات الإدخال.

image_size (`Union[int, list[int], tuple[int, int]]`، *اختياري*، القيمة الافتراضية `256`) : حجم (دقة) كل صورة.

patch_size (`Union[int, list[int], tuple[int, int]]`، *اختياري*، القيمة الافتراضية `2`) : حجم (دقة) كل رقعة.

expand_ratio (`float`، *اختياري*، القيمة الافتراضية `2.0`) : نسبة التوسيع لضبط أبعاد المخرجات للتوسيع

hidden_act (`str`، *اختياري*، القيمة الافتراضية `swish`) : دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، `"gelu"`، `"relu"`، `"silu"`، وما إلى ذلك.

conv_kernel_size (`int`، *اختياري*، القيمة الافتراضية `3`) : حجم النواة الالتفافية.

output_stride (`int`، *اختياري*، الافتراضي هو `32`) : النسبة بين الدقة المكانية لخرائط الميزات المدخلة والمخرجة.

classifier_dropout_prob (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.1`) : نسبة الإسقاط (dropout) للمصنّف.

initializer_range (`float`، *اختياري*، القيمة الافتراضية `0.02`) : الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.

layer_norm_eps (`float`، *اختياري*، القيمة الافتراضية `1e-05`) : قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة.

aspp_out_channels (`int`، *اختياري*، القيمة الافتراضية 512) : عدد قنوات الإخراج المستخدمة في طبقة ASPP للتجزئة الدلالية.

atrous_rates (`list[int]`، *اختياري*، القيمة الافتراضية `[6, 12, 18]`) : عوامل التمدد (atrous) المستخدمة في طبقة ASPP للتجزئة الدلالية.

aspp_dropout_prob (`float`، *اختياري*، القيمة الافتراضية 0.1) : نسبة الإسقاط (dropout) لطبقة ASPP للتجزئة الدلالية.

semantic_loss_ignore_index (`int`، *اختياري*، الافتراضي هو `255`) : المؤشر الذي تتجاهله دالة الخسارة في نموذج التقسيم الدلالي.

n_attn_blocks (`list[int]`، *اختياري*، القيمة الافتراضية `[2, 4, 3]`) : عدد كتل الانتباه في كل طبقة MobileViTV2Layer

base_attn_unit_dims (`list[int]`، *اختياري*، القيمة الافتراضية `[128, 192, 256]`) : المضاعِف الأساسي لأبعاد كتل الانتباه في كل طبقة من طبقات MobileViTV2Layer

width_multiplier (`float`، *اختياري*، القيمة الافتراضية 1.0) : مضاعف العرض لـ MobileViTV2.

ffn_multiplier (`int`، *اختياري*، القيمة الافتراضية 2) : مضاعِف FFN في MobileViTV2.

attn_dropout (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.0`) : نسبة الإسقاط (dropout) لاحتمالات الانتباه.

ffn_dropout (`float`، *اختياري*، القيمة الافتراضية 0.0) : نسبة الإسقاط (dropout) بين طبقات الشبكة العصبية الأمامية (FFN).

هذه فئة الإعدادات المخزنة لإعدادات نموذج MobileViTV2Model. تُستخدم لاستحداث نموذج Mobilevitv2 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [apple/mobilevitv2-1.0](https://huggingface.co/apple/mobilevitv2-1.0)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

مثال:

```python
>>> from transformers import MobileViTV2Config, MobileViTV2Model

>>> # Initializing a mobilevitv2-small style configuration
>>> configuration = MobileViTV2Config()

>>> # Initializing a model from the mobilevitv2-small style configuration
>>> model = MobileViTV2Model(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## MobileViTV2Model[[transformers.MobileViTV2Model]]

#### transformers.MobileViTV2Model[[transformers.MobileViTV2Model]]

```python
transformers.MobileViTV2Model(config: MobileViTV2Config, expand_output: bool = True)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mobilevitv2/modeling_mobilevitv2.py#L590)

**المعاملات:**

config ([MobileViTV2Config](/docs/transformers/main/ar/model_doc/mobilevitv2#transformers.MobileViTV2Config)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

expand_output (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم توسيع مخرجات النموذج. إذا كانت `True`، فسيقوم النموذج بإخراج الميزات المجمعة بالإضافة إلى حالات الإخفاء. إذا كانت `False`، فسيتم إرجاع حالات الإخفاء فقط.

نموذج Mobilevitv2 الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.MobileViTV2Model.forward]]

```python
forward(pixel_values: typing.Optional[torch.Tensor] = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mobilevitv2/modeling_mobilevitv2.py#L619)

**المعاملات:**

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`، *اختياري*) : المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسل باستخدام [MobileViTImageProcessor](/docs/transformers/main/ar/model_doc/mobilevit#transformers.MobileViTImageProcessor). راجع [MobileViTImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل (`processor_class` يستخدم [MobileViTImageProcessor](/docs/transformers/main/ar/model_doc/mobilevit#transformers.MobileViTImageProcessor) لمعالجة الصور).

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** `BaseModelOutputWithPoolingAndNoAttention` أو `tuple(torch.Tensor)`

`BaseModelOutputWithPoolingAndNoAttention` أو مجموعة مرتبة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([MobileViTV2Config](/docs/transformers/main/ar/model_doc/mobilevitv2#transformers.MobileViTV2Config)) والمدخلات.

تتجاوز طريقة [MobileViTV2Model](/docs/transformers/main/ar/model_doc/mobilevitv2#transformers.MobileViTV2Model) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)`) -- تسلسل حالات مخفية عند مخرجات الطبقة الأخيرة من النموذج.
- **pooler_output** (`torch.Tensor` من الشكل `(batch_size, hidden_size)`) -- حالة الطبقة المخفية الأخيرة بعد عملية تجميع على الأبعاد المكانية.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات الطبقات المضمنة إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, num_channels, height, width)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

مثال:

```python
```

## MobileViTV2ForImageClassification[[transformers.MobileViTV2ForImageClassification]]

#### transformers.MobileViTV2ForImageClassification[[transformers.MobileViTV2ForImageClassification]]

```python
transformers.MobileViTV2ForImageClassification(config: MobileViTV2Config)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mobilevitv2/modeling_mobilevitv2.py#L669)

**المعاملات:**

config ([MobileViTV2Config](/docs/transformers/main/ar/model_doc/mobilevitv2#transformers.MobileViTV2Config)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج MobileViTV2 مع رأس تصنيف الصور في الأعلى (طبقة خطية فوق الميزات المجمّعة)، مثل ImageNet.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.MobileViTV2ForImageClassification.forward]]

```python
forward(pixel_values: typing.Optional[torch.Tensor] = None, output_hidden_states: bool | None = None, labels: typing.Optional[torch.Tensor] = None, return_dict: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mobilevitv2/modeling_mobilevitv2.py#L687)

**المعاملات:**

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`، *اختياري*) : المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسل باستخدام [MobileViTImageProcessor](/docs/transformers/main/ar/model_doc/mobilevit#transformers.MobileViTImageProcessor). راجع [MobileViTImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل (`processor_class` يستخدم [MobileViTImageProcessor](/docs/transformers/main/ar/model_doc/mobilevit#transformers.MobileViTImageProcessor) لمعالجة الصور).

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

labels (من نوع `torch.LongTensor` بأبعاد `(batch_size,)`، *اختياري*) : تسميات لحساب خسارة تصنيف/الانحدار للصور. يجب أن تكون الفهارس ضمن `[0, ..., config.num_labels - 1]`. إذا كان `config.num_labels == 1` يتم حساب خسارة الانحدار (خسارة متوسط المربع)، وإذا كان `config.num_labels > 1` يتم حساب خسارة التصنيف (الإنتروبيا المتقاطعة).

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** [ImageClassifierOutputWithNoAttention](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.ImageClassifierOutputWithNoAttention) أو `tuple(torch.Tensor)`

[ImageClassifierOutputWithNoAttention](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.ImageClassifierOutputWithNoAttention) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([MobileViTV2Config](/docs/transformers/main/ar/model_doc/mobilevitv2#transformers.MobileViTV2Config)) والمدخلات.

تتجاوز طريقة [MobileViTV2ForImageClassification](/docs/transformers/main/ar/model_doc/mobilevitv2#transformers.MobileViTV2ForImageClassification) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **loss** (`torch.Tensor` من الشكل `(1,)`, *اختياري*، يُعاد عند تقديم `labels`) -- خسارة التصنيف (أو الانحدار إذا كان config.num_labels==1).
- **logits** (`torch.Tensor` من الشكل `(batch_size, config.num_labels)`) -- درجات التصنيف (أو الانحدار إذا كان config.num_labels==1) (قبل SoftMax).
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند `config.output_hidden_states=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل مرحلة) بشكل `(batch_size, num_channels, height, width)`. حالات النموذج المخفية (المعروفة أيضًا باسم خرائط الميزات) عند مخرجات كل مرحلة.

مثال:

```python
>>> from transformers import AutoImageProcessor, MobileViTV2ForImageClassification
>>> import torch
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("apple/mobilevitv2-1.0")
>>> model = MobileViTV2ForImageClassification.from_pretrained("apple/mobilevitv2-1.0")

>>> inputs = image_processor(image, return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = logits.argmax(-1).item()
>>> print(model.config.id2label[predicted_label])
...
```

## MobileViTV2ForSemanticSegmentation[[transformers.MobileViTV2ForSemanticSegmentation]]

#### transformers.MobileViTV2ForSemanticSegmentation[[transformers.MobileViTV2ForSemanticSegmentation]]

```python
transformers.MobileViTV2ForSemanticSegmentation(config: MobileViTV2Config)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mobilevitv2/modeling_mobilevitv2.py#L838)

**المعاملات:**

config ([MobileViTV2Config](/docs/transformers/main/ar/model_doc/mobilevitv2#transformers.MobileViTV2Config)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج MobileViTV2 مع رأس تقسيم دلالي في الأعلى، على سبيل المثال لـ Pascal VOC.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.MobileViTV2ForSemanticSegmentation.forward]]

```python
forward(pixel_values: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.Tensor] = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mobilevitv2/modeling_mobilevitv2.py#L849)

**المعاملات:**

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`، *اختياري*) : المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسل باستخدام [MobileViTImageProcessor](/docs/transformers/main/ar/model_doc/mobilevit#transformers.MobileViTImageProcessor). راجع [MobileViTImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل (`processor_class` يستخدم [MobileViTImageProcessor](/docs/transformers/main/ar/model_doc/mobilevit#transformers.MobileViTImageProcessor) لمعالجة الصور).

labels (`torch.LongTensor` بشكل `(batch_size, height, width)`، *اختياري*) : خرائط التقسيم الدلالي المرجعية لحساب الخسارة. يجب أن تكون الفهارس ضمن `[0, ..., config.num_labels - 1]`. إذا كان `config.num_labels > 1`، يتم حساب خسارة التصنيف (Cross-Entropy).

output_hidden_states (`bool`, *اختياري*) : ما إذا كان سيتم إرجاع الحالات المخفية لجميع الطبقات. راجع `hidden_states` ضمن الموترات المُرجعة لمزيد من التفاصيل.

return_dict (`bool`، *اختياري*) : ما إذا كان سيتم إرجاع [ModelOutput](/docs/transformers/main/ar/main_classes/output#transformers.utils.ModelOutput) بدلاً من tuple عادي.

**يعيد:** [SemanticSegmenterOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.SemanticSegmenterOutput) أو `tuple(torch.Tensor)`

[SemanticSegmenterOutput](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.SemanticSegmenterOutput) أو مجموعة مرتبة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([MobileViTV2Config](/docs/transformers/main/ar/model_doc/mobilevitv2#transformers.MobileViTV2Config)) والمدخلات.

تتجاوز طريقة [MobileViTV2ForSemanticSegmentation](/docs/transformers/main/ar/model_doc/mobilevitv2#transformers.MobileViTV2ForSemanticSegmentation) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **loss** (`torch.Tensor` من الشكل `(1,)`, *اختياري*، يُعاد عند تقديم `labels`) -- خسارة التصنيف (أو الانحدار إذا كان config.num_labels==1).
- **logits** (`torch.Tensor` بأبعاد `(batch_size, config.num_labels, logits_height, logits_width)`) -- درجات التصنيف لكل بكسل.

  

  لا تتطابق بالضرورة أحجام logits المُعادَة مع أحجام `pixel_values` المُمرَّرة كمدخلات. وذلك لتجنّب إجراء عمليتي استيفاء وفقدان بعض الجودة عندما يحتاج المستخدم إلى تغيير حجم logits إلى حجم الصورة الأصلي كخطوة ما بعد المعالجة. يجب عليك دائمًا التحقق من شكل logits وتغيير حجمها حسب الحاجة.

  
- **hidden_states** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_hidden_states=True` أو عند `config.output_hidden_states=True`) -- مجموعة مرتبة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) من الشكل `(batch_size, patch_size, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`, *اختياري*, يُعاد عند تمرير `output_attentions=True` أو عند `config.output_attentions=True`) -- مجموعة مرتبة (Tuple) من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, patch_size, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

أمثلة:

```python
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> import torch
>>> from PIL import Image
>>> from transformers import AutoImageProcessor, MobileViTV2ForSemanticSegmentation

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> image_processor = AutoImageProcessor.from_pretrained("apple/mobilevitv2-1.0-imagenet1k-256")
>>> model = MobileViTV2ForSemanticSegmentation.from_pretrained("apple/mobilevitv2-1.0-imagenet1k-256")

>>> inputs = image_processor(images=image, return_tensors="pt")

>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> # logits are of shape (batch_size, num_labels, height, width)
>>> logits = outputs.logits
```

