Transformers documentation

EoMT-DINOv3

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

نُشر هذا النموذج في أوراق HF في 24 مارس 2025، وأُضيف إلى مكتبة Hugging Face Transformers في 2 فبراير 2026.

EoMT-DINOv3

SDPA

نظرة عامة

توسّع عائلة EoMT-DINOv3 من بنية Encoder-only Mask Transformer باستخدام محولات الرؤية (Vision Transformers) التي تم تدريبها مسبقًا باستخدام DINOv3. يوفر هذا التحديث جودة تقطيع (Segmentation) أعلى عبر معايير ADE20K وCOCO، مع الحفاظ على التصميم المعتمد على المُشفِّر فقط (encoder-only) الذي جعل EoMT جذابة للتطبيقات الفورية.

مقارنةً بالنماذج القائمة على DINOv2، تستفيد نسخ DINOv3 من تضمينات الموضع الدوارة، والكتل الاختيارية متعددة الطبقات المعتمدة على البوابات (gated MLP blocks)، وأحدث وصفات التدريب المسبق من Meta AI. وتُحقق هذه التغييرات مكاسب أداء قابلة للقياس عبر مهام التقسيم الدلالي، والتقسيم على مستوى الكائن، والتقسيم الشامل، كما هو موضح في مجموعة نماذج DINOv3.

تم تقديم بنية EoMT الأصلية في ورقة CVPR 2025 المميزة Your ViT is Secretly an Image Segmentation Model التي كتبها Tommie Kerssies وNiccolò Cavagnero وAlexander Hermans وNarges Norouzi وGiuseppe Averta وBastian Leibe وGijs Dubbelman وDaan de Geus. يحافظ ترقية DINOv3 على رأس التقطيع الخفيف نفسه واستراتيجية الاستدلال القائمة على الاستعلامات، مع استبدال المُشفِّر بنقاط تفتيش DINOv3 ViT.

نصائح:

  • تُتيح الإعدادات ضبط خيارات خاصة بـ DINOv3 مثل rope_theta وuse_gated_mlp. وتتوقع هياكل DINOv3 الكبيرة مثل dinov3-vitg14 أن تكون use_gated_mlp=True.
  • يمكن لنماذج DINOv3 العمل على نطاق أوسع من الدقات بفضل تضمينات المواقع الدورانية. لا يزال معالج الصور يعتمد على المحاصيل المربعة افتراضياً، لكن يمكن تقديم أحجام مخصصة عبر AutoImageProcessor.
  • توفر نقاط التفتيش المُدرَّبة مسبقًا التي يستضيفها مختبر أنظمة الإدراك المتنقل في جامعة TU/e أوزانًا دلتا يجب دمجها مع هياكل DINOv3 الأساسية. وتصف أدوات التحويل في المستودع الرسمي هذا سير العمل بالتفصيل.

تمت مساهمة هذا النموذج من قِبل nielsr. يمكن العثور على الكود الأصلي هنا.

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

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

import requests
import torch
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForUniversalSegmentation


model_id = "tue-mps/eomt-dinov3-coco-panoptic-base-640"
processor = AutoImageProcessor.from_pretrained(model_id)
model = AutoModelForUniversalSegmentation.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").to(model.device)

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

segmentation = processor.post_process_panoptic_segmentation(outputs, target_sizes=[image.size[::-1]])[0]
list(segmentation.keys())
['segmentation', 'segments_info']

EomtDinov3Config

فئة transformers.EomtDinov3Config

< >

( 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 = Nonehidden_size: int = 1024num_hidden_layers: int = 24num_attention_heads: int = 16hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.0initializer_range: float = 0.02layer_norm_eps: float = 1e-06image_size: int | list[int] | tuple[int, int] = 640patch_size: int | list[int] | tuple[int, int] = 16num_channels: int = 3layerscale_value: float = 1.0drop_path_rate: float | int = 0.0num_upscale_blocks: int = 2attention_dropout: float | int = 0.0num_blocks: int = 4no_object_weight: float = 0.1class_weight: float = 2.0mask_weight: float = 5.0dice_weight: float = 5.0train_num_points: int = 12544oversample_ratio: float = 3.0importance_sample_ratio: float = 0.75num_queries: int = 200num_register_tokens: int = 4intermediate_size: int = 4096rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Nonequery_bias: bool = Truekey_bias: bool = Falsevalue_bias: bool = Trueproj_bias: bool = Truemlp_bias: bool = Trueuse_gated_mlp: bool = Falsepos_embed_shift: float | None = Nonepos_embed_jitter: float | None = Nonepos_embed_rescale: float | None = 2.0 )

