Transformers documentation
EoMT
Эта модель была опубликована в HF papers 24.03.2025 и добавлена в Hugging Face Transformers 27.06.2025.
EoMT
Обзор
Модель The Encoder-only Mask Transformer (EoMT) была представлена в статье-хайтелайте CVPR 2025 Your ViT is Secretly an Image Segmentation Model, авторами которой являются Tommie Kerssies, Niccolò Cavagnero, Alexander Hermans, Narges Norouzi, Giuseppe Averta, Bastian Leibe, Gijs Dubbelman и Daan de Geus. EoMT показывает, что Vision Transformers способны эффективно выполнять сегментацию изображений без использования компонентов, специфичных для конкретной задачи.
Аннотация из статьи следующая:
Модели Vision Transformers (ViT) демонстрируют выдающуюся производительность и масштабируемость на различных задачах компьютерного зрения. Для применения одноуровневых ViT к сегментации изображений существующие методы используют свёрточный адаптер для генерации многоуровневых признаков, пиксельный декодер для их слияния и декодер Transformer, который использует объединённые признаки для формирования предсказаний. В данной статье мы показываем, что индуктивные смещения, вводимые этими специфичными для задачи компонентами, могут быть усвоены самим ViT при условии использования достаточно больших моделей и обширного предварительного обучения. На основе этих результатов мы предлагаем Encoder-only Mask Transformer (EoMT), который адаптирует базовую архитектуру ViT для выполнения сегментации изображений. При использовании моделей большого масштаба и предварительном обучении EoMT достигает точности сегментации, сопоставимой с точностью передовых моделей, использующих специфичные для задачи компоненты. При этом EoMT значительно быстрее этих методов благодаря своей архитектурной простоте, например, до 4 раз быстрее в случае ViT-L. В диапазоне различных размеров моделей EoMT демонстрирует оптимальный баланс между точностью сегментации и скоростью предсказания, что указывает на то, что вычислительные ресурсы эффективнее направлять на масштабирование самого ViT, а не на добавление архитектурной сложности.
Эта модель была предоставлена Yaswanth Gali. Исходный код можно найти здесь.
Информация об архитектуре
Модель EoMT использует в качестве базовой архитектуры Vision Transformer, предварительно обученный на DINOv2, с register tokens. EoMT упрощает конвейер сегментации, опираясь исключительно на энкодер и исключая необходимость в специфичных для задачи декодерах, которые обычно применялись в предыдущих подходах.
С архитектурной точки зрения EoMT вводит небольшой набор обучаемых запросов и лёгкий модуль предсказания маски. Эти запросы внедряются в последние блоки энкодера, что обеспечивает совместное внимание между патчами изображения и объектными запросами. Во время обучения применяется маскированное внимание, которое ограничивает каждый запрос так, чтобы он фокусировался на соответствующей ему области, — фактически имитируя кросс-внимание. Это ограничение постепенно снимается с помощью стратегии отжига маски, что позволяет осуществлять эффективный вывод без декодера без потери качества сегментации.

