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

Este modelo se publicó en HF papers el 24 de marzo de 2025 y se contribuyó a Hugging Face Transformers el 2 de febrero de 2026.

EoMT-DINOv3

SDPA

Resumen

La familia EoMT-DINOv3 extiende la arquitectura Encoder-only Mask Transformer con Vision Transformers preentrenados mediante DINOv3. Esta actualización ofrece una mayor calidad de segmentación en los benchmarks ADE20K y COCO, al tiempo que conserva el diseño de solo codificador que hizo atractivo a EoMT para aplicaciones en tiempo real.

En comparación con los modelos basados en DINOv2, las variantes de DINOv3 aprovechan los embeddings de posición rotatorios, los bloques MLP opcionales con compuertas y las últimas recetas de preentrenamiento de Meta AI. Estos cambios generan mejoras de rendimiento medibles en tareas de segmentación semántica, de instancias y panóptica, como se destaca en el DINOv3 model zoo.

La arquitectura original de EoMT se presentó en el artículo destacado de CVPR 2025 Your ViT is Secretly an Image Segmentation Model de Tommie Kerssies, Niccolò Cavagnero, Alexander Hermans, Narges Norouzi, Giuseppe Averta, Bastian Leibe, Gijs Dubbelman y Daan de Geus. La actualización a DINOv3 mantiene la misma cabeza de segmentación ligera y la estrategia de inferencia basada en consultas, pero reemplaza el codificador por puntos de control de ViT de DINOv3.

Consejos:

  • La configuración expone parámetros específicos de DINOv3, como rope_theta y use_gated_mlp. Los backbones grandes de DINOv3, como dinov3-vitg14, esperan use_gated_mlp=True.
  • Los modelos DINOv3 pueden operar en un rango más amplio de resoluciones gracias a los embeddings de posición rotatorios. El procesador de imágenes sigue usando recortes cuadrados por defecto, pero se pueden especificar tamaños personalizados a través de AutoImageProcessor.
  • Los puntos de control preentrenados alojados por el TU/e Mobile Perception Systems Lab proporcionan pesos delta que deben combinarse con los backbones de DINOv3 de origen. Las utilidades de conversión del repositorio oficial describen este flujo de trabajo en detalle.

Este modelo fue aportado por nielsr. El código original se puede encontrar aquí.

Ejemplos de uso

A continuación se muestra un ejemplo mínimo que ilustra cómo ejecutar la segmentación panóptica con un modelo EoMT basado en DINOv3. El mismo procesador de imágenes se puede reutilizar para la segmentación semántica o de instancias simplemente cambiando el punto de control.

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

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

Parámetros

  • hidden_size (int, opcional, valor predeterminado 1024) — Dimensión de las representaciones ocultas.
  • num_hidden_layers (int, opcional, valor predeterminado 24) — Número de capas ocultas en el decodificador del Transformer.
  • num_attention_heads (int, opcional, valor predeterminado 16) — Número de cabezas de atención para cada capa de atención en el decodificador Transformer.
  • hidden_act (str, opcional, valor predeterminado gelu) — La función de activación no lineal (función o cadena) en el decodificador. Por ejemplo, "gelu", "relu", "silu", etc.
  • hidden_dropout_prob (Union[float, int], opcional, valor predeterminado 0.0) — La probabilidad de dropout para todas las capas totalmente conectadas en las incrustaciones, el codificador y el pooler.
  • initializer_range (float, opcional, valor predeterminado 0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos.
  • layer_norm_eps (float, opcional, valor predeterminado 1e-06) — La epsilon utilizada por las capas de normalización de capa.
  • image_size (Union[int, list[int], tuple[int, int]], opcional, valor predeterminado 640) — El tamaño (resolución) de cada imagen.
  • patch_size (Union[int, list[int], tuple[int, int]], opcional, valor predeterminado 16) — El tamaño (resolución) de cada parche.
  • num_channels (int, opcional, valor predeterminado 3) — El número de canales de entrada.
  • layerscale_value (float, opcional, valor predeterminado 1.0) — Valor inicial para el parámetro LayerScale.
  • drop_path_rate (Union[float, int], opcional, valor predeterminado 0.0) — Tasa de drop path para la fusión de parches.
  • num_upscale_blocks (int, opcional, valor predeterminado 2) — Número de bloques de remuestreo ascendente utilizados en el decodificador o la cabeza de segmentación.
  • attention_dropout (Union[float, int], opcional, valor predeterminado 0.0) — La proporción de dropout para las probabilidades de atención.
  • num_blocks (int, opcional, valor predeterminado 4) — Número de bloques de características o etapas en la arquitectura.
  • no_object_weight (float, opcional, valor predeterminado 0.1) — Peso de la pérdida para la clase “no object” en la segmentación panoptica/instancia.
  • class_weight (float, opcional, valor predeterminado 2.0) — Peso relativo del error de clasificación en el coste de correspondencia húngara.
  • mask_weight (float, opcional, valor predeterminado 5.0) — Peso relativo de la pérdida focal en la pérdida de segmentación panóptica.
  • dice_weight (float, opcional, valor predeterminado 5.0) — Peso relativo de la pérdida dice en la pérdida de segmentación panóptica.
  • train_num_points (int, opcional, valor predeterminado 12544) — Número de puntos a muestrear para el cálculo de la pérdida de máscara durante el entrenamiento.
  • oversample_ratio (float, opcional, valor predeterminado 3.0) — Relación de sobremuestreo utilizada en el muestreo de puntos para el entrenamiento de máscaras.
  • importance_sample_ratio (float, opcional, valor predeterminado 0.75) — Proporción de puntos que se muestrean en función de la importancia durante el entrenamiento.
  • num_queries (int, opcional, valor predeterminado 200) — Número de consultas de objetos en el Transformer.
  • num_register_tokens (int, opcional, valor predeterminado 4) — Número de tokens de registro aprendibles añadidos a la entrada del transformer.
  • intermediate_size (int, opcional, valor predeterminado 4096) — Dimensión de las representaciones del MLP.
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], opcional) — Diccionario que contiene los parámetros de configuración para las incrustaciones RoPE. El diccionario debe contener un valor para rope_theta y, opcionalmente, parámetros utilizados para el escalado en caso de que desee usar RoPE con max_position_embeddings más largos.
  • query_bias (bool, opcional, valor predeterminado True) — Si se debe usar sesgo en la proyección de consulta.
  • key_bias (bool, opcional, valor predeterminado False) — Si se usa sesgo en la proyección de clave.
  • value_bias (bool, opcional, valor predeterminado True) — Si se usa sesgo en la proyección de valor.
  • proj_bias (bool, opcional, valor predeterminado True) — Si se usa sesgo en la proyección de salida.
  • mlp_bias (bool, opcional, valor predeterminado True) — Si se debe usar un sesgo en las capas up_proj, down_proj y gate_proj de las capas MLP.
  • use_gated_mlp (bool, opcional, valor predeterminado False) — Si se deben usar capas MLP con compuerta.
  • pos_embed_shift (float, opcional) — Valor de desplazamiento para las incrustaciones de posición.
  • pos_embed_jitter (float, opcional) — Valor de jitter para las incorporaciones de posición.
  • pos_embed_rescale (float, opcional, valor predeterminado 2.0) — Valor de reescalado para las incrustaciones de posición.

