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

Эта модель была опубликована в HF papers 24.03.2025 и добавлена в Hugging Face Transformers 02.02.2026.

EoMT-DINOv3

SDPA

Обзор

Семейство EoMT-DINOv3 расширяет архитектуру Encoder-only Mask Transformer с использованием Vision Transformers, предварительно обученных с помощью DINOv3. Обновление обеспечивает более высокое качество сегментации на бенчмарках ADE20K и COCO, сохраняя при этом дизайн только с энкодером, который делал EoMT привлекательным для приложений реального времени.

В отличие от моделей на основе DINOv2, варианты DINOv3 используют ротационные позиционные эмбеддинги, необязательные блоки gated MLP и новейшие рецепты предобучения от Meta AI. Эти изменения обеспечивают измеримый прирост производительности в задачах семантической, инстантной и паноптической сегментации, что подчёркивается в DINOv3 model zoo.

Исходная архитектура EoMT была представлена в статье Your ViT is Secretly an Image Segmentation Model (CVPR 2025 Highlight) авторов Tommie Kerssies, Niccolò Cavagnero, Alexander Hermans, Narges Norouzi, Giuseppe Averta, Bastian Leibe, Gijs Dubbelman и Daan de Geus. Обновление DINOv3 сохраняет тот же небольшой по размеру сегментационный модуль и стратегию инференса на основе запросов, заменяя энкодер на чекпоинты DINOv3 ViT.

Советы:

  • Конфигурация предоставляет параметры, специфичные для DINOv3, такие как rope_theta и use_gated_mlp. Крупные бэкбоны DINOv3, такие как dinov3-vitg14, ожидают use_gated_mlp=True.
  • Модели DINOv3 могут работать с более широким диапазоном разрешений благодаря вращательным позиционным эмбеддингам. Процессор изображений по-прежнему по умолчанию использует квадратные вырезы, но пользовательские размеры можно задать через AutoImageProcessor.
  • Предобученные контрольные точки, размещённые лабораторией Mobile Perception Systems Lab (TU/e), предоставляют дельта-веса, которые необходимо объединить с исходными бэкбоунами DINOv3. Утилиты конвертации в официальном репозитории подробно описывают этот рабочий процесс.

Эта модель была предоставлена пользователем nielsr. Исходный код можно найти здесь.

Примеры использования

Ниже приведён минимальный пример, показывающий, как выполнить паноптическую сегментацию с моделью EoMT, использующей DINOv3. Тот же самый процессор изображений можно переиспользовать для семантической или инстантной сегментации, просто заменив чекпоинт.

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.
  • num_attention_heads (int, необязательный, по умолчанию 16) — Количество головок внимания в каждом слое внимания декодера Transformer.
  • hidden_act (str, необязательный, по умолчанию gelu) — Нелинейная функция активации (функция или строка) в декодере. Например, "gelu", "relu", "silu" и т. д.
  • hidden_dropout_prob (Union[float, int], необязательный, по умолчанию 0.0) — Вероятность dropout для всех полносвязных слоёв в блоках эмбеддингов, энкодера и пуллера.
  • 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) — Коэффициент drop path для слияния патчей.
  • num_upscale_blocks (int, необязательный, по умолчанию 2) — Количество блоков апсемплинга, используемых в декодере или сегментационной голове.
  • attention_dropout (Union[float, int], необязательный, по умолчанию 0.0) — Коэффициент dropout для вероятностей внимания.
  • num_blocks (int, необязательный, по умолчанию 4) — Количество блоков признаков или стадий в архитектуре.
  • no_object_weight (float, необязательный, по умолчанию 0.1) — Вес потерь для класса «нет объекта» в панорамной/инстанс-сегментации.
  • class_weight (float, необязательный, по умолчанию 2.0) — Относительный вес ошибки классификации в стоимости венгерского сопоставления.
  • mask_weight (float, необязательный, по умолчанию 5.0) — Относительный вес фокальной функции потерь в функции потерь паноптической сегментации.
  • dice_weight (float, необязательный, по умолчанию 5.0) — Относительный вес функции потерь dice в функции потерь паноптической сегментации.
  • train_num_points (int, необязательный, по умолчанию 12544) — Количество точек, отбираемых для вычисления потерь маски во время обучения.
  • oversample_ratio (float, необязательный, по умолчанию 3.0) — Коэффициент оверсэмплинга, используемый при выборке точек для обучения маски.
  • importance_sample_ratio (float, необязательный, по умолчанию 0.75) — Доля точек, отбираемых на основе важности во время обучения.
  • num_queries (int, необязательный, по умолчанию 200) — Количество запросов объектов в Transformer.
  • num_register_tokens (int, необязательный, по умолчанию 4) — Количество обучаемых регистровых токенов, добавляемых на вход трансформера.
  • intermediate_size (int, необязательный, по умолчанию 4096) — Размерность представлений MLP.
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], необязательный) — Словарь, содержащий параметры конфигурации для эмбеддингов RoPE. Словарь должен содержать значение для rope_theta и, при необходимости, параметры, используемые для масштабирования, если вы хотите использовать RoPE с более длинными max_position_embeddings.
  • query_bias (bool, необязательный, по умолчанию True) — Использовать ли смещение (bias) в проекции запроса.
  • key_bias (bool, необязательный, по умолчанию False) — Использовать ли смещение в проекции ключей.
  • value_bias (bool, необязательный, по умолчанию True) — Использовать ли смещение (bias) в проекции значения.
  • proj_bias (bool, необязательный, по умолчанию True) — Использовать ли смещение (bias) в выходной проекции.
  • mlp_bias (bool, необязательный, по умолчанию True) — Использовать ли смещение (bias) в слоях up_proj, down_proj и gate_proj внутри MLP-слоёв.
  • use_gated_mlp (bool, необязательный, по умолчанию False) — Использовать ли слои gated MLP.
  • pos_embed_shift (float, необязательный) — Значение сдвига для позиционных эмбеддингов.
  • pos_embed_jitter (float, необязательный) — Значение джиттера для позиционных эмбеддингов.
  • pos_embed_rescale (float, необязательный, по умолчанию 2.0) — Коэффициент масштабирования для позиционных эмбеддингов.

