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

Model ini dipublikasikan di HF papers pada 2025-03-24 dan disumbangkan ke Hugging Face Transformers pada 2026-02-02.

EoMT-DINOv3

SDPA

Ikhtisar

Keluarga EoMT-DINOv3 memperluas arsitektur Encoder-only Mask Transformer dengan Vision Transformers yang dilatih sebelumnya menggunakan DINOv3. Pembaruan ini menghadirkan kualitas segmentasi yang lebih kuat di seluruh benchmark ADE20K dan COCO, sambil mempertahankan desain encoder-only yang membuat EoMT menarik untuk aplikasi real-time.

Dibandingkan dengan model berbasis DINOv2, varian DINOv3 memanfaatkan rotary position embeddings, blok gated MLP opsional, dan resep pre-training terbaru dari Meta AI. Perubahan-perubahan ini menghasilkan peningkatan kinerja yang terukur pada tugas-tugas segmentasi semantik, instance, dan panoptik, sebagaimana ditonjolkan dalam DINOv3 model zoo.

Arsitektur EoMT asli diperkenalkan dalam paper Highlight CVPR 2025 Your ViT is Secretly an Image Segmentation Model oleh Tommie Kerssies, Niccolò Cavagnero, Alexander Hermans, Narges Norouzi, Giuseppe Averta, Bastian Leibe, Gijs Dubbelman, dan Daan de Geus. Upgrade DINOv3 mempertahankan head segmentasi ringan dan strategi inferensi berbasis query yang sama, sambil mengganti encoder dengan checkpoint ViT DINOv3.

Tips:

  • Konfigurasi ini mengekspos pengaturan khusus DINOv3 seperti rope_theta dan use_gated_mlp. Backbone DINOv3 besar seperti dinov3-vitg14 mengharapkan use_gated_mlp=True.
  • Model DINOv3 dapat beroperasi pada rentang resolusi yang lebih luas berkat rotary position embeddings. Image processor tetap secara default menggunakan crop persegi, tetapi ukuran kustom dapat diberikan melalui AutoImageProcessor.
  • Checkpoint pre-trained yang dihosting oleh TU/e Mobile Perception Systems Lab menyediakan delta weights yang harus digabungkan dengan backbone DINOv3 upstream. Utilitas konversi di respositori resmi menjelaskan alur kerja ini secara detail.

Model ini disumbangkan oleh nielsr. Kode aslinya dapat ditemukan di sini.

Contoh penggunaan

Berikut adalah contoh minimal yang menunjukkan cara menjalankan segmentasi panoptik dengan model EoMT yang didukung oleh DINOv3. Prosesor gambar yang sama dapat digunakan kembali untuk segmentasi semantik atau instance dengan cukup mengganti checkpoint.

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

kelas 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 )

Parameter

  • hidden_size (int, opsional, default 1024) — Dimensi dari representasi tersembunyi.
  • num_hidden_layers (int, opsional, default 24) — Jumlah lapisan tersembunyi dalam decoder Transformer.
  • num_attention_heads (int, opsional, default 16) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer.
  • hidden_act (str, opsional, defaultnya gelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya, "gelu", "relu", "silu", dan sebagainya.
  • hidden_dropout_prob (Union[float, int], opsional, default 0.0) — Probabilitas dropout untuk semua lapisan fully connected di embeddings, encoder, dan pooler.
  • initializer_range (float, opsional, defaultnya 0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot.
  • layer_norm_eps (float, opsional, defaultnya 1e-06) — Epsilon yang digunakan oleh lapisan normalisasi lapisan.
  • image_size (Union[int, list[int], tuple[int, int]], opsional, defaultnya 640) — Ukuran (resolusi) setiap gambar.
  • patch_size (Union[int, list[int], tuple[int, int]], opsional, defaultnya 16) — Ukuran (resolusi) dari setiap patch.
  • num_channels (int, opsional, defaultnya 3) — Jumlah saluran input.
  • layerscale_value (float, opsional, default 1.0) — Nilai awal untuk parameter LayerScale.
  • drop_path_rate (Union[float, int], opsional, defaultnya 0.0) — Tingkat drop path untuk fusi patch.
  • num_upscale_blocks (int, opsional, default 2) — Jumlah blok upsampling yang digunakan dalam decoder atau head segmentasi.
  • attention_dropout (Union[float, int], opsional, default 0.0) — Rasio dropout untuk probabilitas perhatian.
  • num_blocks (int, opsional, default 4) — Jumlah blok fitur atau tahap dalam arsitektur.
  • no_object_weight (float, opsional, default 0.1) — Bobot loss untuk kelas “no object” dalam segmentasi panoptik/instans.
  • class_weight (float, opsional, default 2.0) — Bobot relatif dari kesalahan klasifikasi dalam biaya pencocokan Hungaria.
  • mask_weight (float, opsional, default 5.0) — Bobot relatif dari focal loss dalam loss segmentasi panoptik.
  • dice_weight (float, opsional, default 5.0) — Bobot relatif dari dice loss dalam loss segmentasi panoptik.
  • train_num_points (int, opsional, default 12544) — Jumlah titik yang diambil untuk menghitung mask loss selama pelatihan.
  • oversample_ratio (float, opsional, default 3.0) — Rasio oversampling yang digunakan dalam pengambilan sampel titik untuk pelatihan mask.
  • importance_sample_ratio (float, opsional, default 0.75) — Rasio titik yang akan disampel berdasarkan kepentingan selama pelatihan.
  • num_queries (int, opsional, default 200) — Jumlah kueri objek dalam Transformer.
  • num_register_tokens (int, opsional, default 4) — Jumlah token register yang dapat dipelajari dan ditambahkan ke input transformer.
  • intermediate_size (int, opsional, default 4096) — Dimensi representasi MLP.
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], opsional) — Kamus yang berisi parameter konfigurasi untuk embedding RoPE. Kamus tersebut harus berisi nilai untuk rope_theta dan secara opsional parameter yang digunakan untuk penskalaan jika Anda ingin menggunakan RoPE dengan max_position_embeddings yang lebih panjang.
  • query_bias (bool, opsional, default True) — Apakah akan menggunakan bias dalam proyeksi query.
  • key_bias (bool, opsional, default False) — Apakah akan menggunakan bias dalam proyeksi kunci.
  • value_bias (bool, opsional, defaultnya True) — Apakah akan menggunakan bias dalam proyeksi nilai.
  • proj_bias (bool, opsional, default True) — Apakah akan menggunakan bias pada proyeksi output.
  • mlp_bias (bool, opsional, default True) — Apakah akan menggunakan bias pada lapisan up_proj, down_proj, dan gate_proj di dalam lapisan MLP.
  • use_gated_mlp (bool, opsional, defaultnya False) — Apakah akan menggunakan lapisan gated MLP.
  • pos_embed_shift (float, opsional) — Nilai pergeseran untuk embedding posisi.
  • pos_embed_jitter (float, opsional) — Nilai jitter untuk position embeddings.
  • pos_embed_rescale (float, opsional, default 2.0) — Nilai rescale untuk position embeddings.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari Eomt Dinov3Model. Kelas ini digunakan untuk membuat instans model Eomt Dinov3 sesuai dengan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat instans konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari tue-mps/coco_panoptic_eomt_large_640_dinov3

Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.