Esta es la clase de configuración para almacenar la configuración de un Eomt Dinov3Model. Se utiliza para instanciar un modelo Eomt Dinov3 según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de tue-mps/coco_panoptic_eomt_large_640_dinov3

Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.

EomtDinov3PreTrainedModel

clase transformers.EomtDinov3PreTrainedModel

< >

( config: PreTrainedConfig*inputs**kwargs )

Parámetros

  • config (PreTrainedConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

forward

( *args**kwargs )

Un valor simulado para una ruta con puntos (p. ej. torch.float32): las cadenas de acceso a atributos y las llamadas se comportan como decoradores de paso, repr es la ruta con puntos, y su uso como clase base sustituye una base de type simple (PEP 560 __mro_entries__), de modo que las subclases reales conservan un metaclass normal y inspect.signature lee su __init__ real en lugar del de un simulado.

EomtDinov3ForUniversalSegmentation

clase transformers.EomtDinov3ForUniversalSegmentation

< >

( config: EomtDinov3Config )

Parámetros

  • config (EomtDinov3Config) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.

El modelo EoMT-DINOv3 con cabeza superior para segmentación de instancias/semántica/panóptica.

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

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)

Parámetros

  • pixel_values (torch.Tensor de forma (batch_size, num_channels, image_size, image_size)) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizando EomtImageProcessor. Consulte EomtImageProcessor.call() para más detalles (processor_class utiliza EomtImageProcessor para procesar las imágenes).
  • mask_labels (list[torch.Tensor], opcional) — lista de etiquetas de máscara de forma (num_labels, height, width) para alimentar a un modelo
  • class_labels (list[torch.LongTensor], opcional) — lista de etiquetas de clase objetivo de forma (num_labels, height, width) para alimentar a un modelo. Identifican las etiquetas de mask_labels, p. ej. la etiqueta de mask_labels[i][j] si class_labels[i][j].
  • patch_offsets (list[torch.Tensor], opcional) — lista de tuplas que indican el índice de la imagen y las posiciones de inicio y fin de los parches para la segmentación semántica.

Devuelve

EomtDinov3ForUniversalSegmentationOutput o tuple(torch.Tensor)

Un EomtDinov3ForUniversalSegmentationOutput o una tupla de torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios elementos según la configuración (EomtDinov3Config) y las entradas.

El método forward de EomtDinov3ForUniversalSegmentation reemplaza el método especial __call__.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de Module después en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

  • loss (torch.Tensor, opcional) — La pérdida calculada, devuelta cuando hay etiquetas presentes.
  • class_queries_logits (torch.Tensor, opcional) — Un tensor de forma (batch_size, num_queries, num_labels + 1) que representa las clases propuestas para cada consulta. Tenga en cuenta que el + 1 es necesario porque incorporamos la clase nula.
  • masks_queries_logits (torch.Tensor, opcional) — Un tensor de forma (batch_size, num_queries, height, width) que representa las máscaras propuestas para cada consulta.
  • last_hidden_state (torch.Tensor de forma (batch_size, num_channels, height, width)) — Últimos estados ocultos (mapa de características final) de la última capa.
  • hidden_states (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para la salida de las incrustaciones + una para la salida de cada etapa) de forma (batch_size, sequence_length, hidden_size). Estados ocultos de todas las capas del modelo.
  • attentions (tuple(tuple(torch.Tensor)), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de tuple(torch.Tensor) (una por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length). Pesos de Self y Cross Attentions del decodificador del transformer.
  • patch_offsets (list[torch.Tensor], opcional) — lista de tuplas que indican el índice de la imagen y las posiciones de inicio y fin de los parches para la segmentación semántica.
Update on GitHub