Это класс конфигурации для хранения конфигурации модели Eomt Dinov3Model. Он используется для создания модели Eomt Dinov3 в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации tue-mps/coco_panoptic_eomt_large_640_dinov3

Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.

EomtDinov3PreTrainedModel

класс transformers.EomtDinov3PreTrainedModel

< >

( config: PreTrainedConfig*inputs**kwargs )

Параметры

  • config (PreTrainedConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

( *args**kwargs )

Мок-значение для пути с точками (например, torch.float32): цепочки доступа к атрибутам и вызовы работают как пропускные декораторы, repr возвращает путь с точками, а использование в качестве базового класса подставляет обычный базовый класс type (PEP 560 __mro_entries__), благодаря чему реальные дочерние классы сохраняют обычный метакласс, а inspect.signature читает их реальный __init__, а не мок-объект.

EomtDinov3ForUniversalSegmentation

класс transformers.EomtDinov3ForUniversalSegmentation

< >

( config: EomtDinov3Config )

Параметры

  • config (EomtDinov3Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().

Модель EoMT-DINOv3 с головой сверху для сегментации объектов/семантической/паноптической сегментации.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации 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 формы (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) и входных данных.

Метод forward класса EomtDinov3ForUniversalSegmentation переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (torch.Tensor, необязательный) — вычисленная функция потерь, возвращается при наличии меток.
  • class_queries_logits (torch.Tensor, optional) — тензор формы (batch_size, num_queries, num_labels + 1), представляющий предложенные классы для каждого запроса. Обратите внимание, что + 1 необходимо, так как мы учитываем нулевой класс.
  • masks_queries_logits (torch.Tensor, необязательный) — тензор формы (batch_size, num_queries, height, width), представляющий предложенные маски для каждого запроса.
  • last_hidden_state (torch.Tensor формы (batch_size, num_channels, height, width)) — Последние скрытые состояния (финальная карта признаков) последнего слоя.
  • hidden_states (tuple(torch.Tensor), необязательный, возвращается при передаче output_hidden_states=True или при config.output_hidden_states=True) — Кортеж из torch.Tensor (один для вывода эмбеддингов + один для вывода каждого этапа) формы (batch_size, sequence_length, hidden_size). Скрытые состояния всех слоёв модели.
  • attentions (tuple(tuple(torch.Tensor)), optional, возвращается, если передано output_attentions=True или если config.output_attentions=True) — Кортеж tuple(torch.Tensor) (по одному для каждого слоя) формы (batch_size, num_heads, sequence_length, sequence_length). Веса Self и Cross Attention из декодера трансформера.
  • patch_offsets (list[torch.Tensor], необязательный) — список кортежей, указывающих индекс изображения и начальные и конечные позиции патчей для семантической сегментации.
Update on GitHub