المعاملات

  • 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) لجميع الطبقات المتصلة بالكامل في التضمينات، والمُشفِّر، والمُجمِّع.
  • 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) — عدد قنوات الإدخال.
  • layerscale_value (float، اختياري، القيمة الافتراضية 1.0) — القيمة الأولية لمعامل LayerScale.
  • drop_path_rate (Union[float, int], اختياري، القيمة الافتراضية 0.0) — معدل إسقاط المسار (Drop path) لدمج البقع (patch fusion).
  • num_upscale_blocks (int، اختياري، القيمة الافتراضية 2) — عدد كتل رفع الدقة المستخدمة في فك الترميز أو رأس التقطيع.
  • attention_dropout (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — نسبة إسقاط (dropout) لاحتمالات الانتباه.
  • num_blocks (int، اختياري، القيمة الافتراضية 4) — عدد كتل الميزات أو المراحل في البنية.
  • no_object_weight (float, اختياري، القيمة الافتراضية 0.1) — وزن الدالة الخاسرة لفئة "لا يوجد كائن" في التقطيع البانورامي/المشهدي.
  • class_weight (float، اختياري، القيمة الافتراضية 2.0) — الوزن النسبي لخطأ التصنيف في تكلفة المطابقة الهنغارية.
  • mask_weight (float، اختياري، القيمة الافتراضية 5.0) — الوزن النسبي لخسارة التركيز (focal loss) في خسارة التقطيع الشامل (panoptic segmentation).
  • 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) — عدد رموز التسجيل القابلة للتعلّم المضافة إلى مدخلات المحوّل.
  • intermediate_size (int، اختياري، القيمة الافتراضية 4096) — أبعاد تمثيلات MLP.
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], اختياري) — قائمة تحتوي على معاملات التهيئة الخاصة بتضمينات RoPE. يجب أن تحتوي القائمة على قيمة لـ rope_theta، ومعاملات اختيارية تُستخدم للتوسيع في حال رغبتَ في استخدام RoPE مع max_position_embeddings أطول.
  • query_bias (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم استخدام انحياز في إسقاط الاستعلام.
  • key_bias (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم استخدام الانحياز في إسقاط المفتاح.
  • value_bias (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم استخدام الانحياز في الإسقاط القيمي.
  • proj_bias (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم استخدام الانحياز في الإسقاط الخرجي.
  • mlp_bias (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم استخدام انحياز في طبقات up_proj و down_proj و gate_proj ضمن طبقات MLP.
  • use_gated_mlp (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم استخدام طبقات MLP ذات البوابات.
  • pos_embed_shift (float, اختياري) — قيمة الإزاحة لتضمينات المواقع.
  • pos_embed_jitter (float, اختياري) — قيمة الاهتزاز لتضمينات المواقع.
  • pos_embed_rescale (float، اختياري، القيمة الافتراضية 2.0) — قيمة إعادة التحجيم لتضمينات المواقع.

هذه فئة الإعدادات المخزنة لإعدادات نموذج Eomt Dinov3Model. تُستخدم لاستحداث نموذج Eomt Dinov3 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ tue-mps/coco_panoptic_eomt_large_640_dinov3

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

EomtDinov3PreTrainedModel

فئة transformers.EomtDinov3PreTrainedModel

< >

( config: PreTrainedConfig*inputs**kwargs )

المعاملات

  • config (PreTrainedConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

( *args**kwargs )

قيمة وهمية لمسار منقّط (مثل torch.float32): سلاسل الوصول إلى السمات، والاستدعاءات تتصرف كمُزيّنات (decorators) مرّرة، وrepr هو المسار المنقّط، وعند استخدامه كصنف أساسي يُستبدل بصنف أساسي من نوع type عادي (بموجب __mro_entries__ في PEP 560)، بحيث تحتفظ الصنوف الفرعية الحقيقية بفئة ميتا (metaclass) عادية، وتقرأ inspect.signature دالة __init__ الحقيقية الخاصة بها بدلاً من تلك الوهمية.

EomtDinov3ForUniversalSegmentation

فئة transformers.EomtDinov3ForUniversalSegmentation

< >

( config: EomtDinov3Config )

المعاملات

  • config (EomtDinov3Config) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

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

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( pixel_values: Tensormask_labels: list[torch.Tensor] | None = Noneclass_labels: list[torch.Tensor] | None = Nonepatch_offsets: list[torch.Tensor] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → EomtDinov3ForUniversalSegmentationOutput or tuple(torch.Tensor)

المعاملات

  • pixel_values (torch.Tensor من الشكل (batch_size, num_channels, image_size, image_size)) — المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسل باستخدام EomtImageProcessor. راجع EomtImageProcessor.call() للتفاصيل (يستخدم processor_class EomtImageProcessor لمعالجة الصور).
  • mask_labels (list[torch.Tensor]، اختياري) — قائمة بتسميات الأقنعة ذات الشكل (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).

يعيد

EomtDinov3ForUniversalSegmentationOutput أو tuple(torch.Tensor)

EomtDinov3ForUniversalSegmentationOutput أو مجموعة مرتبة من torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتمادًا على الإعداد (EomtDinov3Config) والمدخلات.

تتجاوز طريقة EomtDinov3ForUniversalSegmentation الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

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

  • loss (torch.Tensor، اختياري) — الخسارة المحسوبة، تُعاد عند وجود التسميات.
  • class_queries_logits (torch.Tensor، اختياري) — متجه (Tensor) على شكل (batch_size, num_queries, num_labels + 1) يمثل الفئات المقترحة لكل استعلام. لاحظ أن + 1 ضروري لأننا ندمج فئة فارغة (null class).
  • 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) الخاصة بالتجزئة الدلالية (semantic segmentation).
Update on GitHub