Transformers documentation
EoMT-DINOv3
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
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_thetaveuse_gated_mlpgibi DINOv3'e özgü ayarları açığa çıkarır.dinov3-vitg14gibi büyük DINOv3 omurgalarıuse_gated_mlp=Truedeğ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
< source >( 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ılan1024) — Gizli temsillerin boyutu. - num_hidden_layers (
int, isteğe bağlı, varsayılan24) — Transformer çözücüdeki gizli katman sayısı. - num_attention_heads (
int, isteğe bağlı, varsayılan16) — Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı. - hidden_act (
str, isteğe bağlı, varsayılangelu) — Çö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ılan0.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ılan0.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ılan1e-06) — Katman normalizasyon katmanları tarafından kullanılan epsilon. - image_size (
Union[int, list[int], tuple[int, int]], isteğe bağlı, varsayılan640) — 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ılan16) — Her yamanın boyutu (çözünürlüğü). - num_channels (
int, isteğe bağlı, varsayılan3) — 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ılan0.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ılan0.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ılan2.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ılan5.0) — Panoptik segmentasyon kaybında odak kaybının göreli ağırlığı. - dice_weight (
float, isteğe bağlı, varsayılan5.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ılan4096) — 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_thetaiçin bir değer ve daha uzunmax_position_embeddingsile 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ılanTrue) — Sorgu projeksiyonunda sapma (bias) kullanılıp kullanılmayacağı. - key_bias (
bool, isteğe bağlı, varsayılanFalse) — Anahtar projeksiyonunda sapma (bias) kullanılıp kullanılmayacağı. - value_bias (
bool, isteğe bağlı, varsayılanTrue) — Değer projeksiyonunda bias kullanılıp kullanılmayacağı. - proj_bias (
bool, isteğe bağlı, varsayılanTrue) — Çıktı projeksiyonunda sapma (bias) kullanılıp kullanılmayacağı. - mlp_bias (
bool, isteğe bağlı, varsayılanTrue) — 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ılanFalse) — 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
< source >( 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.
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
< source >( 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
< source >( 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_labelsetiketlerini tanımlar; örneğinclass_labels[i][j]isemask_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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğunda döndürülür) — Her katman için bir adettuple(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.