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.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Bu model 2025-03-24 tarihinde HF papers'ta yayımlandı ve 2026-02-02 tarihinde Hugging Face Transformers'a katkıda bulunuldu.

EoMT-DINOv3

SDPA

Genel Bakış

EoMT-DINOv3 ailesi, Encoder-only Mask Transformer mimarisini, DINOv3 kullanılarak ön eğitilmiş Vision Transformer'larla genişletir. Bu güncelleme, ADE20K ve COCO kıyas ölçülerinde daha güçlü segmentasyon kalitesi sunarken, EoMT'yi gerçek zamanlı uygulamalar için cazip kılan yalnızca kodlayıcı (encoder-only) tasarımı korur.

DINOv2 tabanlı modellere kıyasla DINOv3 varyantları, döner konum gömme (rotary position embeddings), isteğe bağlı kapılı MLP blokları ve Meta AI'ın en son ön eğitim tarifelerini kullanır. Bu değişiklikler, DINOv3 model koleksiyonunda vurgulandığı gibi, anlamsal, örnek ve panoptik segmentasyon görevlerinde ölçülebilir performans kazanımları sağlar.

Orijinal EoMT mimarisi, Tommie Kerssies, Niccolò Cavagnero, Alexander Hermans, Narges Norouzi, Giuseppe Averta, Bastian Leibe, Gijs Dubbelman ve Daan de Geus tarafından hazırlanan CVPR 2025 Highlight makalesi Your ViT is Secretly an Image Segmentation Model ile tanıtılmıştır. DINOv3 yükseltmesi, aynı hafif segmentasyon başlığını ve sorgu tabanlı çıkarım stratejisini korurken kodlayıcıyı DINOv3 ViT kontrol noktalarıyla değiştirir.

İpuçları:

  • Yapılandırma, rope_theta ve use_gated_mlp gibi DINOv3'e özgü ayarları açığa çıkarır. dinov3-vitg14 gibi büyük DINOv3 omurgaları use_gated_mlp=True değerini bekler.
  • DINOv3 modelleri, döner konum gömme (rotary position embeddings) sayesinde daha geniş bir çözünürlük aralığında çalışabilir. Görüntü işleyici (image processor) varsayılan olarak kare kırpma kullanmaya devam eder ancak özel boyutlar AutoImageProcessor üzerinden sağlanabilir.
  • TU/e Mobile Perception Systems Lab tarafından barındırılan önceden eğitilmiş denetim noktaları, upstream DINOv3 omurgalarıyla birleştirilmesi gereken delta ağırlıklarını sağlar. resmi depodaki dönüştürme yardımcı programları bu iş akışını ayrıntılı olarak açıklar.

Bu model nielsr tarafından katkıda bulunmuştur. Orijinal kod burada bulunabilir.

Kullanım örnekleri

Aşağıda, DINOv3 destekli bir EoMT modeliyle panoptik segmentasyonun nasıl çalıştırılacağını gösteren minimal bir örnek bulunmaktadır. Aynı görüntü işleyici, kontrol noktasını değiştirerek semantik veya örnekle segmentasyon için de yeniden kullanılabilir.

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

sınıf 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 )

