# EoMT

## نظرة عامة

طُرِح نموذج [The Encoder-only Mask Transformer](https://www.tue-mps.org/eomt) (EoMT) في ورقة CVPR 2025 المميزة *[Your ViT is Secretly an Image Segmentation Model](https://huggingface.co/papers/2503.19108)* التي كتبها تومي كيرسييس، نيكولو كافاغنيرو، ألكسندر هيرمانز، نارجس نوروزي، جيوسيبه أفرتا، باستيان لايبه، جييس دوبلمان، ودان دي غوس. يُظهر EoMT أن محولات الرؤية (Vision Transformers) قادرة على تنفيذ تقسيم الصور بكفاءة دون الحاجة إلى مكوّنات مخصصة للمهمة.

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

*أظهرت محولات الرؤية (ViTs) أداءً ملحوظًا وقابلية توسع عبر مهام الرؤية الحاسوبية المختلفة. ولتطبيق محولات الرؤية أحادية المقياس على تجزئة الصور، تعتمد الأساليب الحالية على محوّل تجميعي لتوليد ميزات متعددة المقاييس، ومفكك بكسل لدمج هذه الميزات، ومفكك محوّل يستخدم الميزات المدمجة لإجراء التنبؤات. في هذه الورقة، نوضح أن الانحيازات الاستقرائية التي تُدخلها هذه المكونات الخاصة بالمهمة يمكن أن يتعلمها محوّل الرؤية نفسه، شريطة توفر نماذج كبيرة الحجم وتدريب مسبق مكثف. بناءً على هذه النتائج، نطرح محوّل الأقنعة المعتمد على المُشفِّر فقط (EoMT)، الذي يعيد توظيف بنية محوّل الرؤية البسيطة لإجراء تجزئة الصور. وبفضل النماذج واسعة النطاق والتدريب المسبق، يحقق EoMT دقة تجزئة مماثلة لأحدث النماذج التي تستخدم مكونات خاصة بالمهمة. وفي الوقت نفسه، يكون EoMT أسرع بكثير من هذه الأساليب بسبب بساطته المعمارية، على سبيل المثال، أسرع حتى 4 أضعاف مع ViT-L. عبر مجموعة من أحجام النماذج، يُظهر EoMT توازنًا مثاليًا بين دقة التجزئة وسرعة التنبؤ، مما يشير إلى أن موارد الحوسبة يُستحسن إنفاقها على توسيع محوّل الرؤية نفسه بدلاً من إضافة تعقيد معماري.*

تمت مساهمة هذا النموذج من قِبل [Yaswanth Gali](https://huggingface.co/yaswanthgali). يمكن العثور على الكود الأصلي [هنا](https://github.com/tue-mps/eomt).

## معلومات البنية

يستخدم نموذج `EoMT` محوّلة رؤية (Vision Transformer) مُسبقة التدريب عبر DINOv2 مع **رموز تسجيل** كهيكل أساسي. يبسّط EoMT خط أنابيب التقطيع بالاعتماد حصرياً على المُشفّر، مما يلغي الحاجة إلى المُفكّكات الخاصة بالمهام التي كانت تُستخدم عادةً في الأساليب السابقة.

من حيث البنية، يُقدّم EoMT مجموعة صغيرة من **الاستعلامات المتعلّمة** ووحدة **تنبؤ الأقنعة** خفيفة الوزن. تُحقن هذه الاستعلامات في كتل المُشفِّر النهائية، مما يتيح **انتباهًا مشتركًا** بين رقاقات الصورة واستعلامات الكائنات. أثناء التدريب، يُطبَّق **انتباه مُقنَّع** لتقييد كل استعلام بالتركيز على المنطقة المقابلة له، مما يحاكي الانتباه المتقاطع بفعالية. يتم التخلّي تدريجيًا عن هذا التقييد عبر **استراتيجية تبريد الأقنعة**، مما يسمح بـ**استدلال فعّال دون مُفكِّك** دون المساس بأداء التقطيع.

  <img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/eomt_architecture.png"
       alt="drawing" width="500"/>

يدعم النموذج التقطيع الدلالي والتقطيع على مستوى الكائنات والتقطيع الشامل باستخدام بنية موحدة ومعالجة لاحقة مخصصة لكل مهمة.

## أمثلة على الاستخدام

استخدم تطبيق Hugging Face الخاص بـ EoMT للاستدلال باستخدام النماذج المُدرَّبة مسبقًا.

### التجزئة الدلالية

يُنفّذ نموذج EoMT التقسيم الدلالي باستخدام الاستدلال عبر نافذة منزلقة. يتم تغيير حجم الصورة المدخلة بحيث يتطابق الجانب الأقصر مع حجم الإدخال المستهدف، ثم تُقسَّم إلى محاصيل متداخلة. بعد ذلك، يُمرَّر كل محصول عبر النموذج. وبعد الاستدلال، تُعاد تجميع اللوجيتات المتوقعة من كل محصول معًا، ثم يُعاد تحجيمها إلى حجم الصورة الأصلي للحصول على قناع التقسيم النهائي.

> **ملاحظة:**   إذا كنت ترغب في استخدام حجم هدف مخصص لـ **التجزئة الدلالية**، فحدده بالصيغة التالية: `{"shortest_edge": 512}` لاحظ أن `longest_edge` غير مُقدَّم هنا — وهذا مقصود. ففي التجزئة الدلالية، يتم عادةً **تحجيم الصور بحيث يكون الحافة الأقصر أكبر من أو يساوي حجم الهدف** وبالتالي لا حاجة إلى longest_edge.

```python
import matplotlib.pyplot as plt
import requests
import torch
from PIL import Image

from transformers import AutoImageProcessor, EomtForUniversalSegmentation

model_id = "tue-mps/ade20k_semantic_eomt_large_512"
processor = AutoImageProcessor.from_pretrained(model_id)
model = EomtForUniversalSegmentation.from_pretrained(model_id, device_map="auto")

image = Image.open(requests.get("http://images.cocodataset.org/val2017/000000039769.jpg", stream=True).raw)

inputs = processor(
    images=image,
    return_tensors="pt",
)

with torch.inference_mode():
    outputs = model(**inputs)

# Prepare the original image size in the format (height, width)
target_sizes = [(image.height, image.width)]

# Post-process the model outputs to get final segmentation prediction
preds = processor.post_process_semantic_segmentation(
    outputs,
    target_sizes=target_sizes,
)

# Visualize the segmentation mask
plt.imshow(preds[0])
plt.axis("off")
plt.title("Semantic Segmentation")
plt.show()
```

### تجزئة الكائن

ينفّذ نموذج EoMT تجزئة الكائنات باستخدام الاستدلال المحشو. يتم تغيير حجم الصورة المدخلة بحيث يطابق الجانب الأطول حجم الإدخال المستهدف، بينما يُحشى الجانب الأقصر بالأصفار لتكوين مربع. ثم تُدمج الأقنعة الناتجة وقيم التصنيف (logits) من خلال المعالجة اللاحقة (المستقاة من Mask2Former) لإنتاج خريطة تجزئة موحّدة للكائنات، إلى جانب بيانات وصفية للأجزاء مثل معرّف الجزء، وتسميات الفئات، ودرجات الثقة.

> **ملاحظة:**   لاستخدام حجم هدف مخصص، حدد الحجم على شكل قاموس بالصيغة التالية: `{"shortest_edge": 512, "longest_edge": 512}` في كل من التقطيع الكائنات (instance) والتقطيع الشامل (panoptic)، سيتم **تحجيم الصور المدخلة وإضافة حشوة إليها** لتطابق هذا الحجم الهدف.

```python
import matplotlib.pyplot as plt
import requests
import torch
from PIL import Image

from transformers import AutoImageProcessor, EomtForUniversalSegmentation

model_id = "tue-mps/coco_instance_eomt_large_640"
processor = AutoImageProcessor.from_pretrained(model_id)
model = EomtForUniversalSegmentation.from_pretrained(model_id, device_map="auto")

image = Image.open(requests.get("http://images.cocodataset.org/val2017/000000039769.jpg", stream=True).raw)

inputs = processor(
    images=image,
    return_tensors="pt",
)

with torch.inference_mode():
    outputs = model(**inputs)

# Prepare the original image size in the format (height, width)
target_sizes = [(image.height, image.width)]

# Post-process the model outputs to get final segmentation prediction
preds = processor.post_process_instance_segmentation(
    outputs,
    target_sizes=target_sizes,
)

# Visualize the segmentation mask
plt.imshow(preds[0]["segmentation"])
plt.axis("off")
plt.title("Instance Segmentation")
plt.show()
```

### التجزئة البانورامية

يُنفّذ نموذج EoMT التقطيع البانورامي باستخدام نفس استراتيجية الاستدلال المُحشوة كما في تقطيع الكيانات. بعد الحشو والتطبيع، يتنبأ النموذج بكلٍّ من فئات الأشياء (الكيانات) وفئات المواد (المناطق غير المنتظمة). يتم دمج الأقنعة الناتجة وقيم الاحتمالات (logits) للفئات عبر المعالجة اللاحقة (المُعدَّلة من Mask2Former) لإنتاج خريطة تقطيع بانورامي موحّدة، إلى جانب بيانات وصفية للأجزاء مثل معرّف الجزء، وتسميات الفئات، ودرجات الثقة.

```python
import matplotlib.pyplot as plt
import requests
import torch
from PIL import Image

from transformers import AutoImageProcessor, EomtForUniversalSegmentation

model_id = "tue-mps/coco_panoptic_eomt_large_640"
processor = AutoImageProcessor.from_pretrained(model_id)
model = EomtForUniversalSegmentation.from_pretrained(model_id, device_map="auto")

image = Image.open(requests.get("http://images.cocodataset.org/val2017/000000039769.jpg", stream=True).raw)

inputs = processor(
    images=image,
    return_tensors="pt",
)

with torch.inference_mode():
    outputs = model(**inputs)

# Prepare the original image size in the format (height, width)
target_sizes = [(image.height, image.width)]

# Post-process the model outputs to get final segmentation prediction
preds = processor.post_process_panoptic_segmentation(
    outputs,
    target_sizes=target_sizes,
)

# Visualize the panoptic segmentation mask
plt.imshow(preds[0]["segmentation"])
plt.axis("off")
plt.title("Panoptic Segmentation")
plt.show()
```

## EomtImageProcessor[[transformers.EomtImageProcessor]]

#### transformers.EomtImageProcessor[[transformers.EomtImageProcessor]]

```python
transformers.EomtImageProcessor(**kwargs: *<class 'transformers.models.eomt.image_processing_eomt.EomtImageProcessorKwargs'>)
```

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

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

do_convert_rgb (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تحويل الصورة إلى RGB.

do_resize (`bool`، *kwargs*، *اختياري*، الافتراضي هو `True`) : ما إذا كان سيتم تغيير حجم الصورة.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*، القيمة الافتراضية `{'shortest_edge' : 640, 'longest_edge': 640}`): يصف الأبعاد القصوى للإدخال إلى النموذج.

default_to_square (`bool`، *kwargs*، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم افتراض صورة مربعة عند تغيير الحجم، إذا كان size من نوع int.

crop_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*) : حجم الصورة الناتجة بعد تطبيق `center_crop`.

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`، *kwargs*، القيمة الافتراضية `2`) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعداد `PILImageResampling`. لا يؤثر إلا إذا كانت قيمة `do_resize` هي `True`.

do_rescale (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إعادة تحجيم الصورة.

rescale_factor (`float`، *kwargs*، *اختياري*، القيمة الافتراضية هي `0.00392156862745098`) : عامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان `do_rescale` مضبوطاً على `True`.

do_normalize (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تطبيع الصورة.

image_mean (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*، القيمة الافتراضية `[0.485, 0.456, 0.406]`) : متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

image_std (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*، القيمة الافتراضية `[0.229, 0.224, 0.225]`) : الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

do_pad (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إضافة حشوة (padding) إلى الصورة. يتم تنفيذ الحشوة إما إلى أكبر حجم في الدفعة (batch) أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية الحشوة الدقيقة على النموذج.

pad_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : الحجم على شكل `{"height": int, "width" int}` الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّم `pad_size`، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكون `do_pad=True.`

do_center_crop (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب قص الصورة من المنتصف.

data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : يُدعم `ChannelDimension.FIRST` فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : تنسيق بُعد القناة للصورة المدخلة. إذا لم يتم ضبطه، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي: - `"channels_first"` أو `ChannelDimension.FIRST`: صورة بتنسيق (num_channels, height, width). - `"channels_last"` أو `ChannelDimension.LAST`: صورة بتنسيق (height, width, num_channels). - `"none"` أو `ChannelDimension.NONE`: صورة بتنسيق (height, width).

device (`Annotated[Union[str, torch.device, NoneType], None]`, *kwargs*) : الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم ضبطه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : تُرجع توتنرات مكدّسة إذا كان الإعداد `'pt'`، وإلا تُرجع قائمة من التوتنرات.

disable_grouping (`bool`، *kwargs*، *اختياري*) : ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157

image_seq_length (`int`، *kwargs*، *اختياري*) : عدد رموز الصور التي سيتم استخدامها لكل صورة في المدخلات. أُضيفت لضمان التوافق مع الإصدارات السابقة، لكن ينبغي ضبطها كخاصية للمعالج في النماذج المستقبلية.

do_split_image (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية هي `self.do_split_image`) : ما إذا كان يجب تقسيم الصور المدخلة إلى قطع متداخلة للتجزئة الدلالية. إذا تم ضبطها على `True`، فسيتم تقسيم الصور المدخلة إلى قطع بحجم `size["shortest_edge"]` مع تداخل بين القطع. وإلا، فسيتم ملء الصور المدخلة حتى الحجم المستهدف.

ignore_index (`int`، *kwargs*، *اختياري*، القيمة الافتراضية هي `self.ignore_index`) : التسمية التي سيتم إسنادها إلى بكسلات الخلفية في خرائط التقسيم. إذا تم تقديمها، فسيتم استبدال بكسلات خريطة التقسيم المُشار إليها بـ 0 (الخلفية) بـ `ignore_index`.

ينشئ معالج صور EomtImageProcessor.

#### preprocess[[transformers.EomtImageProcessor.preprocess]]

```python
preprocess(images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']], segmentation_maps: list[torch.Tensor] | None = None, instance_id_to_semantic_id: dict[int, int] | None = None, **kwargs: *<class 'transformers.models.eomt.image_processing_eomt.EomtImageProcessorKwargs'>)
```

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

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

images (`Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]`) : الصورة المراد معالجتها مسبقًا. يتوقع صورة واحدة أو دفعة من الصور بقيم بكسل تتراوح بين 0 و255. إذا كنت تمرر صورًا بقيم بكسل بين 0 و1، فاضبط `do_rescale=False`.

segmentation_maps (`ImageInput`، *اختياري*) : خرائط التقسيم التي يجب معالجتها مسبقًا للصور المقابلة.

instance_id_to_semantic_id (`list[dict[int, int]]` أو `dict[int, int]`، *اختياري*) : تعيين بين معرّفات هياكل الكائنات ومعرّفات الفئات.

do_convert_rgb (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تحويل الصورة إلى RGB.

do_resize (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تغيير حجم الصورة.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : يصف الأبعاد القصوى للمدخلات إلى النموذج.

default_to_square (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كان الحجم عددًا صحيحًا.

crop_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*) : حجم الصورة الناتجة بعد تطبيق `center_crop`.

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`, *kwargs*) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم enum `PILImageResampling`. لا يؤثر إلا إذا كان `do_resize` مضبوطاً على `True`.

do_rescale (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب إعادة تحجيم الصورة.

rescale_factor (`float`، *kwargs*، *اختياري*) : معامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان `do_rescale` مضبوطًا على `True`.

do_normalize (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تطبيع الصورة.

image_mean (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*) : متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

image_std (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*) : الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

do_pad (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب إضافة حشوة إلى الصورة. يتم تنفيذ الحشوة إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية الحشوة الدقيقة على النموذج.

pad_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : الحجم على شكل `{"height": int, "width" int}` الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّم `pad_size`، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكون `do_pad=True.`

do_center_crop (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب قص الصورة من المنتصف.

data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : يُدعم `ChannelDimension.FIRST` فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : تنسيق بُعد القناة للصورة المدخلة. إذا لم يتم ضبطه، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي: - `"channels_first"` أو `ChannelDimension.FIRST`: صورة بتنسيق (num_channels, height, width). - `"channels_last"` أو `ChannelDimension.LAST`: صورة بتنسيق (height, width, num_channels). - `"none"` أو `ChannelDimension.NONE`: صورة بتنسيق (height, width).

device (`Annotated[Union[str, torch.device, NoneType], None]`, *kwargs*) : الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم ضبطه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : تُرجع توتنرات مكدّسة إذا كان الإعداد `'pt'`، وإلا تُرجع قائمة من التوتنرات.

disable_grouping (`bool`، *kwargs*، *اختياري*) : ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157

image_seq_length (`int`، *kwargs*، *اختياري*) : عدد رموز الصور التي سيتم استخدامها لكل صورة في المدخلات. أُضيفت لضمان التوافق مع الإصدارات السابقة، لكن ينبغي ضبطها كخاصية للمعالج في النماذج المستقبلية.

do_split_image (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية هي `self.do_split_image`) : ما إذا كان يجب تقسيم الصور المدخلة إلى قطع متداخلة للتجزئة الدلالية. إذا تم ضبطها على `True`، فسيتم تقسيم الصور المدخلة إلى قطع بحجم `size["shortest_edge"]` مع تداخل بين القطع. وإلا، فسيتم ملء الصور المدخلة حتى الحجم المستهدف.

ignore_index (`int`، *kwargs*، *اختياري*، القيمة الافتراضية هي `self.ignore_index`) : التسمية التي سيتم إسنادها إلى بكسلات الخلفية في خرائط التقسيم. إذا تم تقديمها، فسيتم استبدال بكسلات خريطة التقسيم المُشار إليها بـ 0 (الخلفية) بـ `ignore_index`.

**يعيد:** `~image_processing_base.BatchFeature`

- **data** (`dict`) -- قاموس من القوائم/المصفوفات/الموترات التي يعيدها أسلوب __call__ ('pixel_values'، وما إلى ذلك).
- **tensor_type** (`Union[None, str, TensorType]`، *اختياري*) -- يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.

#### post_process_semantic_segmentation[[transformers.EomtImageProcessor.post_process_semantic_segmentation]]

```python
post_process_semantic_segmentation(outputs, target_sizes: list, size: dict[str, int] | None = None, return_segmentation_scores: bool = False)
```

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

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

outputs ([EomtForUniversalSegmentation](/docs/transformers/main/ar/model_doc/eomt#transformers.EomtForUniversalSegmentation)) : المخرجات الخام للنموذج.

target_sizes (`list[tuple[int, int]]`) : قائمة من الأزواج (`tuple[int, int]`) تحتوي على الحجم المستهدف (الارتفاع، العرض) لكل صورة في الدفعة.

size (`dict[str, int]`، *اختياري*) : الحجم الذي يتم من خلاله استيفاء الأقنعة الوسيطة. القيمة الافتراضية هي `self.size`.

return_segmentation_scores (`bool`, *اختياري*, القيمة الافتراضية `False`) : هل تُعاد تقييمات التقسيم إلى جانب خريطة التقسيم. عند تعيين `True`، يكون كل عنصر في القائمة المُعادة من نوع `SemanticSegmentationPostProcessorOutput` مع الحقل `segmentation` (معرّفات الفئات، الشكل `(height, width)`) والحقل `segmentation_scores` (الشكل `(num_classes, height, width)`).

**يعيد:** `list[torch.Tensor]` أو `list[SemanticSegmentationPostProcessorOutput]`

عندما يكون `return_segmentation_scores=False` (الافتراضي)، تكون النتيجة قائمة بطول `batch_size` حيث يكون كل عنصر منها خريطة تجزئة (segmentation map) بأبعاد `(height, width)` تحتوي على معرّفات الفئات. عندما يكون `return_segmentation_scores=True`، تكون النتيجة قائمة من `SemanticSegmentationPostProcessorOutput` تحتوي على الحقول `segmentation` (معرّفات الفئات، بأبعاد `(height, width)`) و`segmentation_scores` (بأبعاد `(num_classes, height, width)`). في الحالتين، يمثل `(height, width)` الحجم المستهدف.

يحوّل مخرجات [EomtForUniversalSegmentation](/docs/transformers/main/ar/model_doc/eomt#transformers.EomtForUniversalSegmentation) إلى خرائط تجزئة دلالية.

#### post_process_instance_segmentation[[transformers.EomtImageProcessor.post_process_instance_segmentation]]

```python
post_process_instance_segmentation(outputs, target_sizes: list, threshold: float = 0.8, size: dict[str, int] | None = None)
```

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

يعالج مخرجات النموذج بعد المعالجة لتحويلها إلى تنبؤات تقطيع الكائنات.

#### post_process_panoptic_segmentation[[transformers.EomtImageProcessor.post_process_panoptic_segmentation]]

```python
post_process_panoptic_segmentation(outputs, target_sizes: list, threshold: float = 0.8, mask_threshold: float = 0.5, overlap_mask_area_threshold: float = 0.8, stuff_classes: list[int] | None = None, size: dict[str, int] | None = None)
```

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

يعالج مخرجات النموذج بعد المعالجة لتحويلها إلى تنبؤ نهائي للتجزئة البانوبتية.

## EomtImageProcessorPil[[transformers.EomtImageProcessorPil]]

#### transformers.EomtImageProcessorPil[[transformers.EomtImageProcessorPil]]

```python
transformers.EomtImageProcessorPil(**kwargs: *<class 'transformers.models.eomt.image_processing_pil_eomt.EomtImageProcessorKwargs'>)
```

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

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

do_convert_rgb (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تحويل الصورة إلى RGB.

do_resize (`bool`، *kwargs*، *اختياري*، الافتراضي هو `True`) : ما إذا كان سيتم تغيير حجم الصورة.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*، القيمة الافتراضية `{'shortest_edge' : 640, 'longest_edge': 640}`): يصف الأبعاد القصوى للإدخال إلى النموذج.

default_to_square (`bool`، *kwargs*، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم افتراض صورة مربعة عند تغيير الحجم، إذا كان size من نوع int.

crop_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*) : حجم الصورة الناتجة بعد تطبيق `center_crop`.

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`، *kwargs*، القيمة الافتراضية `2`) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعداد `PILImageResampling`. لا يؤثر إلا إذا كانت قيمة `do_resize` هي `True`.

do_rescale (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إعادة تحجيم الصورة.

rescale_factor (`float`، *kwargs*، *اختياري*، القيمة الافتراضية هي `0.00392156862745098`) : عامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان `do_rescale` مضبوطاً على `True`.

do_normalize (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تطبيع الصورة.

image_mean (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*، القيمة الافتراضية `[0.485, 0.456, 0.406]`) : متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

image_std (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*، القيمة الافتراضية `[0.229, 0.224, 0.225]`) : الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

do_pad (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إضافة حشوة (padding) إلى الصورة. يتم تنفيذ الحشوة إما إلى أكبر حجم في الدفعة (batch) أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية الحشوة الدقيقة على النموذج.

pad_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : الحجم على شكل `{"height": int, "width" int}` الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّم `pad_size`، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكون `do_pad=True.`

do_center_crop (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب قص الصورة من المنتصف.

data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : يُدعم `ChannelDimension.FIRST` فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : تنسيق بُعد القناة للصورة المدخلة. إذا لم يتم ضبطه، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي: - `"channels_first"` أو `ChannelDimension.FIRST`: صورة بتنسيق (num_channels, height, width). - `"channels_last"` أو `ChannelDimension.LAST`: صورة بتنسيق (height, width, num_channels). - `"none"` أو `ChannelDimension.NONE`: صورة بتنسيق (height, width).

device (`Annotated[Union[str, torch.device, NoneType], None]`, *kwargs*) : الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم ضبطه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : تُرجع توتنرات مكدّسة إذا كان الإعداد `'pt'`، وإلا تُرجع قائمة من التوتنرات.

disable_grouping (`bool`، *kwargs*، *اختياري*) : ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157

image_seq_length (`int`، *kwargs*، *اختياري*) : عدد رموز الصور التي سيتم استخدامها لكل صورة في المدخلات. أُضيفت لضمان التوافق مع الإصدارات السابقة، لكن ينبغي ضبطها كخاصية للمعالج في النماذج المستقبلية.

do_split_image (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية هي `self.do_split_image`) : ما إذا كان يجب تقسيم الصور المدخلة إلى قطع متداخلة للتجزئة الدلالية. إذا تم ضبطها على `True`، فسيتم تقسيم الصور المدخلة إلى قطع بحجم `size["shortest_edge"]` مع تداخل بين القطع. وإلا، فسيتم ملء الصور المدخلة حتى الحجم المستهدف.

ignore_index (`int`، *kwargs*، *اختياري*، القيمة الافتراضية هي `self.ignore_index`) : التسمية التي سيتم إسنادها إلى بكسلات الخلفية في خرائط التقسيم. إذا تم تقديمها، فسيتم استبدال بكسلات خريطة التقسيم المُشار إليها بـ 0 (الخلفية) بـ `ignore_index`.

ينشئ معالج صور EomtImageProcessor.

#### preprocess[[transformers.EomtImageProcessorPil.preprocess]]

```python
preprocess(images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']], segmentation_maps: list[torch.Tensor] | None = None, instance_id_to_semantic_id: dict[int, int] | None = None, **kwargs: *<class 'transformers.models.eomt.image_processing_pil_eomt.EomtImageProcessorKwargs'>)
```

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

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

images (`Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]`) : الصورة المراد معالجتها مسبقًا. يتوقع صورة واحدة أو دفعة من الصور بقيم بكسل تتراوح بين 0 و255. إذا كنت تمرر صورًا بقيم بكسل بين 0 و1، فاضبط `do_rescale=False`.

segmentation_maps (`ImageInput`، *اختياري*) : خرائط التقسيم التي يجب معالجتها مسبقًا للصور المقابلة.

instance_id_to_semantic_id (`list[dict[int, int]]` أو `dict[int, int]`، *اختياري*) : تعيين بين معرّفات هياكل الكائنات ومعرّفات الفئات.

do_convert_rgb (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تحويل الصورة إلى RGB.

do_resize (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تغيير حجم الصورة.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : يصف الأبعاد القصوى للمدخلات إلى النموذج.

default_to_square (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كان الحجم عددًا صحيحًا.

crop_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*) : حجم الصورة الناتجة بعد تطبيق `center_crop`.

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`, *kwargs*) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم enum `PILImageResampling`. لا يؤثر إلا إذا كان `do_resize` مضبوطاً على `True`.

do_rescale (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب إعادة تحجيم الصورة.

rescale_factor (`float`، *kwargs*، *اختياري*) : معامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان `do_rescale` مضبوطًا على `True`.

do_normalize (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب تطبيع الصورة.

image_mean (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*) : متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

image_std (`Union[float, list[float], tuple[float, ...]]`، *kwargs*، *اختياري*) : الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

do_pad (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب إضافة حشوة إلى الصورة. يتم تنفيذ الحشوة إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية الحشوة الدقيقة على النموذج.

pad_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : الحجم على شكل `{"height": int, "width" int}` الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّم `pad_size`، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكون `do_pad=True.`

do_center_crop (`bool`، *kwargs*، *اختياري*) : ما إذا كان يجب قص الصورة من المنتصف.

data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : يُدعم `ChannelDimension.FIRST` فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : تنسيق بُعد القناة للصورة المدخلة. إذا لم يتم ضبطه، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي: - `"channels_first"` أو `ChannelDimension.FIRST`: صورة بتنسيق (num_channels, height, width). - `"channels_last"` أو `ChannelDimension.LAST`: صورة بتنسيق (height, width, num_channels). - `"none"` أو `ChannelDimension.NONE`: صورة بتنسيق (height, width).

device (`Annotated[Union[str, torch.device, NoneType], None]`, *kwargs*) : الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم ضبطه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : تُرجع توتنرات مكدّسة إذا كان الإعداد `'pt'`، وإلا تُرجع قائمة من التوتنرات.

disable_grouping (`bool`، *kwargs*، *اختياري*) : ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157

image_seq_length (`int`، *kwargs*، *اختياري*) : عدد رموز الصور التي سيتم استخدامها لكل صورة في المدخلات. أُضيفت لضمان التوافق مع الإصدارات السابقة، لكن ينبغي ضبطها كخاصية للمعالج في النماذج المستقبلية.

do_split_image (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية هي `self.do_split_image`) : ما إذا كان يجب تقسيم الصور المدخلة إلى قطع متداخلة للتجزئة الدلالية. إذا تم ضبطها على `True`، فسيتم تقسيم الصور المدخلة إلى قطع بحجم `size["shortest_edge"]` مع تداخل بين القطع. وإلا، فسيتم ملء الصور المدخلة حتى الحجم المستهدف.

ignore_index (`int`، *kwargs*، *اختياري*، القيمة الافتراضية هي `self.ignore_index`) : التسمية التي سيتم إسنادها إلى بكسلات الخلفية في خرائط التقسيم. إذا تم تقديمها، فسيتم استبدال بكسلات خريطة التقسيم المُشار إليها بـ 0 (الخلفية) بـ `ignore_index`.

**يعيد:** `~image_processing_base.BatchFeature`

- **data** (`dict`) -- قاموس من القوائم/المصفوفات/الموترات التي يعيدها أسلوب __call__ ('pixel_values'، وما إلى ذلك).
- **tensor_type** (`Union[None, str, TensorType]`، *اختياري*) -- يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.

#### post_process_semantic_segmentation[[transformers.EomtImageProcessorPil.post_process_semantic_segmentation]]

```python
post_process_semantic_segmentation(outputs, target_sizes: list, size: dict[str, int] | None = None, return_segmentation_scores: bool = False)
```

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

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

outputs ([EomtForUniversalSegmentation](/docs/transformers/main/ar/model_doc/eomt#transformers.EomtForUniversalSegmentation)) : المخرجات الخام للنموذج.

target_sizes (`list[tuple[int, int]]`) : قائمة من الأزواج (`tuple[int, int]`) تحتوي على الحجم المستهدف (الارتفاع، العرض) لكل صورة في الدفعة.

size (`dict[str, int]`، *اختياري*) : الحجم الذي يتم من خلاله استيفاء الأقنعة الوسيطة. القيمة الافتراضية هي `self.size`.

return_segmentation_scores (`bool`, *اختياري*, القيمة الافتراضية `False`) : هل تُعاد تقييمات التقسيم إلى جانب خريطة التقسيم. عند تعيين `True`، يكون كل عنصر في القائمة المُعادة من نوع `SemanticSegmentationPostProcessorOutput` مع الحقل `segmentation` (معرّفات الفئات، الشكل `(height, width)`) والحقل `segmentation_scores` (الشكل `(num_classes, height, width)`).

**يعيد:** `list[torch.Tensor]` أو `list[SemanticSegmentationPostProcessorOutput]`

عندما يكون `return_segmentation_scores=False` (الافتراضي)، تكون النتيجة قائمة بطول `batch_size` حيث يكون كل عنصر منها خريطة تجزئة (segmentation map) بأبعاد `(height, width)` تحتوي على معرّفات الفئات. عندما يكون `return_segmentation_scores=True`، تكون النتيجة قائمة من `SemanticSegmentationPostProcessorOutput` تحتوي على الحقول `segmentation` (معرّفات الفئات، بأبعاد `(height, width)`) و`segmentation_scores` (بأبعاد `(num_classes, height, width)`). في الحالتين، يمثل `(height, width)` الحجم المستهدف.

يحوّل مخرجات [EomtForUniversalSegmentation](/docs/transformers/main/ar/model_doc/eomt#transformers.EomtForUniversalSegmentation) إلى خرائط تجزئة دلالية.

#### post_process_instance_segmentation[[transformers.EomtImageProcessorPil.post_process_instance_segmentation]]

```python
post_process_instance_segmentation(outputs, target_sizes: list, threshold: float = 0.8, size: dict[str, int] | None = None)
```

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

يعالج مخرجات النموذج بعد المعالجة لتحويلها إلى تنبؤات تقطيع الكائنات.

#### post_process_panoptic_segmentation[[transformers.EomtImageProcessorPil.post_process_panoptic_segmentation]]

```python
post_process_panoptic_segmentation(outputs, target_sizes: list, threshold: float = 0.8, mask_threshold: float = 0.5, overlap_mask_area_threshold: float = 0.8, stuff_classes: list[int] | None = None, size: dict[str, int] | None = None)
```

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

يعالج مخرجات النموذج بعد المعالجة لتحويلها إلى تنبؤ نهائي للتجزئة البانوبتية.

## EomtConfig[[transformers.EomtConfig]]

#### transformers.EomtConfig[[transformers.EomtConfig]]

```python
transformers.EomtConfig(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, hidden_size: int = 1024, num_hidden_layers: int = 24, num_attention_heads: int = 16, hidden_act: str = 'gelu', hidden_dropout_prob: float | int = 0.0, initializer_range: float = 0.02, layer_norm_eps: float = 1e-06, image_size: int | list[int] | tuple[int, int] = 640, patch_size: int | list[int] | tuple[int, int] = 16, num_channels: int = 3, mlp_ratio: int = 4, layerscale_value: float = 1.0, drop_path_rate: float | int = 0.0, num_upscale_blocks: int = 2, attention_dropout: float | int = 0.0, use_swiglu_ffn: bool = False, num_blocks: int = 4, no_object_weight: float = 0.1, class_weight: float = 2.0, mask_weight: float = 5.0, dice_weight: float = 5.0, train_num_points: int = 12544, oversample_ratio: float = 3.0, importance_sample_ratio: float = 0.75, num_queries: int = 200, num_register_tokens: int = 4)
```

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

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

hidden_size (`int`، *اختياري*، القيمة الافتراضية `1024`) : بُعد التمثيلات المخفية.

num_hidden_layers (`int`، *اختياري*، القيمة الافتراضية `24`) : عدد الطبقات المخفية في مُفكِّك Transformer.

num_attention_heads (`int`، *اختياري*، القيمة الافتراضية `16`) : عدد رؤوس الانتباه في كل طبقة انتباه داخل مُفكِّك Transformer.

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

hidden_dropout_prob (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.0`) : احتمال الإسقاط (dropout) لجميع الطبقات المتصلة بالكامل في التضمينات (embeddings) والمشفّر (encoder) والمجمّع (pooler).

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

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

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

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

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

mlp_ratio (`int`، *اختياري*، القيمة الافتراضية `4`) : نسبة بُعد مخفي MLP إلى بُعد التضمين.

layerscale_value (`float`، *اختياري*، القيمة الافتراضية 1.0) : القيمة الأولية لمعامل LayerScale.

drop_path_rate (`Union[float, int]`, *اختياري*, القيمة الافتراضية هي `0.0`) : معدل إسقاط المسار لدمج البقع.

num_upscale_blocks (`int`، *اختياري*، القيمة الافتراضية 2) : عدد كتل رفع العينة المستخدمة في فك الترميز أو رأس التقطيع.

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

use_swiglu_ffn (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم استخدام شبكة العصبونات الأمامية SwiGLU.

num_blocks (`int`، *اختياري*، القيمة الافتراضية 4) : عدد كتل الميزات أو المراحل في البنية.

no_object_weight (`float`، *اختياري*، القيمة الافتراضية 0.1) : وزن الخسارة لفئة "لا يوجد كائن" في التقطيع البانورامي/المشهدي.

class_weight (`float`، *اختياري*، القيمة الافتراضية 2.0) : وزن الخسارة لأهداف التصنيف.

mask_weight (`float`، *اختياري*، القيمة الافتراضية 5.0) : وزن الخسارة للتنبؤ بالقناع.

dice_weight (`float`، *اختياري*، القيمة الافتراضية `5.0`) : الوزن النسبي لخسارة الدايك (dice loss) في خسارة التقطيع البانورامي (panoptic segmentation).

train_num_points (`int`، *اختياري*، القيمة الافتراضية 12544) : عدد النقاط التي يتم أخذ عينات منها لحساب خسارة القناع (mask loss) أثناء التدريب.

oversample_ratio (`float`، *اختياري*، القيمة الافتراضية 3.0) : نسبة الإفراط في العينة المستخدمة في أخذ العينات من النقاط لتدريب الأقنعة.

importance_sample_ratio (`float`، *اختياري*، القيمة الافتراضية 0.75) : نسبة النقاط التي يتم أخذها كعينة بناءً على الأهمية أثناء التدريب.

num_queries (`int`، *اختياري*، القيمة الافتراضية 200) : عدد استعلامات الكائنات في Transformer.

num_register_tokens (`int`، *اختياري*، القيمة الافتراضية 4) : عدد رموز التسجيل القابلة للتعلّم المضافة إلى مدخلات المحول.

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

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

مثال:

```python
>>> from transformers import EomtConfig, EomtForUniversalSegmentation

>>> # Initialize configuration
>>> config = EomtConfig()

>>> # Initialize model
>>> model = EomtForUniversalSegmentation(config)

>>> # Access config
>>> config = model.config
```

## EomtForUniversalSegmentation[[transformers.EomtForUniversalSegmentation]]

#### transformers.EomtForUniversalSegmentation[[transformers.EomtForUniversalSegmentation]]

```python
transformers.EomtForUniversalSegmentation(config: EomtConfig)
```

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

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

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

نموذج EoMT مع رأس في الأعلى للتجزئة على مستوى المثال/الدلالي/الشامل.

يرث هذا النموذج من [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.EomtForUniversalSegmentation.forward]]

```python
forward(pixel_values: Tensor, mask_labels: list[torch.Tensor] | None = None, class_labels: list[torch.Tensor] | None = None, patch_offsets: list[torch.Tensor] | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

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

mask_labels (`list[torch.Tensor]`، *اختياري*) : قائمة بوسمات القناع (mask labels) ذات الشكل `(num_labels, height, width)` لتغذية النموذج

class_labels (`list[torch.LongTensor]`، *اختياري*) : قائمة بوسوم الفئات المستهدفة ذات الشكل `(num_labels, height, width)` لتغذية النموذج. تحدد هذه القائمة وسم `mask_labels`، على سبيل المثال وسم `mask_labels[i][j]` إذا كان `class_labels[i][j]`.

patch_offsets (`list[torch.Tensor]`، *اختياري*) : قائمة من السجلات (tuples) تشير إلى فهرس الصورة والمواضع الابتدائية والنهائية للرقع (patches) لتجزئة الدلالات (semantic segmentation).

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

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

تُعيد طريقة [EomtForUniversalSegmentation](/docs/transformers/main/ar/model_doc/eomt#transformers.EomtForUniversalSegmentation) الأمامية تعريف الطريقة الخاصة `__call__`.

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

- **loss** (`torch.Tensor`، *اختياري*) -- الخسارة المحسوبة، تُعاد عند وجود التسميات.
- **class_queries_logits** (`torch.Tensor`، *اختياري*) -- متجه ذو شكل `(batch_size, num_queries, num_labels + 1)` يمثل الفئات المقترحة لكل استعلام. لاحظ أن `+ 1` ضروري لأننا ندمج الفئة الفارغة.
- **masks_queries_logits** (`torch.Tensor`، *اختياري*) -- متجه ذو شكل `(batch_size, num_queries, height, width)` يمثل الأقنعة المقترحة لكل استعلام.
- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, num_channels, height, width)`) -- حالات المخفية الأخيرة (خريطة الميزات النهائية) للطبقة الأخيرة.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لإخراج التضمينات + واحدة لإخراج كل مرحلة) بأبعاد `(batch_size, sequence_length, hidden_size)`. حالات مخفية لجميع طبقات النموذج.
- **attentions** (`tuple(tuple(torch.Tensor))`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `tuple(torch.Tensor)` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. أوزان الانتباه الذاتي والتقاطعي من فاحش التحويل (transformer decoder).
- **patch_offsets** (`list[torch.Tensor]`، *اختياري*) -- قائمة من السلاسل (tuples) تشير إلى فهرس الصورة ومواقع بداية ونهاية البقع (patches) للتجزئة الدلالية.