Модель поддерживает семантическую, инстанс- и паноптическую сегментацию с использованием единой архитектуры и постобработки, специфичной для каждой задачи.
Примеры использования
Используйте реализацию EoMT от Hugging Face для инференса с предобученными моделями.
Сегментация
Модель EoMT выполняет семантическую сегментацию с использованием скользящего окна при выводе. Входное изображение масштабируется так, чтобы его меньшая сторона соответствовала целевому размеру входа, после чего оно разбивается на перекрывающиеся фрагменты. Каждый фрагмент затем прогоняется через модель. После вывода предсказанные логиты из каждого фрагмента склеиваются обратно и масштабируются до исходного размера изображения, чтобы получить итовую маску сегментации.
Примечание:
Если вы хотите использовать пользовательский целевой размер для семантической сегментации, укажите его в следующем формате:
{"shortest_edge": 512}
Обратите внимание, чтоlongest_edgeздесь не указан — это сделано намеренно. Для семантической сегментации изображения обычно масштабируются так, чтобы кратчайшая сторона была больше или равна целевому размеру, поэтому longest_edge не требуется.
import matplotlib.pyplot as plt
import requests
import torch
from PIL import Image
from transformers import AutoImageProcessor, EomtForUniversalSegmentation
model_id = "tue-mps/ade20k_semantic_eomt_large_512"
processor = AutoImageProcessor.from_pretrained(model_id)
model = EomtForUniversalSegmentation.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",
)
with torch.inference_mode():
outputs = model(**inputs)
# Prepare the original image size in the format (height, width)
target_sizes = [(image.height, image.width)]
# Post-process the model outputs to get final segmentation prediction
preds = processor.post_process_semantic_segmentation(
outputs,
target_sizes=target_sizes,
)
# Visualize the segmentation mask
plt.imshow(preds[0])
plt.axis("off")
plt.title("Semantic Segmentation")
plt.show()Сегментация экземпляров
Модель EoMT выполняет сегментацию экземпляров с использованием дополненного вывода. Входное изображение масштабируется так, чтобы длина большей стороны соответствовала целевому размеру входа, а меньшая сторона дополняется нулями до квадрата. Полученные маски и класс-логиты объединяются на этапе постобработки (адаптированной из Mask2Former) для формирования единой карты сегментации экземпляров, а также метаданных сегментов, таких как идентификатор сегмента, метки классов и оценки уверенности.
Примечание:
Чтобы использовать пользовательский целевой размер, укажите размер в виде словаря в следующем формате:
{"shortest_edge": 512, "longest_edge": 512}
Для обоих видов сегментации — instance и panoptic — входные изображения будут масштабированы и дополнены до этого целевого размера.
import matplotlib.pyplot as plt
import requests
import torch
from PIL import Image
from transformers import AutoImageProcessor, EomtForUniversalSegmentation
model_id = "tue-mps/coco_instance_eomt_large_640"
processor = AutoImageProcessor.from_pretrained(model_id)
model = EomtForUniversalSegmentation.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",
)
with torch.inference_mode():
outputs = model(**inputs)
# Prepare the original image size in the format (height, width)
target_sizes = [(image.height, image.width)]
# Post-process the model outputs to get final segmentation prediction
preds = processor.post_process_instance_segmentation(
outputs,
target_sizes=target_sizes,
)
# Visualize the segmentation mask
plt.imshow(preds[0]["segmentation"])
plt.axis("off")
plt.title("Instance Segmentation")
plt.show()Паноптическая сегментация
Модель EoMT выполняет панорамную сегментацию, используя ту же стратегию дополнения при выводе, что и в случае сегментации экземпляров. После дополнения и нормализации модель предсказывает как классы объектов (экземпляры), так и классы фоновых областей (аморфные области). Полученные маски и логиты классов объединяются на этапе постобработки (адаптированной из Mask2Former) для формирования единой карты панорамной сегментации, а также метаданных сегментов, таких как идентификатор сегмента, метки классов и оценки уверенности.
import matplotlib.pyplot as plt
import requests
import torch
from PIL import Image
from transformers import AutoImageProcessor, EomtForUniversalSegmentation
model_id = "tue-mps/coco_panoptic_eomt_large_640"
processor = AutoImageProcessor.from_pretrained(model_id)
model = EomtForUniversalSegmentation.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",
)
with torch.inference_mode():
outputs = model(**inputs)
# Prepare the original image size in the format (height, width)
target_sizes = [(image.height, image.width)]
# Post-process the model outputs to get final segmentation prediction
preds = processor.post_process_panoptic_segmentation(
outputs,
target_sizes=target_sizes,
)
# Visualize the panoptic segmentation mask
plt.imshow(preds[0]["segmentation"])
plt.axis("off")
plt.title("Panoptic Segmentation")
plt.show()EomtImageProcessor
класс transformers.EomtImageProcessor
< source >( **kwargs: *<class 'transformers.models.eomt.image_processing_eomt.EomtImageProcessorKwargs'> )
Параметры
- do_convert_rgb (
bool, kwargs, optional) — Следует ли преобразовать изображение в RGB. - do_resize (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, нужно ли изменять размер изображения. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, по умолчанию{'shortest_edge' -- 640, 'longest_edge': 640}): Определяет максимальные размеры входных данных для модели. - default_to_square (
bool, kwargs, optional, по умолчаниюFalse) — Определяет, следует ли по умолчанию использовать квадратное изображение при изменении размера, если size задано как int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер выходного изображения после примененияcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, по умолчанию2) — Фильтр ресемплинга, используемый при изменении размера изображения. Может быть одним из значений перечисленияPILImageResampling. Влияет только в том случае, еслиdo_resizeустановлено вTrue. - do_rescale (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, следует ли выполнять рескейлинг изображения. - rescale_factor (
float, kwargs, optional, по умолчанию0.00392156862745098) — Коэффициент масштабирования, применяемый к изображению, еслиdo_rescaleустановлен вTrue. - do_normalize (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, следует ли нормализовать изображение. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, optional, по умолчанию[0.485, 0.456, 0.406]) — Среднее значение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, optional, по умолчанию[0.229, 0.224, 0.225]) — Стандартное отклонение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - do_pad (
bool, kwargs, optional, по умолчаниюFalse) — Указывает, нужно ли дополнять изображение. Дополнение выполняется либо до максимального размера в батче, либо до фиксированного квадратного размера для каждого изображения. Конкретная стратегия дополнения зависит от модели. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер в формате{"height": int, "width" int}, до которого следует дополнить изображения. Должен быть больше любого размера изображения, предоставленного для предобработки. Еслиpad_sizeне указан, изображения будут дополнены до наибольшей высоты и ширины в батче. Применяется только приdo_pad=True. - do_center_crop (
bool, kwargs, optional) — Выполнять ли центрированную обрезку изображения. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Поддерживается толькоChannelDimension.FIRST. Добавлено для совместимости с медленными процессорами. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, необязательный) — Формат размерности каналов для входного изображения. Если не задан, формат размерности каналов выводится из входного изображения. Может быть одним из:"channels_first"илиChannelDimension.FIRST: изображение в формате (num_channels, height, width)."channels_last"илиChannelDimension.LAST: изображение в формате (высота, ширина, число каналов)."none"илиChannelDimension.NONE: изображение в формате (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Устройство, на котором будут обрабатываться видео. Если не задано, устройство определяется на основе входных видео. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Возвращает стопку тензоров, если установлено значение'pt', иначе возвращает список тензоров. - disable_grouping (
bool, kwargs, optional) — Определяет, следует ли отключить группировку изображений по размеру для их индивидуальной обработки, а не пачками. Если значение равно None, оно будет установлено в True, если изображения находятся на CPU, и в False в противном случае. Этот выбор основан на эмпирических наблюдениях, описанных здесь: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, optional) — Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора. - do_split_image (
bool, kwargs, optional, по умолчаниюself.do_split_image) — Определяет, следует ли разбивать входные изображения на перекрывающиеся патчи для семантической сегментации. Если установлено значениеTrue, входные изображения будут разбиты на патчи размеромsize["shortest_edge"]с перекрытием между патчами. В противном случае входные изображения будут дополнены до целевого размера. - ignore_index (
int, kwargs, optional, по умолчаниюself.ignore_index) — Метка, назначаемая пикселям фона в сегментационных картах. Если указано, пиксели сегментационной карты, обозначенные как 0 (фон), будут заменены наignore_index.
Создаёт процессор изображений EomtImageProcessor.
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]segmentation_maps: list[torch.Tensor] | None = Noneinstance_id_to_semantic_id: dict[int, int] | None = None**kwargs: *<class 'transformers.models.eomt.image_processing_eomt.EomtImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
Параметры
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — Изображение для предобработки. Ожидается одно изображение или батч изображений со значениями пикселей в диапазоне от 0 до 255. Если передаются изображения со значениями пикселей в диапазоне от 0 до 1, установитеdo_rescale=False. - segmentation_maps (
ImageInput, необязательный) — Маски сегментации, которые необходимо предобработать для соответствующих изображений. - instance_id_to_semantic_id (
list[dict[int, int]]илиdict[int, int], необязательный) — Сопоставление между идентификаторами экземпляров объектов и идентификаторами классов. - do_convert_rgb (
bool, kwargs, optional) — Следует ли преобразовать изображение в RGB. - do_resize (
bool, kwargs, optional) — Указывает, нужно ли изменить размер изображения. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Описывает максимальные размеры входных данных для модели. - default_to_square (
bool, kwargs, optional) — Определяет, следует ли по умолчанию использовать квадратное изображение при изменении размера, если size является целым числом. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер выходного изображения после примененияcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Фильтр ресемплинга, используемый при изменении размера изображения. Может быть одним из значений перечисленияPILImageResampling. Влияет только в том случае, еслиdo_resizeустановлено вTrue. - do_rescale (
bool, kwargs, optional) — Нужно ли перемасштабировать изображение. - rescale_factor (
float, kwargs, optional) — Коэффициент масштабирования, применяемый к изображению, еслиdo_rescaleустановлен вTrue. - do_normalize (
bool, kwargs, optional) — Нужно ли нормализовать изображение. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, optional) — Среднее значение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, optional) — Стандартное отклонение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - do_pad (
bool, kwargs, optional) — Определяет, нужно ли выравнивать изображение. Выравнивание выполняется либо до максимального размера в батче, либо до фиксированного квадратного размера для каждого изображения. Точная стратегия выравнивания зависит от модели. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер в формате{"height": int, "width" int}, до которого следует дополнить изображения. Должен быть больше любого размера изображения, предоставленного для предобработки. Еслиpad_sizeне указан, изображения будут дополнены до наибольшей высоты и ширины в батче. Применяется только приdo_pad=True. - do_center_crop (
bool, kwargs, optional) — Выполнять ли центрированную обрезку изображения. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Поддерживается толькоChannelDimension.FIRST. Добавлено для совместимости с медленными процессорами. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, необязательный) — Формат размерности каналов для входного изображения. Если не задан, формат размерности каналов выводится из входного изображения. Может быть одним из:"channels_first"илиChannelDimension.FIRST: изображение в формате (num_channels, height, width)."channels_last"илиChannelDimension.LAST: изображение в формате (высота, ширина, число каналов)."none"илиChannelDimension.NONE: изображение в формате (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Устройство, на котором будут обрабатываться видео. Если не задано, устройство определяется на основе входных видео. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Возвращает стопку тензоров, если установлено значение'pt', иначе возвращает список тензоров. - disable_grouping (
bool, kwargs, optional) — Определяет, следует ли отключить группировку изображений по размеру для их индивидуальной обработки, а не пачками. Если значение равно None, оно будет установлено в True, если изображения находятся на CPU, и в False в противном случае. Этот выбор основан на эмпирических наблюдениях, описанных здесь: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, optional) — Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора. - do_split_image (
bool, kwargs, optional, по умолчаниюself.do_split_image) — Определяет, следует ли разбивать входные изображения на перекрывающиеся патчи для семантической сегментации. Если установлено значениеTrue, входные изображения будут разбиты на патчи размеромsize["shortest_edge"]с перекрытием между патчами. В противном случае входные изображения будут дополнены до целевого размера. - ignore_index (
int, kwargs, optional, по умолчаниюself.ignore_index) — Метка, назначаемая пикселям фона в сегментационных картах. Если указано, пиксели сегментационной карты, обозначенные как 0 (фон), будут заменены наignore_index.
Возвращает
~image_processing_base.BatchFeature
- data (
dict) — Словарь списков/массивов/тензоров, возвращаемый методом call (‘pixel_values’ и т. д.). - tensor_type (
Union[None, str, TensorType], необязательный) — Здесь можно указать tensor_type, чтобы при инициализации преобразовать списки целых чисел в тензоры PyTorch/Numpy.
post_process_semantic_segmentation
< source >( outputstarget_sizes: listsize: dict[str, int] | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]
Параметры
- outputs (EomtForUniversalSegmentation) — Сырые выходные данные модели.
- target_sizes (
list[tuple[int, int]]) — Список кортежей (tuple[int, int]) с целевыми размерами (высота, ширина) каждого изображения в пачке. - size (
dict[str, int], необязательный) — Размер, к которому интерполируются промежуточные маски. По умолчаниюself.size. - return_segmentation_scores (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли возвращать оценки сегментации вместе с картой сегментации. ЕслиTrue, каждый элемент возвращаемого списка представляет собойSemanticSegmentationPostProcessorOutputс полямиsegmentation(идентификаторы классов, форма(height, width)) иsegmentation_scores(форма(num_classes, height, width)).
Возвращает
list[torch.Tensor] или list[SemanticSegmentationPostProcessorOutput]
Если return_segmentation_scores=False (по умолчанию), возвращается список длины batch_size, где каждый элемент — это карта сегментации формы (height, width) с идентификаторами классов. Если return_segmentation_scores=True, возвращается список объектов SemanticSegmentationPostProcessorOutput с полями segmentation (идентификаторы классов, форма (height, width)) и segmentation_scores (форма (num_classes, height, width)). В обоих случаях (height, width) соответствует целевому размеру.
Преобразует выход EomtForUniversalSegmentation в карты семантической сегментации.
post_process_instance_segmentation
< source >( outputstarget_sizes: listthreshold: float = 0.8size: dict[str, int] | None = None )
Выполняет постобработку выходов модели в предсказания сегментации объектов.
post_process_panoptic_segmentation
< source >( outputstarget_sizes: listthreshold: float = 0.8mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8stuff_classes: list[int] | None = Nonesize: dict[str, int] | None = None )
Выполняет постобработку выходов модели для получения окончательного предсказания паноптической сегментации.
EomtImageProcessorPil
класс transformers.EomtImageProcessorPil
< source >( **kwargs: *<class 'transformers.models.eomt.image_processing_pil_eomt.EomtImageProcessorKwargs'> )
Параметры
- do_convert_rgb (
bool, kwargs, optional) — Следует ли преобразовать изображение в RGB. - do_resize (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, нужно ли изменять размер изображения. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, по умолчанию{'shortest_edge' -- 640, 'longest_edge': 640}): Определяет максимальные размеры входных данных для модели. - default_to_square (
bool, kwargs, optional, по умолчаниюFalse) — Определяет, следует ли по умолчанию использовать квадратное изображение при изменении размера, если size задано как int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер выходного изображения после примененияcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, по умолчанию2) — Фильтр ресемплинга, используемый при изменении размера изображения. Может быть одним из значений перечисленияPILImageResampling. Влияет только в том случае, еслиdo_resizeустановлено вTrue. - do_rescale (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, следует ли выполнять рескейлинг изображения. - rescale_factor (
float, kwargs, optional, по умолчанию0.00392156862745098) — Коэффициент масштабирования, применяемый к изображению, еслиdo_rescaleустановлен вTrue. - do_normalize (
bool, kwargs, optional, по умолчаниюTrue) — Указывает, следует ли нормализовать изображение. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, optional, по умолчанию[0.485, 0.456, 0.406]) — Среднее значение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, optional, по умолчанию[0.229, 0.224, 0.225]) — Стандартное отклонение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - do_pad (
bool, kwargs, optional, по умолчаниюFalse) — Указывает, нужно ли дополнять изображение. Дополнение выполняется либо до максимального размера в батче, либо до фиксированного квадратного размера для каждого изображения. Конкретная стратегия дополнения зависит от модели. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер в формате{"height": int, "width" int}, до которого следует дополнить изображения. Должен быть больше любого размера изображения, предоставленного для предобработки. Еслиpad_sizeне указан, изображения будут дополнены до наибольшей высоты и ширины в батче. Применяется только приdo_pad=True. - do_center_crop (
bool, kwargs, optional) — Выполнять ли центрированную обрезку изображения. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Поддерживается толькоChannelDimension.FIRST. Добавлено для совместимости с медленными процессорами. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, необязательный) — Формат размерности каналов для входного изображения. Если не задан, формат размерности каналов выводится из входного изображения. Может быть одним из:"channels_first"илиChannelDimension.FIRST: изображение в формате (num_channels, height, width)."channels_last"илиChannelDimension.LAST: изображение в формате (высота, ширина, число каналов)."none"илиChannelDimension.NONE: изображение в формате (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Устройство, на котором будут обрабатываться видео. Если не задано, устройство определяется на основе входных видео. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Возвращает стопку тензоров, если установлено значение'pt', иначе возвращает список тензоров. - disable_grouping (
bool, kwargs, optional) — Определяет, следует ли отключить группировку изображений по размеру для их индивидуальной обработки, а не пачками. Если значение равно None, оно будет установлено в True, если изображения находятся на CPU, и в False в противном случае. Этот выбор основан на эмпирических наблюдениях, описанных здесь: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, optional) — Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора. - do_split_image (
bool, kwargs, optional, по умолчаниюself.do_split_image) — Определяет, следует ли разбивать входные изображения на перекрывающиеся патчи для семантической сегментации. Если установлено значениеTrue, входные изображения будут разбиты на патчи размеромsize["shortest_edge"]с перекрытием между патчами. В противном случае входные изображения будут дополнены до целевого размера. - ignore_index (
int, kwargs, optional, по умолчаниюself.ignore_index) — Метка, назначаемая пикселям фона в сегментационных картах. Если указано, пиксели сегментационной карты, обозначенные как 0 (фон), будут заменены наignore_index.
Создаёт процессор изображений EomtImageProcessor.
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]segmentation_maps: list[torch.Tensor] | None = Noneinstance_id_to_semantic_id: dict[int, int] | None = None**kwargs: *<class 'transformers.models.eomt.image_processing_pil_eomt.EomtImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
Параметры
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — Изображение для предобработки. Ожидается одно изображение или батч изображений со значениями пикселей в диапазоне от 0 до 255. Если передаются изображения со значениями пикселей в диапазоне от 0 до 1, установитеdo_rescale=False. - segmentation_maps (
ImageInput, необязательный) — Маски сегментации, которые необходимо предобработать для соответствующих изображений. - instance_id_to_semantic_id (
list[dict[int, int]]илиdict[int, int], необязательный) — Сопоставление между идентификаторами экземпляров объектов и идентификаторами классов. - do_convert_rgb (
bool, kwargs, optional) — Следует ли преобразовать изображение в RGB. - do_resize (
bool, kwargs, optional) — Указывает, нужно ли изменить размер изображения. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Описывает максимальные размеры входных данных для модели. - default_to_square (
bool, kwargs, optional) — Определяет, следует ли по умолчанию использовать квадратное изображение при изменении размера, если size является целым числом. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер выходного изображения после примененияcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — Фильтр ресемплинга, используемый при изменении размера изображения. Может быть одним из значений перечисленияPILImageResampling. Влияет только в том случае, еслиdo_resizeустановлено вTrue. - do_rescale (
bool, kwargs, optional) — Нужно ли перемасштабировать изображение. - rescale_factor (
float, kwargs, optional) — Коэффициент масштабирования, применяемый к изображению, еслиdo_rescaleустановлен вTrue. - do_normalize (
bool, kwargs, optional) — Нужно ли нормализовать изображение. - image_mean (
Union[float, list[float], tuple[float, ...]], kwargs, optional) — Среднее значение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - image_std (
Union[float, list[float], tuple[float, ...]], kwargs, optional) — Стандартное отклонение изображения, используемое для нормализации. Влияет только в том случае, еслиdo_normalizeустановлено вTrue. - do_pad (
bool, kwargs, optional) — Определяет, нужно ли выравнивать изображение. Выравнивание выполняется либо до максимального размера в батче, либо до фиксированного квадратного размера для каждого изображения. Точная стратегия выравнивания зависит от модели. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — Размер в формате{"height": int, "width" int}, до которого следует дополнить изображения. Должен быть больше любого размера изображения, предоставленного для предобработки. Еслиpad_sizeне указан, изображения будут дополнены до наибольшей высоты и ширины в батче. Применяется только приdo_pad=True. - do_center_crop (
bool, kwargs, optional) — Выполнять ли центрированную обрезку изображения. - data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, optional) — Поддерживается толькоChannelDimension.FIRST. Добавлено для совместимости с медленными процессорами. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, необязательный) — Формат размерности каналов для входного изображения. Если не задан, формат размерности каналов выводится из входного изображения. Может быть одним из:"channels_first"илиChannelDimension.FIRST: изображение в формате (num_channels, height, width)."channels_last"илиChannelDimension.LAST: изображение в формате (высота, ширина, число каналов)."none"илиChannelDimension.NONE: изображение в формате (height, width).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — Устройство, на котором будут обрабатываться видео. Если не задано, устройство определяется на основе входных видео. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — Возвращает стопку тензоров, если установлено значение'pt', иначе возвращает список тензоров. - disable_grouping (
bool, kwargs, optional) — Определяет, следует ли отключить группировку изображений по размеру для их индивидуальной обработки, а не пачками. Если значение равно None, оно будет установлено в True, если изображения находятся на CPU, и в False в противном случае. Этот выбор основан на эмпирических наблюдениях, описанных здесь: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int, kwargs, optional) — Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора. - do_split_image (
bool, kwargs, optional, по умолчаниюself.do_split_image) — Определяет, следует ли разбивать входные изображения на перекрывающиеся патчи для семантической сегментации. Если установлено значениеTrue, входные изображения будут разбиты на патчи размеромsize["shortest_edge"]с перекрытием между патчами. В противном случае входные изображения будут дополнены до целевого размера. - ignore_index (
int, kwargs, optional, по умолчаниюself.ignore_index) — Метка, назначаемая пикселям фона в сегментационных картах. Если указано, пиксели сегментационной карты, обозначенные как 0 (фон), будут заменены наignore_index.
Возвращает
~image_processing_base.BatchFeature
- data (
dict) — Словарь списков/массивов/тензоров, возвращаемый методом call (‘pixel_values’ и т. д.). - tensor_type (
Union[None, str, TensorType], необязательный) — Здесь можно указать tensor_type, чтобы при инициализации преобразовать списки целых чисел в тензоры PyTorch/Numpy.
post_process_semantic_segmentation
< source >( outputstarget_sizes: listsize: dict[str, int] | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]
Параметры
- outputs (EomtForUniversalSegmentation) — Сырые выходные данные модели.
- target_sizes (
list[tuple[int, int]]) — Список кортежей (tuple[int, int]) с целевыми размерами (высота, ширина) каждого изображения в пачке. - size (
dict[str, int], необязательный) — Размер, к которому интерполируются промежуточные маски. По умолчаниюself.size. - return_segmentation_scores (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли возвращать оценки сегментации вместе с картой сегментации. ЕслиTrue, каждый элемент возвращаемого списка представляет собойSemanticSegmentationPostProcessorOutputс полямиsegmentation(идентификаторы классов, форма(height, width)) иsegmentation_scores(форма(num_classes, height, width)).
Возвращает
list[torch.Tensor] или list[SemanticSegmentationPostProcessorOutput]
Если return_segmentation_scores=False (по умолчанию), возвращается список длины batch_size, где каждый элемент — это карта сегментации формы (height, width) с идентификаторами классов. Если return_segmentation_scores=True, возвращается список объектов SemanticSegmentationPostProcessorOutput с полями segmentation (идентификаторы классов, форма (height, width)) и segmentation_scores (форма (num_classes, height, width)). В обоих случаях (height, width) соответствует целевому размеру.
Преобразует выход EomtForUniversalSegmentation в карты семантической сегментации.
post_process_instance_segmentation
< source >( outputstarget_sizes: listthreshold: float = 0.8size: dict[str, int] | None = None )
Выполняет постобработку выходов модели в предсказания сегментации объектов.
post_process_panoptic_segmentation
< source >( outputstarget_sizes: listthreshold: float = 0.8mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8stuff_classes: list[int] | None = Nonesize: dict[str, int] | None = None )
Выполняет постобработку выходов модели для получения окончательного предсказания паноптической сегментации.
EomtConfig
класс transformers.EomtConfig
< 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 = 3mlp_ratio: int = 4layerscale_value: float = 1.0drop_path_rate: float | int = 0.0num_upscale_blocks: int = 2attention_dropout: float | int = 0.0use_swiglu_ffn: bool = Falsenum_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 = 4 )
Параметры
- 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) — Количество входных каналов. - mlp_ratio (
int, необязательный, по умолчанию4) — Соотношение скрытого размера MLP к размеру эмбеддинга. - 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 для вероятностей внимания. - use_swiglu_ffn (
bool, необязательный, по умолчаниюFalse) — Использовать ли свёрточную нейронную сеть SwiGLU. - 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) — Количество обучаемых регистровых токенов, добавляемых на вход трансформера.
Это класс конфигурации для хранения конфигурации модели EomtModel. Он используется для создания модели Eomt в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации tue-mps/coco_panoptic_eomt_large_640
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
EomtForUniversalSegmentation
класс transformers.EomtForUniversalSegmentation
< source >( config: EomtConfig )
Параметры
- config (EomtConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель EoMT с головой сверху для сегментации экземпляров/семантической/паноптической сегментации.
Эта модель наследуется от 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'> ) → EomtForUniversalSegmentationOutput 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], необязательный) — список кортежей, указывающих индекс изображения и начальные и конечные позиции патчей для семантической сегментации.
Возвращает
EomtForUniversalSegmentationOutput или tuple(torch.Tensor)
EomtForUniversalSegmentationOutput или кортеж
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (EomtConfig) и входных данных.
Метод forward класса EomtForUniversalSegmentation переопределяет специальный метод __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], необязательный) — список кортежей, указывающих индекс изображения и начальные и конечные позиции патчей для семантической сегментации.