Transformers documentation
EoMT-DINOv3
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
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_thetayuse_gated_mlp. Los backbones grandes de DINOv3, comodinov3-vitg14, esperanuse_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
< 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 )
Parámetros
- hidden_size (
int, opcional, valor predeterminado1024) — Dimensión de las representaciones ocultas. - num_hidden_layers (
int, opcional, valor predeterminado24) — Número de capas ocultas en el decodificador del Transformer. - num_attention_heads (
int, opcional, valor predeterminado16) — Número de cabezas de atención para cada capa de atención en el decodificador Transformer. - hidden_act (
str, opcional, valor predeterminadogelu) — 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 predeterminado0.0) — La probabilidad de dropout para todas las capas totalmente conectadas en las incrustaciones, el codificador y el pooler. - initializer_range (
float, opcional, valor predeterminado0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos. - layer_norm_eps (
float, opcional, valor predeterminado1e-06) — La epsilon utilizada por las capas de normalización de capa. - image_size (
Union[int, list[int], tuple[int, int]], opcional, valor predeterminado640) — El tamaño (resolución) de cada imagen. - patch_size (
Union[int, list[int], tuple[int, int]], opcional, valor predeterminado16) — El tamaño (resolución) de cada parche. - num_channels (
int, opcional, valor predeterminado3) — 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 predeterminado0.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 predeterminado0.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 predeterminado2.0) — Peso relativo del error de clasificación en el coste de correspondencia húngara. - mask_weight (
float, opcional, valor predeterminado5.0) — Peso relativo de la pérdida focal en la pérdida de segmentación panóptica. - dice_weight (
float, opcional, valor predeterminado5.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 predeterminado4096) — 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 pararope_thetay, opcionalmente, parámetros utilizados para el escalado en caso de que desee usar RoPE conmax_position_embeddingsmás largos. - query_bias (
bool, opcional, valor predeterminadoTrue) — Si se debe usar sesgo en la proyección de consulta. - key_bias (
bool, opcional, valor predeterminadoFalse) — Si se usa sesgo en la proyección de clave. - value_bias (
bool, opcional, valor predeterminadoTrue) — Si se usa sesgo en la proyección de valor. - proj_bias (
bool, opcional, valor predeterminadoTrue) — Si se usa sesgo en la proyección de salida. - mlp_bias (
bool, opcional, valor predeterminadoTrue) — 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 predeterminadoFalse) — 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
< source >( 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.
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
< source >( 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
< 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)
Parámetros
- pixel_values (
torch.Tensorde 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_classutiliza 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 demask_labels, p. ej. la etiqueta demask_labels[i][j]siclass_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
Moduledespué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+ 1es 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.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detuple(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.