EomtDinov3PreTrainedModel

kelas transformers.EomtDinov3PreTrainedModel

< >

( config: PreTrainedConfig*inputs**kwargs )

Parameter

  • config (PreTrainedConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

( *args**kwargs )

Nilai mock untuk jalur bertitik (mis. torch.float32): rantai akses atribut, pemanggilan berperilaku sebagai dekorator pass-through, repr adalah jalur bertitik, dan penggunaannya sebagai kelas dasar menggantikan kelas dasar type polos (PEP 560 __mro_entries__), sehingga subkelas asli tetap mempertahankan metakelas normal dan inspect.signature membaca __init__ asli mereka, bukan milik mock.

EomtDinov3ForUniversalSegmentation

kelas transformers.EomtDinov3ForUniversalSegmentation

< >

( config: EomtDinov3Config )

Parameter

  • config (EomtDinov3Config) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.

Model EoMT-DINOv3 dengan head di bagian atas untuk segmentasi instance/semantik/panoptik.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

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)

Parameter

  • pixel_values (torch.Tensor dengan bentuk (batch_size, num_channels, image_size, image_size)) — Tensor yang sesuai dengan gambar input. Nilai piksel dapat diperoleh menggunakan EomtImageProcessor. Lihat EomtImageProcessor.call() untuk detailnya (processor_class menggunakan EomtImageProcessor untuk memproses gambar).
  • mask_labels (list[torch.Tensor], opsional) — daftar label mask dengan bentuk (num_labels, height, width) untuk diberikan ke model
  • class_labels (list[torch.LongTensor], opsional) — daftar label kelas target dengan bentuk (num_labels, height, width) untuk diberikan ke model. Label ini mengidentifikasi label dari mask_labels, misalnya label dari mask_labels[i][j] jika class_labels[i][j].
  • patch_offsets (list[torch.Tensor], opsional) — daftar tuple yang menunjukkan indeks gambar serta posisi awal dan akhir patch untuk segmentasi semantik.

Mengembalikan

EomtDinov3ForUniversalSegmentationOutput atau tuple(torch.Tensor)

EomtDinov3ForUniversalSegmentationOutput atau tuple dari torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (EomtDinov3Config) dan input.

Metode forward dari EomtDinov3ForUniversalSegmentation menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • loss (torch.Tensor, opsional) — Loss yang dihitung, dikembalikan saat label ada.
  • class_queries_logits (torch.Tensor, opsional) — Tensor dengan bentuk (batch_size, num_queries, num_labels + 1) yang mewakili kelas yang diusulkan untuk setiap query. Perhatikan bahwa + 1 diperlukan karena kami mengintegrasikan kelas null.
  • masks_queries_logits (torch.Tensor, opsional) — Tensor dengan bentuk (batch_size, num_queries, height, width) yang merepresentasikan mask yang diusulkan untuk setiap query.
  • last_hidden_state (torch.Tensor dengan bentuk (batch_size, num_channels, height, width)) — State tersembunyi terakhir (peta fitur akhir) dari lapisan terakhir.
  • hidden_states (tuple(torch.Tensor), opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output embeddings + satu untuk output setiap tahap) dengan bentuk (batch_size, sequence_length, hidden_size). Hidden-states dari semua lapisan model.
  • attentions (tuple(tuple(torch.Tensor)), opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari tuple(torch.Tensor) (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length). Bobot Self dan Cross Attentions dari decoder transformer.
  • patch_offsets (list[torch.Tensor], opsional) — daftar tuple yang menunjukkan indeks gambar serta posisi awal dan akhir patch untuk segmentasi semantik.
Update on GitHub