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

이 모델은 2025-03-24에 HF papers에 게시되었으며, 2026-02-02에 Hugging Face Transformers에 기여되었습니다.

EoMT-DINOv3

SDPA

개요

EoMT-DINOv3 계열은 DINOv3로 사전 학습된 Vision Transformer를 사용하여 Encoder-only Mask Transformer 아키텍처를 확장합니다. 이번 업데이트는 실시간 애플리케이션에 EoMT를 매력적으로 만든 encoder-only 설계는 유지하면서 ADE20K와 COCO 벤치마크 전반에서 더 강력한 분할 품질을 제공합니다.

DINOv2 기반 모델과 비교할 때, DINOv3 변형 모델은 회전 위치 임베딩(rotary position embeddings), 선택적 게이트드 MLP 블록, 그리고 Meta AI의 최신 사전 학습 레시피를 활용합니다. 이러한 변경 사항은 DINOv3 model zoo에서 강조된 바와 같이, 의미론적, 인스턴스, 팬옵틱 세분화 작업 전반에서 측정 가능한 성능 향상을 가져옵니다.

원본 EoMT 아키텍처는 Tommie Kerssies, Niccolò Cavagnero, Alexander Hermans, Narges Norouzi, Giuseppe Averta, Bastian Leibe, Gijs Dubbelman, Daan de Geus가 발표한 CVPR 2025 하이라이트 논문 Your ViT is Secretly an Image Segmentation Model에서 소개되었습니다. DINOv3 업그레이드는 동일한 경량 세그멘테이션 헤드와 쿼리 기반 추론 전략을 유지하면서 인코더를 DINOv3 ViT 체크포인트로 교체합니다.

팁:

  • 설정에는 rope_theta와 use_gated_mlp와 같은 DINOv3 전용 옵션이 노출됩니다. dinov3-vitg14와 같은 대규모 DINOv3 백본은 use_gated_mlp=True를 기대합니다.
  • DINOv3 모델은 rotary position embeddings 덕분에 더 넓은 범위의 해상도에서 작동할 수 있습니다. 이미지 프로세서의 기본값은 여전히 정사각형 크롭이지만, AutoImageProcessor를 통해 사용자 정의 크기를 지정할 수 있습니다.
  • TU/e Mobile Perception Systems Lab에서 호스팅하는 사전 학습된 체크포인트는 upstream DINOv3 백본과 결합해야 하는 델타 가중치를 제공합니다. 공식 저장소의 변환 유틸리티에서 이 워크플로를 자세히 설명합니다.

이 모델은 nielsr님이 기여했습니다. 원본 코드는 여기에서 찾을 수 있습니다.

사용 예시

아래는 DINOv3 기반 EoMT 모델로 panoptic segmentation을 실행하는 최소 예시입니다. 동일한 image processor를 checkpoint만 교체하여 semantic segmentation 또는 instance segmentation에도 재사용할 수 있습니다.

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 decoder의 숨겨진 레이어 수.
  • num_attention_heads (int, 선택 사항, 기본값 16) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다.
  • hidden_act (str, 선택 사항, 기본값 gelu) — 디코더에서 사용되는 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어, "gelu", "relu", "silu" 등이 있습니다.
  • hidden_dropout_prob (Union[float, int], 선택 사항, 기본값 0.0) — 임베딩, 인코더, 풀러의 모든 완전 연결 계층에 적용되는 드롭아웃 확률입니다.
  • initializer_range (float, 선택 사항, 기본값 0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.
  • layer_norm_eps (float, 선택 사항, 기본값 1e-06) — 레이어 정규화 레이어에서 사용되는 epsilon 값입니다.
  • 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) — 패치 융합에 사용할 드롭 패스 비율입니다.
  • num_upscale_blocks (int, 선택 사항, 기본값 2) — 디코더나 분할 헤드에 사용되는 업샘플링 블록의 수입니다.
  • attention_dropout (Union[float, int], 선택 사항, 기본값 0.0) — Attention 확률에 적용할 dropout 비율입니다.
  • num_blocks (int, 선택 사항, 기본값 4) — 아키텍처의 특징 블록 또는 스테이지 수.
  • no_object_weight (float, 선택 사항, 기본값 0.1) — panoptic/instance segmentation에서 “no object” 클래스에 대한 손실 가중치입니다.
  • class_weight (float, 선택 사항, 기본값 2.0) — 헝가리안 매칭 비용에서 분류 오류의 상대적 가중치입니다.
  • mask_weight (float, 선택 사항, 기본값 5.0) — panoptic segmentation loss에서 focal loss의 상대적 가중치입니다.
  • dice_weight (float, 선택 사항, 기본값 5.0) — panoptic segmentation loss에서 dice loss의 상대적 가중치입니다.
  • 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) — transformer 입력에 추가되는 학습 가능한 register token의 수입니다.
  • intermediate_size (int, 선택 사항, 기본값 4096) — MLP 표현의 차원입니다.
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], 선택) — RoPE 임베딩의 구성 매개변수를 포함하는 사전입니다. 사전에는 rope_theta 값이 포함되어야 하며, 더 긴 max_position_embeddings로 RoPE를 사용하려는 경우 스케일링에 사용되는 매개변수를 선택적으로 포함할 수 있습니다.
  • query_bias (bool, 선택 사항, 기본값 True) — query projection에 bias를 사용할지 여부.
  • key_bias (bool, 선택 사항, 기본값 False) — 키 투영에 bias를 사용할지 여부.
  • value_bias (bool, 선택 사항, 기본값 True) — value projection에 bias를 사용할지 여부입니다.
  • proj_bias (bool, 선택 사항, 기본값 True) — 출력 투영에 bias를 사용할지 여부입니다.
  • mlp_bias (bool, 선택 사항, 기본값 True) — MLP 레이어의 up_proj, down_proj, gate_proj 레이어에 bias를 사용할지 여부.
  • use_gated_mlp (bool, 선택 사항, 기본값 False) — 게이트된 MLP 레이어를 사용할지 여부.
  • pos_embed_shift (float, 선택 사항) — 위치 임베딩의 시프트 값입니다.
  • pos_embed_jitter (float, 선택 사항) — 위치 임베딩에 사용할 jitter 값입니다.
  • pos_embed_rescale (float, 선택 사항, 기본값 2.0) — 위치 임베딩의 재스케일 값입니다.