Parametreler

  • hidden_size (int, isteğe bağlı, varsayılan 1024) — Gizli temsillerin boyutu.
  • num_hidden_layers (int, isteğe bağlı, varsayılan 24) — Transformer çözücüdeki gizli katman sayısı.
  • num_attention_heads (int, isteğe bağlı, varsayılan 16) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.
  • hidden_act (str, isteğe bağlı, varsayılan gelu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • hidden_dropout_prob (Union[float, int], isteğe bağlı, varsayılan 0.0) — Gömme, kodlayıcı ve havuzlayıcıdaki tüm tam bağlı katmanlar için dropout olasılığı.
  • initializer_range (float, isteğe bağlı, varsayılan 0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.
  • layer_norm_eps (float, isteğe bağlı, varsayılan 1e-06) — Katman normalizasyon katmanları tarafından kullanılan epsilon.
  • image_size (Union[int, list[int], tuple[int, int]], isteğe bağlı, varsayılan 640) — Her bir görüntünün boyutu (çözünürlüğü).
  • patch_size (Union[int, list[int], tuple[int, int]], isteğe bağlı, varsayılan 16) — Her yamanın boyutu (çözünürlüğü).
  • num_channels (int, isteğe bağlı, varsayılan 3) — Giriş kanal sayısı.
  • layerscale_value (float, isteğe bağlı, varsayılan 1.0) — LayerScale parametresi için başlangıç değeri.
  • drop_path_rate (Union[float, int], isteğe bağlı, varsayılan 0.0) — Patch füzyonu için drop path oranı.
  • num_upscale_blocks (int, isteğe bağlı, varsayılan 2) — Çözücüde veya segmentasyon başlığında kullanılan yükseltme bloklarının sayısı.
  • attention_dropout (Union[float, int], isteğe bağlı, varsayılan 0.0) — Dikkat olasılıkları için dropout oranı.
  • num_blocks (int, isteğe bağlı, varsayılan 4) — Mimari içindeki özellik bloğu veya aşama sayısı.
  • no_object_weight (float, isteğe bağlı, varsayılan 0.1) — Panoptik/nesne segmentasyonunda “nesne yok” sınıfı için kayıp ağırlığı.
  • class_weight (float, isteğe bağlı, varsayılan 2.0) — Macar eşleştirme maliyetinde sınıflandırma hatasının göreli ağırlığı.
  • mask_weight (float, isteğe bağlı, varsayılan 5.0) — Panoptik segmentasyon kaybında odak kaybının göreli ağırlığı.
  • dice_weight (float, isteğe bağlı, varsayılan 5.0) — Panoptik segmentasyon kaybında dice kaybının göreli ağırlığı.
  • train_num_points (int, isteğe bağlı, varsayılan 12544) — Eğitim sırasında mask kaybı hesabı için örneklenen nokta sayısı.
  • oversample_ratio (float, isteğe bağlı, varsayılan 3.0) — Maske eğitimi için nokta örneklemesinde kullanılan aşırı örneklem oranı.
  • importance_sample_ratio (float, isteğe bağlı, varsayılan 0.75) — Eğitim sırasında önem değerine göre örnek alınacak noktaların oranı.
  • num_queries (int, isteğe bağlı, varsayılan 200) — Transformer'daki nesne sorgularının sayısı.
  • num_register_tokens (int, isteğe bağlı, varsayılan 4) — Transformer girdisine eklenen öğrenilebilir register token sayısı.
  • intermediate_size (int, isteğe bağlı, varsayılan 4096) — MLP temsillerinin boyutu.
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], isteğe bağlı) — RoPE gömme yapılandırma parametrelerini içeren sözlük. Sözlük, rope_theta için bir değer ve daha uzun max_position_embeddings ile RoPE kullanmak istiyorsanız ölçekleme için kullanılan isteğe bağlı parametreleri içermelidir.
  • query_bias (bool, isteğe bağlı, varsayılan True) — Sorgu projeksiyonunda sapma (bias) kullanılıp kullanılmayacağı.
  • key_bias (bool, isteğe bağlı, varsayılan False) — Anahtar projeksiyonunda sapma (bias) kullanılıp kullanılmayacağı.
  • value_bias (bool, isteğe bağlı, varsayılan True) — Değer projeksiyonunda bias kullanılıp kullanılmayacağı.
  • proj_bias (bool, isteğe bağlı, varsayılan True) — Çıktı projeksiyonunda sapma (bias) kullanılıp kullanılmayacağı.
  • mlp_bias (bool, isteğe bağlı, varsayılan True) — MLP katmanlarındaki up_proj, down_proj ve gate_proj katmanlarında bias kullanılıp kullanılmayacağı.
  • use_gated_mlp (bool, isteğe bağlı, varsayılan False) — Gated MLP katmanlarının kullanılıp kullanılmayacağını belirtir.
  • pos_embed_shift (float, isteğe bağlı) — Konum gömme değerleri için kaydırma değeri.
  • pos_embed_jitter (float, isteğe bağlı) — Konum gömme değerleri için jitter değeri.
  • pos_embed_rescale (float, isteğe bağlı, varsayılan 2.0) — Konum gömme değerleri için yeniden ölçekleme değeri.

