Transformers documentation
EoMT-DINOv3
Эта модель была опубликована в HF papers 24.03.2025 и добавлена в Hugging Face Transformers 02.02.2026.
EoMT-DINOv3
Обзор
Семейство 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
< 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 )
Параметры
- 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
< source >( config: PreTrainedConfig*inputs**kwargs )
Параметры
- config (PreTrainedConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
Мок-значение для пути с точками (например, torch.float32): цепочки доступа к атрибутам и вызовы работают как пропускные декораторы, repr возвращает путь с точками, а использование в качестве базового класса подставляет обычный базовый класс type (PEP 560 __mro_entries__), благодаря чему реальные дочерние классы сохраняют обычный метакласс, а inspect.signature читает их реальный __init__, а не мок-объект.
EomtDinov3ForUniversalSegmentation
класс transformers.EomtDinov3ForUniversalSegmentation
< source >( config: EomtDinov3Config )
Параметры
- config (EomtDinov3Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель EoMT-DINOv3 с головой сверху для сегментации объектов/семантической/паноптической сегментации.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
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)
Параметры
- 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], необязательный) — список кортежей, указывающих индекс изображения и начальные и конечные позиции патчей для семантической сегментации.