이것은 Eomt Dinov3Model의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Eomt Dinov3 모델을 인스턴스화하고 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 tue-mps/coco_panoptic_eomt_large_640_dinov3와 유사한 설정이 생성됩니다.

Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.

EomtDinov3PreTrainedModel

class transformers.EomtDinov3PreTrainedModel

< >

( config: PreTrainedConfig*inputs**kwargs )

매개변수

  • config (PreTrainedConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

forward

( *args**kwargs )

점으로 구분된 경로(예: torch.float32)에 대한 mock 값: 속성 접근 체인, 호출은 pass-through 데코레이터처럼 동작하며, repr은 해당 점으로 구분된 경로입니다. 이를 베이스 클래스로 사용하면 plain-type 베이스로 대체됩니다(PEP 560 __mro_entries__). 따라서 실제 서브클래스는 일반적인 메타클래스를 유지하고, inspect.signature는 mock의 __init__가 아닌 실제 __init__를 읽습니다.

EomtDinov3ForUniversalSegmentation

class transformers.EomtDinov3ForUniversalSegmentation

< >

( config: EomtDinov3Config )

매개변수

  • config (EomtDinov3Config) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

인스턴스/시맨틱/팬옵틱 세분화를 위해 상단에 헤드가 있는 EoMT-DINOv3 모델.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 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, shape (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], 선택) — 의미 분할을 위한 패치의 이미지 인덱스 및 시작/끝 위치를 나타내는 튜플 목록.

반환값

EomtDinov3ForUniversalSegmentationOutput 또는 tuple(torch.Tensor)

EomtDinov3ForUniversalSegmentationOutput 또는 torch.Tensor의 튜플(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(EomtDinov3Config)과 입력에 따라 다양한 요소를 포함합니다.

EomtDinov3ForUniversalSegmentation의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • loss (torch.Tensor, 선택 사항) — 라벨이 존재할 때 반환되는 계산된 손실.
  • class_queries_logits (torch.Tensor, 선택 사항) — 각 쿼리에 대해 제안된 클래스를 나타내는 (batch_size, num_queries, num_labels + 1) 형태의 텐서입니다. + 1은 null 클래스를 포함하기 때문에 필요합니다.
  • masks_queries_logits (torch.Tensor, 선택 사항) — 각 쿼리에 대한 제안된 마스크를 나타내는 (batch_size, num_queries, height, width) 형태의 텐서.
  • last_hidden_state (torch.Tensor, shape (batch_size, num_channels, height, width)) — 마지막 레이어의 마지막 hidden states(최종 feature map).
  • hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(임베딩 출력 1개 + 각 단계의 출력 1개)로, shape는 (batch_size, sequence_length, hidden_size)입니다. 모델의 모든 레이어의 hidden-states입니다.
  • attentions (tuple(tuple(torch.Tensor)), 선택 사항, output_attentions=True가 전달되거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 tuple(torch.Tensor)의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다. Transformer 디코더의 Self Attention 및 Cross Attention 가중치입니다.
  • patch_offsets (list[torch.Tensor], 선택 사항) — 시맨틱 세분화를 위한 패치의 이미지 인덱스와 시작 및 끝 위치를 나타내는 튜플 목록.
Update on GitHub