Bu, bir Eomt Dinov3Model yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Eomt Dinov3 modelinin örneklenmesi ve model mimarisinin tanımlanması için kullanılır. Varsayılan değerlerle bir yapılandırma örneklendiğinde, tue-mps/coco_panoptic_eomt_large_640_dinov3 modelinin yapılandırmasına benzer bir yapılandırma elde edilir.

Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.

EomtDinov3PreTrainedModel

sınıf transformers.EomtDinov3PreTrainedModel

< >

( config: PreTrainedConfig*inputs**kwargs )

Parametreler

  • config (PreTrainedConfig) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

forward

( *args**kwargs )

Noktalı bir yol için sahte bir değer (ör. torch.float32): öznitelik erişim zincirleri, çağrılar geçiş (pass-through) dekoratörleri gibi davranır, repr noktalı yoldur ve bir taban sınıf olarak kullanıldığında düz bir type tabanı yerine geçer (PEP 560 __mro_entries__), böylece gerçek alt sınıflar normal bir meta sınıfı korur ve inspect.signature sahtenin yerine gerçek __init__ değerlerini okur.

EomtDinov3ForUniversalSegmentation

sınıf transformers.EomtDinov3ForUniversalSegmentation

< >

( config: EomtDinov3Config )

Parametreler

  • config (EomtDinov3Config) — Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için from_pretrained() yöntemine bakın.

Örnek/semantik/panoptik segmentasyon için üstte başlık bulunan EoMT-DINOv3 modeli.

Bu model PreTrainedModel sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch torch.nn.Module alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

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)

Parametreler

  • pixel_values (torch.Tensor, şekli (batch_size, num_channels, image_size, image_size)) — Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri EomtImageProcessor kullanılarak elde edilebilir. Ayrıntılar için EomtImageProcessor.call() bölümüne bakın (processor_class, görüntü işleme için EomtImageProcessor kullanır).
  • mask_labels (list[torch.Tensor], isteğe bağlı) — modele verilecek, (num_labels, height, width) boyutunda mask etiketleri listesi
  • class_labels (list[torch.LongTensor], isteğe bağlı) — bir modele verilecek, (num_labels, height, width) biçiminde hedef sınıf etiketlerinin listesi. Bunlar, mask_labels etiketlerini tanımlar; örneğin class_labels[i][j] ise mask_labels[i][j] etiketi.
  • patch_offsets (list[torch.Tensor], isteğe bağlı) — Anlamsal segmentasyon için yamaların görüntü indeksini ve başlangıç ile bitiş konumlarını gösteren demetlerin listesi.

Dönüş değeri

EomtDinov3ForUniversalSegmentationOutput veya tuple(torch.Tensor)

EomtDinov3ForUniversalSegmentationOutput veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (EomtDinov3Config) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

EomtDinov3ForUniversalSegmentation sınıfının forward metodu, __call__ özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine Module örneğini çağırmak gerekir; çünkü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • loss (torch.Tensor, opsiyonel) — Etiketler mevcut olduğunda döndürülen hesaplanan kayıp.
  • class_queries_logits (torch.Tensor, isteğe bağlı) — Her sorgu için önerilen sınıfları temsil eden, (batch_size, num_queries, num_labels + 1) biçiminde bir tensör. + 1'in, null sınıfını dahil ettiğimiz için gerekli olduğunu unutmayın.
  • masks_queries_logits (torch.Tensor, isteğe bağlı) — Her sorgu için önerilen maskeleri temsil eden, (batch_size, num_queries, height, width) biçiminde bir tensör.
  • last_hidden_state (torch.Tensor, şekli (batch_size, num_channels, height, width)) — Son katmanın son gizli durumları (son özellik haritası).
  • hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (gömme çıktısı için bir tane + her aşamanın çıktısı için bir tane) içeren bir tuple, şekli (batch_size, sequence_length, hidden_size). Modelin tüm katmanlarının gizli durumları.
  • attentions (tuple(tuple(torch.Tensor)), opsiyonel, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — Her katman için bir adet tuple(torch.Tensor) içeren, (batch_size, num_heads, sequence_length, sequence_length) biçiminde bir tuple. Transformer decoder'dan Self ve Cross Attention ağırlıkları.
  • patch_offsets (list[torch.Tensor], isteğe bağlı) — semantik segmentasyon için yamaların görüntü indeksini ve başlangıç ile bitiş konumlarını gösteren demetlerin listesi.
Update on GitHub