# MaskFormer

Эта модель была представлена недавно, поэтому API не был протестирован в полной мере. В будущем могут потребоваться исправления некоторых ошибок или незначительных несовместимых изменений. Если вы заметили что-то странное, создайте [Github Issue](https://github.com/huggingface/transformers/issues/new?assignees=&labels=&template=bug-report.md&title).

## Обзор

The MaskFormer model was proposed in [Per-Pixel Classification is Not All You Need for Semantic Segmentation](https://huggingface.co/papers/2107.06278) by Bowen Cheng, Alexander G. Schwing, Alexander Kirillov. MaskFormer addresses semantic segmentation with a mask classification paradigm instead of performing classic pixel-level classification.

Аннотация из статьи следующая:

*Современные подходы, как правило, формулируют семантическую сегментацию как задачу классификации для каждого пикселя, тогда как сегментация на уровне экземпляров решается с помощью альтернативной классификации масок. Ключевое наблюдение: классификация масок достаточно универсальна, чтобы решать задачи семантической и сегментации на уровне экземпляров единым образом, используя одну и ту же модель, функцию потерь и процедуру обучения. Опираясь на это наблюдение, мы предлагаем MaskFormer — простую модель классификации масок, которая предсказывает набор бинарных масок, каждая из которых связана с одним глобальным предсказанием класса. В целом, предложенный метод на основе классификации масок упрощает ландшафт эффективных подходов к задачам семантической и паноптической сегментации и демонстрирует отличные эмпирические результаты. В частности, мы наблюдаем, что MaskFormer превосходит базовые методы классификации для каждого пикселя, когда количество классов велико. Наш метод на основе классификации масок превосходит как текущие передовые модели семантической (55,6 mIoU на ADE20K), так и паноптической сегментации (52,7 PQ на COCO).*

На рисунке ниже представлена архитектура MaskFormer. Источник — [оригинальная статья](https://huggingface.co/papers/2107.06278).

Эта модель была предоставлена [francesco](https://huggingface.co/francesco). Исходный код можно найти [здесь](https://github.com/facebookresearch/MaskFormer).

## Советы по использованию

- Декодер Transformer в MaskFormer идентичен декодеру в [DETR](detr). Во время обучения авторы DETR обнаружили, что использование вспомогательных потерь в декодере помогает модели, в частности, выводить правильное количество объектов каждого класса. Если установить параметр `use_auxiliary_loss` в [MaskFormerConfig](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerConfig) в значение `True`, то после каждого слоя декодера добавляются предсказательные полносвязные нейронные сети и венгерские потери (при этом FFN разделяют параметры).
- Если вы хотите обучать модель в распределённой среде на нескольких узлах, необходимо обновить функцию `get_num_masks` внутри класса `MaskFormerLoss` в файле `modeling_maskformer.py`. При обучении на нескольких узлах это значение должно быть установлено как среднее количество целевых масок по всем узлам, как показано в исходной реализации [здесь](https://github.com/facebookresearch/MaskFormer/blob/da3e60d85fdeedcb31476b5edd7d328826ce56cc/mask_former/modeling/criterion.py#L169).
- Можно использовать [MaskFormerImageProcessor](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerImageProcessor) для подготовки изображений для модели и необязательных целевых значений.
- Чтобы получить итоговую сегментацию, в зависимости от задачи можно вызвать [post_process_semantic_segmentation()](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerImageProcessor.post_process_semantic_segmentation) или [post_process_panoptic_segmentation()](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerImageProcessor.post_process_panoptic_segmentation). Обе задачи можно решить с помощью вывода [MaskFormerForInstanceSegmentation](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerForInstanceSegmentation); паноптическая сегментация принимает необязательный аргумент `label_ids_to_fuse` для объединения инстансов целевого объекта/объектов (например, неба).

## Ресурсы

- Все ноутбуки, демонстрирующие выполнение инференса, а также дообучение на собственных данных с помощью MaskFormer, можно найти [здесь](https://github.com/NielsRogge/Transformers-Tutorials/tree/master/MaskFormer).

## Специфические для MaskFormer выходные данные[[transformers.models.maskformer.modeling_maskformer.MaskFormerModelOutput]]

#### transformers.models.maskformer.modeling_maskformer.MaskFormerModelOutput[[transformers.models.maskformer.modeling_maskformer.MaskFormerModelOutput]]

```python
transformers.models.maskformer.modeling_maskformer.MaskFormerModelOutput(encoder_last_hidden_state: typing.Optional[torch.Tensor] = None, pixel_decoder_last_hidden_state: typing.Optional[torch.Tensor] = None, transformer_decoder_last_hidden_state: typing.Optional[torch.Tensor] = None, encoder_hidden_states: tuple[torch.Tensor] | None = None, pixel_decoder_hidden_states: tuple[torch.Tensor] | None = None, transformer_decoder_hidden_states: tuple[torch.Tensor] | None = None, hidden_states: tuple[torch.Tensor] | None = None, attentions: tuple[torch.Tensor] | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/modeling_maskformer.py#L136)

**Параметры:**

encoder_last_hidden_state (`torch.Tensor` формы `(batch_size, num_channels, height, width)`) : Последние скрытые состояния (финальная карта признаков) последней стадии модели-энкодера (backbone).

pixel_decoder_last_hidden_state (`torch.Tensor` формы `(batch_size, num_channels, height, width)`) : Последние скрытые состояния (финальная карта признаков) последней стадии модели пиксельного декодера (FPN).

transformer_decoder_last_hidden_state (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`) : Последние скрытые состояния (финальная карта признаков) последней стадии модели декодера трансформера.

encoder_hidden_states (`tuple(torch.Tensor)`, *необязательный*, возвращается, если передано `output_hidden_states=True` или если `config.output_hidden_states=True`) : Кортеж из `torch.Tensor` (один для вывода эмбеддингов + один для вывода каждого этапа) формы `(batch_size, num_channels, height, width)`. Скрытые состояния (также называемые картами признаков) модели-энкодера на выходе каждого этапа.

pixel_decoder_hidden_states (`tuple(torch.Tensor)`, *необязательный*, возвращается, если передано `output_hidden_states=True` или если `config.output_hidden_states=True`) : Кортеж из `torch.Tensor` (один для вывода эмбеддингов + один для вывода каждого этапа) формы `(batch_size, num_channels, height, width)`. Скрытые состояния (также называемые картами признаков) модели пиксельного декодера на выходе каждого этапа.

transformer_decoder_hidden_states (`tuple(torch.Tensor)`, *необязательный*, возвращается, если передано `output_hidden_states=True` или если `config.output_hidden_states=True`) : Кортеж из `torch.Tensor` (один для вывода эмбеддингов + один для вывода каждого этапа) формы `(batch_size, sequence_length, hidden_size)`. Скрытые состояния (также называемые картами признаков) декодера трансформера на выходе каждого этапа.

hidden_states `tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или когда `config.output_hidden_states=True`) : Кортеж `torch.Tensor`, содержащий `encoder_hidden_states`, `pixel_decoder_hidden_states` и `decoder_hidden_states`

hidden_states (`tuple[torch.Tensor]`, *необязательный*, возвращается при передаче `output_hidden_states=True` или когда `config.output_hidden_states=True`) : Кортеж из `torch.Tensor` (один для вывода эмбеддингов, если у модели есть слой эмбеддингов, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`. Скрытые состояния модели на выходе каждого слоя, а также необязательные начальные выводы эмбеддингов.

attentions (`tuple[torch.Tensor]`, *необязательный*, возвращается при передаче `output_attentions=True` или когда `config.output_attentions=True`) : Кортеж `torch.Tensor` (по одному для каждого слоя) формы `(batch_size, num_heads, sequence_length, sequence_length)`. Веса внимания после softmax-функции внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Класс для результатов работы [MaskFormerModel](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerModel). Этот класс возвращает все необходимые скрытые состояния для вычисления логитов.

#### transformers.models.maskformer.modeling_maskformer.MaskFormerForInstanceSegmentationOutput[[transformers.models.maskformer.modeling_maskformer.MaskFormerForInstanceSegmentationOutput]]

```python
transformers.models.maskformer.modeling_maskformer.MaskFormerForInstanceSegmentationOutput(loss: typing.Optional[torch.Tensor] = None, class_queries_logits: typing.Optional[torch.Tensor] = None, masks_queries_logits: typing.Optional[torch.Tensor] = None, auxiliary_logits: typing.Optional[torch.Tensor] = None, encoder_last_hidden_state: typing.Optional[torch.Tensor] = None, pixel_decoder_last_hidden_state: typing.Optional[torch.Tensor] = None, transformer_decoder_last_hidden_state: typing.Optional[torch.Tensor] = None, encoder_hidden_states: tuple[torch.Tensor] | None = None, pixel_decoder_hidden_states: tuple[torch.Tensor] | None = None, transformer_decoder_hidden_states: tuple[torch.Tensor] | None = None, hidden_states: tuple[torch.Tensor] | None = None, attentions: tuple[torch.Tensor] | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/modeling_maskformer.py#L182)

**Параметры:**

loss (`torch.Tensor`, *необязательный*) : Вычисленная функция потерь, возвращается при наличии меток.

class_queries_logits (`torch.Tensor`, *необязательный*) : тензор формы `(batch_size, num_queries, num_labels + 1)`, представляющий предложенные классы для каждого запроса. Обратите внимание, что `+ 1` необходимо, так как мы учитываем нулевой класс.

masks_queries_logits (`torch.Tensor`, *необязательный*) : тензор формы `(batch_size, num_queries, height, width)`, представляющий предложенные маски для каждого запроса.

auxiliary_logits (`Dict[str, torch.Tensor]`, *необязательный*, возвращается при `output_auxiliary_logits=True`) : Словарь, содержащий вспомогательные предсказания для каждого слоя декодера, когда включены вспомогательные потери.

encoder_last_hidden_state (`torch.Tensor` формы `(batch_size, num_channels, height, width)`) : Последние скрытые состояния (финальная карта признаков) последней стадии модели-энкодера (backbone).

pixel_decoder_last_hidden_state (`torch.Tensor` формы `(batch_size, num_channels, height, width)`) : Последние скрытые состояния (финальная карта признаков) последней стадии модели пиксельного декодера (FPN).

transformer_decoder_last_hidden_state (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`) : Последние скрытые состояния (финальная карта признаков) последней стадии модели декодера трансформера.

encoder_hidden_states (`tuple(torch.Tensor)`, *необязательный*, возвращается, если передано `output_hidden_states=True` или если `config.output_hidden_states=True`) : Кортеж из `torch.Tensor` (один для вывода эмбеддингов + один для вывода каждого этапа) формы `(batch_size, num_channels, height, width)`. Скрытые состояния (также называемые картами признаков) модели-энкодера на выходе каждого этапа.

pixel_decoder_hidden_states (`tuple(torch.Tensor)`, *необязательный*, возвращается, если передано `output_hidden_states=True` или если `config.output_hidden_states=True`) : Кортеж из `torch.Tensor` (один для вывода эмбеддингов + один для вывода каждого этапа) формы `(batch_size, num_channels, height, width)`. Скрытые состояния (также называемые картами признаков) модели пиксельного декодера на выходе каждого этапа.

transformer_decoder_hidden_states (`tuple(torch.Tensor)`, *необязательный*, возвращается, если передано `output_hidden_states=True` или если `config.output_hidden_states=True`) : Кортеж из `torch.Tensor` (один для вывода эмбеддингов + один для вывода каждого этапа) формы `(batch_size, sequence_length, hidden_size)`. Скрытые состояния декодера трансформера на выходе каждого этапа.

hidden_states `tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или когда `config.output_hidden_states=True`) : Кортеж `torch.Tensor`, содержащий `encoder_hidden_states`, `pixel_decoder_hidden_states` и `decoder_hidden_states`.

hidden_states (`tuple[torch.Tensor]`, *необязательный*, возвращается при передаче `output_hidden_states=True` или когда `config.output_hidden_states=True`) : Кортеж из `torch.Tensor` (один для вывода эмбеддингов, если у модели есть слой эмбеддингов, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`. Скрытые состояния модели на выходе каждого слоя, а также необязательные начальные выводы эмбеддингов.

attentions (`tuple[torch.Tensor]`, *необязательный*, возвращается при передаче `output_attentions=True` или когда `config.output_attentions=True`) : Кортеж `torch.Tensor` (по одному для каждого слоя) формы `(batch_size, num_heads, sequence_length, sequence_length)`. Веса внимания после softmax-функции внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Класс для выходов [MaskFormerForInstanceSegmentation](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerForInstanceSegmentation).

Этот вывод можно непосредственно передать в [post_process_semantic_segmentation()](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerImageProcessor.post_process_semantic_segmentation) или [post_process_instance_segmentation()](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerImageProcessor.post_process_instance_segmentation) или [post_process_panoptic_segmentation()](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerImageProcessor.post_process_panoptic_segmentation) в зависимости от задачи. Подробности об использовании см. в документации [`~MaskFormerImageProcessor].

## MaskFormerDetrConfig[[transformers.MaskFormerDetrConfig]]

#### transformers.MaskFormerDetrConfig[[transformers.MaskFormerDetrConfig]]

```python
transformers.MaskFormerDetrConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, is_encoder_decoder: bool = True, backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, num_channels: int = 3, num_queries: int = 100, encoder_layers: int = 6, encoder_ffn_dim: int = 2048, encoder_attention_heads: int = 8, decoder_layers: int = 6, decoder_ffn_dim: int = 2048, decoder_attention_heads: int = 8, encoder_layerdrop: float | int = 0.0, decoder_layerdrop: float | int = 0.0, activation_function: str = 'relu', d_model: int = 256, dropout: float | int = 0.1, attention_dropout: float | int = 0.0, activation_dropout: float | int = 0.0, init_std: float = 0.02, init_xavier_std: float = 1.0, auxiliary_loss: bool = False, position_embedding_type: str = 'sine', dilation: bool = False, class_cost: int = 1, bbox_cost: int = 5, giou_cost: int = 2, mask_loss_coefficient: int = 1, dice_loss_coefficient: int = 1, bbox_loss_coefficient: int = 5, giou_loss_coefficient: int = 2, eos_coefficient: float = 0.1)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/configuration_maskformer.py#L32)

**Параметры:**

is_encoder_decoder (`bool`, *необязательный*, по умолчанию `True`) : Используется ли модель в качестве энкодера/декодера.

backbone_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`, *необязательный*) : Конфигурация базовой модели.

num_channels (`int`, *необязательный*, по умолчанию `3`) : Количество входных каналов.

num_queries (`int`, *optional*, по умолчанию 100) : Количество запросов объектов, то есть слотов для обнаружения. Это максимальное число объектов, которые [ConditionalDetrModel](/docs/transformers/main/ru/model_doc/conditional_detr#transformers.ConditionalDetrModel) может обнаружить на одном изображении. Для COCO мы рекомендуем 100 запросов.

encoder_layers (`int`, *необязательный*, по умолчанию `6`) : Количество скрытых слоев в кодере Transformer. Если не задано, будет использовано то же значение, что и у `num_layers`.

encoder_ffn_dim (`int`, *optional*, по умолчанию `2048`) : Размерность «промежуточного» (часто называемого feed-forward) слоя в энкодере.

encoder_attention_heads (`int`, *необязательный*, по умолчанию `8`) : Количество головок внимания для каждого слоя внимания в кодере Transformer.

decoder_layers (`int`, *необязательный*, по умолчанию `6`) : Количество скрытых слоев в декодере Transformer. Если не задано, будет использовано то же значение, что и у `num_layers`.

decoder_ffn_dim (`int`, *необязательный*, по умолчанию `2048`) : Размерность «промежуточного» (часто называемого feed-forward) слоя в декодере.

decoder_attention_heads (`int`, *необязательный*, по умолчанию `8`) : Количество головок внимания для каждого слоя внимания в декодере Transformer.

encoder_layerdrop (`Union[float, int]`, *необязательный*, по умолчанию `0.0`) : Вероятность LayerDrop для энкодера. Подробнее см. в [статье о LayerDrop](see https://huggingface.co/papers/1909.11556).

decoder_layerdrop (`Union[float, int]`, *необязательный*, по умолчанию `0.0`) : Вероятность LayerDrop для декодера. Подробнее см. в [статье о LayerDrop](see https://huggingface.co/papers/1909.11556).

activation_function (`str`, *необязательный*, по умолчанию `relu`) : Нелинейная функция активации (функция или строка) в декодере. Например, `"gelu"`, `"relu"`, `"silu"` и т. д.

d_model (`int`, *необязательный*, по умолчанию `256`) : Размер слоев кодировщика и пулера.

dropout (`Union[float, int]`, *необязательный*, по умолчанию `0.1`) : Доля для всех слоёв dropout.

attention_dropout (`Union[float, int]`, *необязательный*, по умолчанию `0.0`) : Коэффициент dropout для вероятностей внимания.

activation_dropout (`Union[float, int]`, *необязательный*, по умолчанию `0.0`) : Коэффициент dropout для активаций внутри полносвязного слоя.

init_std (`float`, *необязательный*, по умолчанию `0.02`) : Стандартное отклонение truncated_normal_initializer для инициализации всех матриц весов.

init_xavier_std (`float`, *необязательный*, по умолчанию `1.0`) : Коэффициент масштабирования, используемый для инициализации кросс-внимания по методу Ксавье.

auxiliary_loss (`bool`, *необязательный*, по умолчанию `False`) : Использовать ли вспомогательные потери декодирования (потери на каждом слое декодера).

position_embedding_type (`str`, *необязательный*, по умолчанию `"sine"`) : Тип позиционных эмбеддингов, применяемых поверх признаков изображения. Одно из значений `"sine"` или `"learned"`.

dilation (`bool`, *необязательный*, по умолчанию `False`) : Заменять ли stride на dilation в последнем свёрточном блоке (DC5). Поддерживается только при `use_timm_backbone` = `True`.

class_cost (`int`, *optional*, по умолчанию `1`) : Относительный вес ошибки классификации в стоимости венгерского сопоставления.

bbox_cost (`int`, *optional*, по умолчанию `5`) : Относительный вес ошибки L1 для ограничивающих прямоугольников в стоимости венгерского сопоставления.

giou_cost (`int`, *optional*, по умолчанию `2`) : Относительный вес обобщённой функции потерь IoU в стоимости венгерского сопоставления.

mask_loss_coefficient (`int`, *optional*, по умолчанию `1`) : Относительный вес фокальной функции потерь в функции потерь паноптической сегментации.

dice_loss_coefficient (`int`, *optional*, по умолчанию `1`) : Относительный вес функции потерь dice в функции потерь паноптической сегментации.

bbox_loss_coefficient (`int`, *optional*, по умолчанию `5`) : Относительный вес потери L1 для ограничивающих прямоугольников в потере паноптической сегментации.

giou_loss_coefficient (`int`, *optional*, по умолчанию `2`) : Относительный вес обобщённой функции потерь IoU в функции потерь паноптической сегментации.

eos_coefficient (`float`, *необязательный*, по умолчанию `0.1`) : Относительный вес класса «нет объекта» в функции потерь обнаружения объектов.

Это класс конфигурации для хранения настроек модели MaskFormerModel. Он используется для создания модели Maskformer в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации модели [facebook/maskformer-swin-base-ade](https://huggingface.co/facebook/maskformer-swin-base-ade)

Объекты конфигурации наследуются от [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig) и могут использоваться для управления выводами модели. Подробнее см. в документации [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig).

Примеры:

```python
>>> from transformers import MaskFormerDetrConfig, MaskFormerDetrModel

>>> # Initializing a MASK_FORMER_DETR facebook/mask_former_detr-resnet-50 style configuration
>>> configuration = MaskFormerDetrConfig()

>>> # Initializing a model (with random weights) from the facebook/mask_former_detr-resnet-50 style configuration
>>> model = MaskFormerDetrModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## MaskFormerConfig[[transformers.MaskFormerConfig]]

#### transformers.MaskFormerConfig[[transformers.MaskFormerConfig]]

```python
transformers.MaskFormerConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, fpn_feature_size: int = 256, mask_feature_size: int = 256, no_object_weight: float = 0.1, use_auxiliary_loss: bool = False, backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, decoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, init_std: float = 0.02, init_xavier_std: float = 1.0, dice_weight: float = 1.0, cross_entropy_weight: float = 1.0, mask_weight: float = 20.0, output_auxiliary_logits: bool | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/configuration_maskformer.py#L126)

**Параметры:**

fpn_feature_size (`int`, *optional*, по умолчанию 256) : Размер признаков в Feature Pyramid Network.

mask_feature_size (`int`, *optional*, по умолчанию 256) : Размер признаков масок; это значение также используется для указания размера признаков Feature Pyramid Network.

no_object_weight (`float`, *необязательный*, по умолчанию `0.1`) : Относительный вес класса «нет объекта» в функции потерь обнаружения объектов.

use_auxiliary_loss (`bool`, *необязательный*, по умолчанию `False`) : Нужно ли вычислять потерю с использованием промежуточных предсказаний декодера трансформера.

backbone_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`, *необязательный*) : Конфигурация базовой модели.

decoder_config (`Dict`, *необязательный*) : конфигурация, передаваемая в модель декодера трансформера; если не задана, будет использована базовая конфигурация для `detr-resnet-50`.

init_std (`float`, *необязательный*, по умолчанию `0.02`) : Стандартное отклонение truncated_normal_initializer для инициализации всех матриц весов.

init_xavier_std (`float`, *необязательный*, по умолчанию `1.0`) : Коэффициент масштабирования, используемый для инициализации кросс-внимания по методу Ксавье.

dice_weight (`float`, *необязательный*, по умолчанию `1.0`) : Относительный вес функции потерь dice в функции потерь паноптической сегментации.

cross_entropy_weight (`float`, *необязательный*, по умолчанию 1.0) : Вес для функции потерь кросс-энтропии.

mask_weight (`float`, *необязательный*, по умолчанию `20.0`) : Относительный вес фокальной функции потерь в функции потерь паноптической сегментации.

output_auxiliary_logits (`bool`, *необязательный*) : Выводить ли модели `auxiliary_logits` или нет.

**Исключения:** ``ValueError``

- ``ValueError`` --  Выбрасывается, если выбранный тип модели-основы не входит в `["swin"]` или выбранный тип декодера не входит в `["detr"]`

Это класс конфигурации для хранения настроек модели MaskFormerModel. Он используется для создания модели Maskformer в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации модели [facebook/maskformer-swin-base-ade](https://huggingface.co/facebook/maskformer-swin-base-ade)

Объекты конфигурации наследуются от [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig) и могут использоваться для управления выводами модели. Подробнее см. в документации [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig).

Примеры:

```python
>>> from transformers import MaskFormerConfig, MaskFormerModel

>>> # Initializing a MaskFormer facebook/maskformer-swin-base-ade configuration
>>> configuration = MaskFormerConfig()

>>> # Initializing a model (with random weights) from the facebook/maskformer-swin-base-ade style configuration
>>> model = MaskFormerModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## MaskFormerImageProcessor[[transformers.MaskFormerImageProcessor]]

#### transformers.MaskFormerImageProcessor[[transformers.MaskFormerImageProcessor]]

```python
transformers.MaskFormerImageProcessor(**kwargs: *<class 'transformers.models.maskformer.image_processing_maskformer.MaskFormerImageProcessorKwargs'>)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/image_processing_maskformer.py#L257)

**Параметры:**

do_convert_rgb (`bool`, *kwargs*, *необязательный*) : Преобразовать ли изображение в RGB.

do_resize (`bool`, *kwargs*, *optional*, по умолчанию `True`) : Нужно ли изменять размер изображения.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*, по умолчанию `{'shortest_edge' : 800, 'longest_edge': 1333}`): Описывает максимальные размеры входных данных для модели.

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*, *необязательный*) : Указывает, нужно ли выравнивать изображение. Выравнивание выполняется либо до максимального размера в батче, либо до фиксированного квадратного размера для каждого изображения. Конкретная стратегия выравнивания зависит от модели.

pad_size (`SizeDict`, *kwargs*, *optional*) : Размер, до которого следует дополнить изображения. Должен быть больше любого размера изображения, переданного для предобработки. Если `pad_size` не указан, изображения будут дополнены до наибольшей высоты и ширины в батче.

do_center_crop (`bool`, *kwargs*, *optional*) : Центрировать ли изображение при обрезке.

data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *необязательный*) : Поддерживается только `ChannelDimension.FIRST`. Добавлено для совместимости с медленными процессорами.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *optional*) : Формат размерности каналов для входного изображения. Если не задано, формат размерности каналов определяется по входному изображению. Может быть одним из: - `"channels_first"` или `ChannelDimension.FIRST`: изображение в формате (num_channels, height, width). - `"channels_last"` или `ChannelDimension.LAST`: изображение в формате (height, width, num_channels). - `"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*, *необязательный*) : Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора.

ignore_index (`int`, *kwargs*, *optional*) : Метка, назначаемая фоновым пикселям в сегментационных картах. Если указано, пиксели сегментационной карты, обозначенные как 0 (фон), будут заменены на `ignore_index`.

do_reduce_labels (`bool`, *kwargs*, *optional*, по умолчанию `False`) : Указывает, следует ли уменьшать все значения меток в сегментационных картах на 1. Обычно используется для наборов данных, где 0 обозначает фон, а сам фон не входит в состав всех классов набора данных (например, ADE20k). Метка фона будет заменена на `ignore_index`.

num_labels (`int`, *kwargs*, *optional*) : Количество меток в карте сегментации.

size_divisor (`int`, *kwargs*, *optional*, по умолчанию `32`) : некоторым базовым моделям требуются изображения, размеры которых делятся на определённое число. Если значение не передано, используется значение по умолчанию из Swin Transformer.

Создаёт процессор изображений MaskFormerImageProcessor.

#### preprocess[[transformers.MaskFormerImageProcessor.preprocess]]

```python
preprocess(images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']], segmentation_maps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None, instance_id_to_semantic_id: list[dict[int, int]] | dict[int, int] | None = None, **kwargs: *<class 'transformers.models.maskformer.image_processing_maskformer.MaskFormerImageProcessorKwargs'>)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/image_processing_maskformer.py#L380)

**Параметры:**

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 (`Union[list[dict[int, int]], dict[int, int]]`, *необязательный*) : Соответствие между идентификаторами экземпляров и семантическими идентификаторами.

do_convert_rgb (`bool`, *kwargs*, *необязательный*) : Преобразовать ли изображение в RGB.

do_resize (`bool`, *kwargs*, *необязательный*) : Указывает, нужно ли изменить размер изображения.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : Описывает максимальные размеры входных данных для модели.

default_to_square (`bool`, *kwargs*, *необязательный*) : Указывает, следует ли по умолчанию использовать квадратное изображение при изменении размера, если 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*) : Фильтр ресемплинга, используемый при изменении размера изображения. Может быть одним из значений перечисления `PILImageResampling`. Действует только при установке `do_resize` в `True`.

do_rescale (`bool`, *kwargs*, *необязательный*) : Нужно ли масштабировать изображение.

rescale_factor (`float`, *kwargs*, *optional*) : Коэффициент масштабирования для изменения размера изображения, если `do_rescale` установлен в `True`.

do_normalize (`bool`, *kwargs*, *необязательный*) : Нужно ли нормализовать изображение.

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*, *необязательный*) : Указывает, нужно ли выравнивать изображение. Выравнивание выполняется либо до максимального размера в батче, либо до фиксированного квадратного размера для каждого изображения. Конкретная стратегия выравнивания зависит от модели.

pad_size (`SizeDict`, *kwargs*, *optional*) : Размер, до которого следует дополнить изображения. Должен быть больше любого размера изображения, переданного для предобработки. Если `pad_size` не указан, изображения будут дополнены до наибольшей высоты и ширины в батче.

do_center_crop (`bool`, *kwargs*, *optional*) : Центрировать ли изображение при обрезке.

data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *необязательный*) : Поддерживается только `ChannelDimension.FIRST`. Добавлено для совместимости с медленными процессорами.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *optional*) : Формат размерности каналов для входного изображения. Если не задано, формат размерности каналов определяется по входному изображению. Может быть одним из: - `"channels_first"` или `ChannelDimension.FIRST`: изображение в формате (num_channels, height, width). - `"channels_last"` или `ChannelDimension.LAST`: изображение в формате (height, width, num_channels). - `"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*, *необязательный*) : Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора.

ignore_index (`int`, *kwargs*, *optional*) : Метка, назначаемая фоновым пикселям в сегментационных картах. Если указано, пиксели сегментационной карты, обозначенные как 0 (фон), будут заменены на `ignore_index`.

do_reduce_labels (`bool`, *kwargs*, *optional*, по умолчанию `False`) : Указывает, следует ли уменьшать все значения меток в сегментационных картах на 1. Обычно используется для наборов данных, где 0 обозначает фон, а сам фон не входит в состав всех классов набора данных (например, ADE20k). Метка фона будет заменена на `ignore_index`.

num_labels (`int`, *kwargs*, *optional*) : Количество меток в карте сегментации.

size_divisor (`int`, *kwargs*, *optional*, по умолчанию `32`) : некоторым базовым моделям требуются изображения, размеры которых делятся на определённое число. Если значение не передано, используется значение по умолчанию из Swin Transformer.

**Возвращает:** `~image_processing_base.BatchFeature`

- **data** (`dict`) — Словарь списков/массивов/тензоров, возвращаемый методом __call__ ('pixel_values' и т. д.).
- **tensor_type** (`Union[None, str, TensorType]`, *необязательный*) -- Здесь можно указать tensor_type, чтобы при инициализации преобразовать списки целых чисел в тензоры PyTorch/Numpy.

#### post_process_semantic_segmentation[[transformers.MaskFormerImageProcessor.post_process_semantic_segmentation]]

```python
post_process_semantic_segmentation(outputs, target_sizes: list[tuple[int, int]] | None = None, return_segmentation_scores: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/image_processing_maskformer.py#L546)

**Параметры:**

outputs ([MaskFormerForInstanceSegmentation](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerForInstanceSegmentation)) : Сырые выходные данные модели.

target_sizes (`list[tuple[int, int]]`, *необязательный*) : Список длины (batch_size), где каждый элемент списка (`tuple[int, int]]`) соответствует запрашиваемому конечному размеру (высота, ширина) каждого предсказания. Если оставить значение None, предсказания не будут изменены в размере.

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)` соответствует целевому размеру (если указан `target_sizes`).

Преобразует выход [MaskFormerForInstanceSegmentation](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerForInstanceSegmentation) в карты семантической сегментации. Поддерживается только PyTorch.

#### post_process_instance_segmentation[[transformers.MaskFormerImageProcessor.post_process_instance_segmentation]]

```python
post_process_instance_segmentation(outputs, threshold: float = 0.5, mask_threshold: float = 0.5, overlap_mask_area_threshold: float = 0.8, target_sizes: list[tuple[int, int]] | None = None, return_coco_annotation: bool | None = False, return_binary_maps: bool | None = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/image_processing_maskformer.py#L616)

**Параметры:**

outputs ([MaskFormerForInstanceSegmentation](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerForInstanceSegmentation)) : Сырые выходные данные модели.

threshold (`float`, *optional*, по умолчанию 0.5) : Порог вероятности для сохранения предсказанных масок экземпляров.

mask_threshold (`float`, *optional*, по умолчанию 0.5) : Порог, используемый при преобразовании предсказанных масок в бинарные значения.

overlap_mask_area_threshold (`float`, *optional*, по умолчанию 0.8) : Порог площади маски перекрытия для слияния или удаления мелких отсоединённых частей внутри каждой бинарной маски экземпляра.

target_sizes (`list[Tuple]`, *необязательный*) : Список длины (batch_size), где каждый элемент списка (`tuple[int, int]]`) соответствует запрашиваемому конечному размеру (высота, ширина) каждого предсказания. Если оставить None, предсказания не будут изменены в размере.

return_coco_annotation (`bool`, *необязательный*, по умолчанию `False`) : Если установлено в `True`, карты сегментации возвращаются в формате COCO run-length encoding (RLE).

return_binary_maps (`bool`, *необязательный*, по умолчанию `False`) : Если установлено в `True`, карты сегментации возвращаются в виде конкатенированного тензора бинарных карт сегментации (по одной на каждый обнаруженный экземпляр).

**Возвращает:** `list[Dict]`

Список словарей, по одному на изображение, где каждый словарь содержит два ключа:
- **segmentation** -- тензор формы `(height, width)`, где каждый пиксель представляет `segment_id`, либо `list[List]` с run-length encoding (RLE) карты сегментации, если return_coco_annotation установлен в `True`, либо тензор формы `(num_instances, height, width)`, если return_binary_maps установлен в `True`. Устанавливается в `None`, если маска не найдена выше `threshold`.
- **segments_info** -- словарь, содержащий дополнительную информацию о каждом сегменте.
  - **id** — целое число, представляющее `segment_id`.
  - **label_id** — целое число, представляющее идентификатор метки / семантического класса, соответствующий `segment_id`.
  - **score** -- Оценка предсказания для сегмента с `segment_id`.

Преобразует вывод `MaskFormerForInstanceSegmentationOutput` в предсказания сегментации объектов. Поддерживается только PyTorch. Если объекты могут пересекаться, установите return_coco_annotation или return_binary_maps в `True`, чтобы получить корректный результат сегментации.

#### post_process_panoptic_segmentation[[transformers.MaskFormerImageProcessor.post_process_panoptic_segmentation]]

```python
post_process_panoptic_segmentation(outputs, threshold: float = 0.5, mask_threshold: float = 0.5, overlap_mask_area_threshold: float = 0.8, label_ids_to_fuse: set[int] | None = None, target_sizes: list[tuple[int, int]] | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/image_processing_maskformer.py#L733)

**Параметры:**

outputs (`MaskFormerForInstanceSegmentationOutput`) : Выходные данные [MaskFormerForInstanceSegmentation](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerForInstanceSegmentation).

threshold (`float`, *optional*, по умолчанию 0.5) : Порог вероятности для сохранения предсказанных масок экземпляров.

mask_threshold (`float`, *optional*, по умолчанию 0.5) : Порог, используемый при преобразовании предсказанных масок в бинарные значения.

overlap_mask_area_threshold (`float`, *optional*, по умолчанию 0.8) : Порог площади маски перекрытия для слияния или удаления мелких отсоединённых частей внутри каждой бинарной маски экземпляра.

label_ids_to_fuse (`Set[int]`, *необязательный*) : Все экземпляры меток в этом состоянии будут объединены. Например, можно утверждать, что на изображении может быть только одно небо, но несколько человек, поэтому идентификатор метки «небо» будет включён в этот набор, а идентификатор метки «человек» — нет.

target_sizes (`list[Tuple]`, *необязательный*) : Список длины (batch_size), где каждый элемент списка (`tuple[int, int]]`) соответствует запрашиваемому конечному размеру (высота, ширина) каждого предсказания в батче. Если оставить None, предсказания не будут изменены в размере.

**Возвращает:** `list[Dict]`

Список словарей, по одному на изображение, где каждый словарь содержит два ключа:
- **segmentation** — тензор формы `(height, width)`, где каждый пиксель представляет `segment_id`, установлен в `None`, если маска не найдена выше `threshold`. Если указано `target_sizes`, сегментация масштабируется до соответствующего элемента `target_sizes`.
- **segments_info** -- словарь, содержащий дополнительную информацию о каждом сегменте.
  - **id** — целое число, представляющее `segment_id`.
  - **label_id** — целое число, представляющее идентификатор метки / семантического класса, соответствующий `segment_id`.
  - **was_fused** -- булево значение, `True`, если `label_id` содержалось в `label_ids_to_fuse`, иначе `False`. Несколько экземпляров одного и того же класса / метки были объединены и получили единый `segment_id`.
  - **score** -- Оценка предсказания для сегмента с `segment_id`.

Преобразует вывод `MaskFormerForInstanceSegmentationOutput` в предсказания паноптической сегментации изображений. Поддерживается только PyTorch.

## MaskFormerImageProcessorPil[[transformers.MaskFormerImageProcessorPil]]

#### transformers.MaskFormerImageProcessorPil[[transformers.MaskFormerImageProcessorPil]]

```python
transformers.MaskFormerImageProcessorPil(**kwargs: *<class 'transformers.models.maskformer.image_processing_pil_maskformer.MaskFormerImageProcessorKwargs'>)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/image_processing_pil_maskformer.py#L270)

**Параметры:**

do_convert_rgb (`bool`, *kwargs*, *необязательный*) : Преобразовать ли изображение в RGB.

do_resize (`bool`, *kwargs*, *optional*, по умолчанию `True`) : Нужно ли изменять размер изображения.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*, по умолчанию `{'shortest_edge' : 800, 'longest_edge': 1333}`): Описывает максимальные размеры входных данных для модели.

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*, *необязательный*) : Указывает, нужно ли выравнивать изображение. Выравнивание выполняется либо до максимального размера в батче, либо до фиксированного квадратного размера для каждого изображения. Конкретная стратегия выравнивания зависит от модели.

pad_size (`SizeDict`, *kwargs*, *optional*) : Размер, до которого следует дополнить изображения. Должен быть больше любого размера изображения, переданного для предобработки. Если `pad_size` не указан, изображения будут дополнены до наибольшей высоты и ширины в батче.

do_center_crop (`bool`, *kwargs*, *optional*) : Центрировать ли изображение при обрезке.

data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *необязательный*) : Поддерживается только `ChannelDimension.FIRST`. Добавлено для совместимости с медленными процессорами.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *optional*) : Формат размерности каналов для входного изображения. Если не задано, формат размерности каналов определяется по входному изображению. Может быть одним из: - `"channels_first"` или `ChannelDimension.FIRST`: изображение в формате (num_channels, height, width). - `"channels_last"` или `ChannelDimension.LAST`: изображение в формате (height, width, num_channels). - `"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*, *необязательный*) : Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора.

ignore_index (`int`, *kwargs*, *optional*) : Метка, назначаемая фоновым пикселям в сегментационных картах. Если указано, пиксели сегментационной карты, обозначенные как 0 (фон), будут заменены на `ignore_index`.

do_reduce_labels (`bool`, *kwargs*, *optional*, по умолчанию `False`) : Указывает, следует ли уменьшать все значения меток в сегментационных картах на 1. Обычно используется для наборов данных, где 0 обозначает фон, а сам фон не входит в состав всех классов набора данных (например, ADE20k). Метка фона будет заменена на `ignore_index`.

num_labels (`int`, *kwargs*, *optional*) : Количество меток в карте сегментации.

size_divisor (`int`, *kwargs*, *optional*, по умолчанию `32`) : некоторым базовым моделям требуются изображения, размеры которых делятся на определённое число. Если значение не передано, используется значение по умолчанию из Swin Transformer.

Создаёт процессор изображений MaskFormerImageProcessor.

#### preprocess[[transformers.MaskFormerImageProcessorPil.preprocess]]

```python
preprocess(images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']], segmentation_maps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None, instance_id_to_semantic_id: list[dict[int, int]] | dict[int, int] | None = None, **kwargs: *<class 'transformers.models.maskformer.image_processing_pil_maskformer.MaskFormerImageProcessorKwargs'>)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/image_processing_pil_maskformer.py#L438)

**Параметры:**

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 (`Union[list[dict[int, int]], dict[int, int]]`, *необязательный*) : Соответствие между идентификаторами экземпляров и семантическими идентификаторами.

do_convert_rgb (`bool`, *kwargs*, *необязательный*) : Преобразовать ли изображение в RGB.

do_resize (`bool`, *kwargs*, *необязательный*) : Указывает, нужно ли изменить размер изображения.

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`, *kwargs*) : Описывает максимальные размеры входных данных для модели.

default_to_square (`bool`, *kwargs*, *необязательный*) : Указывает, следует ли по умолчанию использовать квадратное изображение при изменении размера, если 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*) : Фильтр ресемплинга, используемый при изменении размера изображения. Может быть одним из значений перечисления `PILImageResampling`. Действует только при установке `do_resize` в `True`.

do_rescale (`bool`, *kwargs*, *необязательный*) : Нужно ли масштабировать изображение.

rescale_factor (`float`, *kwargs*, *optional*) : Коэффициент масштабирования для изменения размера изображения, если `do_rescale` установлен в `True`.

do_normalize (`bool`, *kwargs*, *необязательный*) : Нужно ли нормализовать изображение.

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*, *необязательный*) : Указывает, нужно ли выравнивать изображение. Выравнивание выполняется либо до максимального размера в батче, либо до фиксированного квадратного размера для каждого изображения. Конкретная стратегия выравнивания зависит от модели.

pad_size (`SizeDict`, *kwargs*, *optional*) : Размер, до которого следует дополнить изображения. Должен быть больше любого размера изображения, переданного для предобработки. Если `pad_size` не указан, изображения будут дополнены до наибольшей высоты и ширины в батче.

do_center_crop (`bool`, *kwargs*, *optional*) : Центрировать ли изображение при обрезке.

data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *необязательный*) : Поддерживается только `ChannelDimension.FIRST`. Добавлено для совместимости с медленными процессорами.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *optional*) : Формат размерности каналов для входного изображения. Если не задано, формат размерности каналов определяется по входному изображению. Может быть одним из: - `"channels_first"` или `ChannelDimension.FIRST`: изображение в формате (num_channels, height, width). - `"channels_last"` или `ChannelDimension.LAST`: изображение в формате (height, width, num_channels). - `"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*, *необязательный*) : Количество токенов изображения, используемых для каждого изображения во входных данных. Добавлено для обратной совместимости, но в будущих моделях это значение следует задавать как атрибут процессора.

ignore_index (`int`, *kwargs*, *optional*) : Метка, назначаемая фоновым пикселям в сегментационных картах. Если указано, пиксели сегментационной карты, обозначенные как 0 (фон), будут заменены на `ignore_index`.

do_reduce_labels (`bool`, *kwargs*, *optional*, по умолчанию `False`) : Указывает, следует ли уменьшать все значения меток в сегментационных картах на 1. Обычно используется для наборов данных, где 0 обозначает фон, а сам фон не входит в состав всех классов набора данных (например, ADE20k). Метка фона будет заменена на `ignore_index`.

num_labels (`int`, *kwargs*, *optional*) : Количество меток в карте сегментации.

size_divisor (`int`, *kwargs*, *optional*, по умолчанию `32`) : некоторым базовым моделям требуются изображения, размеры которых делятся на определённое число. Если значение не передано, используется значение по умолчанию из Swin Transformer.

**Возвращает:** `~image_processing_base.BatchFeature`

- **data** (`dict`) — Словарь списков/массивов/тензоров, возвращаемый методом __call__ ('pixel_values' и т. д.).
- **tensor_type** (`Union[None, str, TensorType]`, *необязательный*) -- Здесь можно указать tensor_type, чтобы при инициализации преобразовать списки целых чисел в тензоры PyTorch/Numpy.

#### post_process_semantic_segmentation[[transformers.MaskFormerImageProcessorPil.post_process_semantic_segmentation]]

```python
post_process_semantic_segmentation(outputs, target_sizes: list[tuple[int, int]] | None = None, return_segmentation_scores: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/image_processing_pil_maskformer.py#L583)

**Параметры:**

outputs ([MaskFormerForInstanceSegmentation](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerForInstanceSegmentation)) : Сырые выходные данные модели.

target_sizes (`list[tuple[int, int]]`, *необязательный*) : Список длины (batch_size), где каждый элемент списка (`tuple[int, int]]`) соответствует запрашиваемому конечному размеру (высота, ширина) каждого предсказания. Если оставить значение None, предсказания не будут изменены в размере.

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)` соответствует целевому размеру (если указан `target_sizes`).

Преобразует выход [MaskFormerForInstanceSegmentation](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerForInstanceSegmentation) в карты семантической сегментации. Поддерживается только PyTorch.

#### post_process_instance_segmentation[[transformers.MaskFormerImageProcessorPil.post_process_instance_segmentation]]

```python
post_process_instance_segmentation(outputs, threshold: float = 0.5, mask_threshold: float = 0.5, overlap_mask_area_threshold: float = 0.8, target_sizes: list[tuple[int, int]] | None = None, return_coco_annotation: bool | None = False, return_binary_maps: bool | None = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/image_processing_pil_maskformer.py#L653)

**Параметры:**

outputs ([MaskFormerForInstanceSegmentation](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerForInstanceSegmentation)) : Сырые выходные данные модели.

threshold (`float`, *optional*, по умолчанию 0.5) : Порог вероятности для сохранения предсказанных масок экземпляров.

mask_threshold (`float`, *optional*, по умолчанию 0.5) : Порог, используемый при преобразовании предсказанных масок в бинарные значения.

overlap_mask_area_threshold (`float`, *optional*, по умолчанию 0.8) : Порог площади маски перекрытия для слияния или удаления мелких отсоединённых частей внутри каждой бинарной маски экземпляра.

target_sizes (`list[Tuple]`, *необязательный*) : Список длины (batch_size), где каждый элемент списка (`tuple[int, int]]`) соответствует запрашиваемому конечному размеру (высота, ширина) каждого предсказания. Если оставить None, предсказания не будут изменены в размере.

return_coco_annotation (`bool`, *необязательный*, по умолчанию `False`) : Если установлено в `True`, карты сегментации возвращаются в формате COCO run-length encoding (RLE).

return_binary_maps (`bool`, *необязательный*, по умолчанию `False`) : Если установлено в `True`, карты сегментации возвращаются в виде конкатенированного тензора бинарных карт сегментации (по одной на каждый обнаруженный экземпляр).

**Возвращает:** `list[Dict]`

Список словарей, по одному на изображение, где каждый словарь содержит два ключа:
- **segmentation** -- тензор формы `(height, width)`, где каждый пиксель представляет `segment_id`, либо `list[List]` с run-length encoding (RLE) карты сегментации, если return_coco_annotation установлен в `True`, либо тензор формы `(num_instances, height, width)`, если return_binary_maps установлен в `True`. Устанавливается в `None`, если маска не найдена выше `threshold`.
- **segments_info** -- словарь, содержащий дополнительную информацию о каждом сегменте.
  - **id** — целое число, представляющее `segment_id`.
  - **label_id** — целое число, представляющее идентификатор метки / семантического класса, соответствующий `segment_id`.
  - **score** -- Оценка предсказания для сегмента с `segment_id`.

Преобразует вывод `MaskFormerForInstanceSegmentationOutput` в предсказания сегментации объектов. Поддерживается только PyTorch. Если объекты могут пересекаться, установите return_coco_annotation или return_binary_maps в `True`, чтобы получить корректный результат сегментации.

#### post_process_panoptic_segmentation[[transformers.MaskFormerImageProcessorPil.post_process_panoptic_segmentation]]

```python
post_process_panoptic_segmentation(outputs, threshold: float = 0.5, mask_threshold: float = 0.5, overlap_mask_area_threshold: float = 0.8, label_ids_to_fuse: set[int] | None = None, target_sizes: list[tuple[int, int]] | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/image_processing_pil_maskformer.py#L771)

**Параметры:**

outputs (`MaskFormerForInstanceSegmentationOutput`) : Выходные данные [MaskFormerForInstanceSegmentation](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerForInstanceSegmentation).

threshold (`float`, *optional*, по умолчанию 0.5) : Порог вероятности для сохранения предсказанных масок экземпляров.

mask_threshold (`float`, *optional*, по умолчанию 0.5) : Порог, используемый при преобразовании предсказанных масок в бинарные значения.

overlap_mask_area_threshold (`float`, *optional*, по умолчанию 0.8) : Порог площади маски перекрытия для слияния или удаления мелких отсоединённых частей внутри каждой бинарной маски экземпляра.

label_ids_to_fuse (`Set[int]`, *необязательный*) : Все экземпляры меток в этом состоянии будут объединены. Например, можно утверждать, что на изображении может быть только одно небо, но несколько человек, поэтому идентификатор метки «небо» будет включён в этот набор, а идентификатор метки «человек» — нет.

target_sizes (`list[Tuple]`, *необязательный*) : Список длины (batch_size), где каждый элемент списка (`tuple[int, int]]`) соответствует запрашиваемому конечному размеру (высота, ширина) каждого предсказания в батче. Если оставить None, предсказания не будут изменены в размере.

**Возвращает:** `list[Dict]`

Список словарей, по одному на изображение, где каждый словарь содержит два ключа:
- **segmentation** — тензор формы `(height, width)`, где каждый пиксель представляет `segment_id`, установлен в `None`, если маска не найдена выше `threshold`. Если указано `target_sizes`, сегментация масштабируется до соответствующего элемента `target_sizes`.
- **segments_info** -- словарь, содержащий дополнительную информацию о каждом сегменте.
  - **id** — целое число, представляющее `segment_id`.
  - **label_id** — целое число, представляющее идентификатор метки / семантического класса, соответствующий `segment_id`.
  - **was_fused** -- булево значение, `True`, если `label_id` содержалось в `label_ids_to_fuse`, иначе `False`. Несколько экземпляров одного и того же класса / метки были объединены и получили единый `segment_id`.
  - **score** -- Оценка предсказания для сегмента с `segment_id`.

Преобразует вывод `MaskFormerForInstanceSegmentationOutput` в предсказания паноптической сегментации изображений. Поддерживается только PyTorch.

## MaskFormerModel[[transformers.MaskFormerModel]]

#### transformers.MaskFormerModel[[transformers.MaskFormerModel]]

```python
transformers.MaskFormerModel(config: MaskFormerConfig)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/modeling_maskformer.py#L1748)

**Параметры:**

config ([MaskFormerConfig](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerConfig)) : Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Модель Maskformer без дополнительных модулей, выводящая «сырые» скрытые состояния.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel). Общие методы, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка головок и т. д.), описаны в документации родительского класса.

Эта модель также является подклассом [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

#### forward[[transformers.MaskFormerModel.forward]]

```python
forward(pixel_values: Tensor, pixel_mask: typing.Optional[torch.Tensor] = None, output_hidden_states: bool | None = None, output_attentions: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/modeling_maskformer.py#L1758)

**Параметры:**

pixel_values (`torch.Tensor` формы `(batch_size, num_channels, image_size, image_size)`) : Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью [MaskFormerImageProcessor](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerImageProcessor). Подробности см. в [MaskFormerImageProcessor.__call__()](/docs/transformers/main/ru/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) (`processor_class` использует [MaskFormerImageProcessor](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerImageProcessor) для обработки изображений).

pixel_mask (`torch.Tensor` формы `(batch_size, height, width)`, *необязательный*) : Маска для исключения пикселей отступов из внимания. Значения маски выбираются из `[0, 1]`:  - 1 для реальных пикселей (т. е. **не замаскированных**), - 0 для пикселей отступов (т. е. **замаскированных**).  [Что такое маски внимания?](../glossary#attention-mask)

output_hidden_states (`bool`, *необязательный*) : Нужно ли возвращать скрытые состояния всех слоёв. Подробнее о `hidden_states` в разделе возвращаемых тензоров.

output_attentions (`bool`, *необязательный*) : Нужно ли возвращать тензоры внимания всех слоев внимания. Подробнее см. `attentions` в разделе возвращаемых тензоров.

return_dict (`bool`, *необязательный*) : Нужно ли возвращать [ModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.utils.ModelOutput) вместо обычного кортежа.

**Возвращает:** [MaskFormerModelOutput](/docs/transformers/main/ru/model_doc/maskformer#transformers.models.maskformer.modeling_maskformer.MaskFormerModelOutput) или `tuple(torch.Tensor)`

Объект [MaskFormerModelOutput](/docs/transformers/main/ru/model_doc/maskformer#transformers.models.maskformer.modeling_maskformer.MaskFormerModelOutput) или кортеж из `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([MaskFormerConfig](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerConfig)) и входных данных.

Метод forward модели [MaskFormerModel](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerModel) переопределяет специальный метод `__call__`.

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

- **encoder_last_hidden_state** (`torch.Tensor` формы `(batch_size, num_channels, height, width)`) -- Состояния последнего скрытого слоя (финальная карта признаков) последней стадии модели-энкодера (backbone).
- **pixel_decoder_last_hidden_state** (`torch.Tensor` формы `(batch_size, num_channels, height, width)`) -- Последние скрытые состояния (конечная карта признаков) последней стадии модели пиксельного декодера (FPN).
- **transformer_decoder_last_hidden_state** (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`) -- Последние скрытые состояния (финальная карта признаков) последней стадии модели декодера трансформера.
- **encoder_hidden_states** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или при `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода эмбеддингов + один для вывода каждого этапа) формы `(batch_size, num_channels, height, width)`. Скрытые состояния (также называемые картами признаков) модели-энкодера на выходе каждого этапа.
- **pixel_decoder_hidden_states** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или при `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода эмбеддингов + один для вывода каждого этапа) формы `(batch_size, num_channels, height, width)`. Скрытые состояния (также называемые картами признаков) модели пиксельного декодера на выходе каждого этапа.
- **transformer_decoder_hidden_states** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или если `config.output_hidden_states=True`) — Кортеж `torch.Tensor` (один для вывода эмбеддингов + один для вывода каждого этапа) формы `(batch_size, sequence_length, hidden_size)`. Скрытые состояния (также называемые картами признаков) декодера трансформера на выходе каждого этапа. hidden_states `tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или если `config.output_hidden_states=True`): Кортеж `torch.Tensor`, содержащий `encoder_hidden_states`, `pixel_decoder_hidden_states` и `decoder_hidden_states`
- **hidden_states** (`tuple[torch.Tensor]`, *необязательный*, возвращается, если передано `output_hidden_states=True` или если `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`.

  Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
- **attentions** (`tuple[torch.Tensor]`, *необязательный*, возвращается при передаче `output_attentions=True` или когда `config.output_attentions=True`) -- Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, num_heads, sequence_length, sequence_length)`.

  Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Примеры:

```python
>>> from transformers import AutoImageProcessor, MaskFormerModel
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

>>> # load MaskFormer fine-tuned on ADE20k semantic segmentation
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/maskformer-swin-base-ade")
>>> model = MaskFormerModel.from_pretrained("facebook/maskformer-swin-base-ade")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> inputs = image_processor(image, return_tensors="pt")

>>> # forward pass
>>> outputs = model(**inputs)

>>> # the decoder of MaskFormer outputs hidden states of shape (batch_size, num_queries, hidden_size)
>>> transformer_decoder_last_hidden_state = outputs.transformer_decoder_last_hidden_state
>>> list(transformer_decoder_last_hidden_state.shape)
[1, 100, 256]
```

## MaskFormerForInstanceSegmentation[[transformers.MaskFormerForInstanceSegmentation]]

#### transformers.MaskFormerForInstanceSegmentation[[transformers.MaskFormerForInstanceSegmentation]]

```python
transformers.MaskFormerForInstanceSegmentation(config: MaskFormerConfig)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/modeling_maskformer.py#L1847)

#### forward[[transformers.MaskFormerForInstanceSegmentation.forward]]

```python
forward(pixel_values: Tensor, mask_labels: list[torch.Tensor] | None = None, class_labels: list[torch.Tensor] | None = None, pixel_mask: typing.Optional[torch.Tensor] = None, output_auxiliary_logits: bool | None = None, output_hidden_states: bool | None = None, output_attentions: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/maskformer/modeling_maskformer.py#L1929)

**Параметры:**

pixel_values (`torch.Tensor` формы `(batch_size, num_channels, image_size, image_size)`) : Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью [MaskFormerImageProcessor](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerImageProcessor). Подробности см. в [MaskFormerImageProcessor.__call__()](/docs/transformers/main/ru/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) (`processor_class` использует [MaskFormerImageProcessor](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerImageProcessor) для обработки изображений).

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]`.

pixel_mask (`torch.Tensor` формы `(batch_size, height, width)`, *необязательный*) : Маска для исключения пикселей отступов из внимания. Значения маски выбираются из `[0, 1]`:  - 1 для реальных пикселей (т. е. **не замаскированных**), - 0 для пикселей отступов (т. е. **замаскированных**).  [Что такое маски внимания?](../glossary#attention-mask)

output_auxiliary_logits (`bool`, *необязательный*) : Включает ли вывод вспомогательных логитов.

output_hidden_states (`bool`, *необязательный*) : Нужно ли возвращать скрытые состояния всех слоёв. Подробнее о `hidden_states` в разделе возвращаемых тензоров.

output_attentions (`bool`, *необязательный*) : Нужно ли возвращать тензоры внимания всех слоев внимания. Подробнее см. `attentions` в разделе возвращаемых тензоров.

return_dict (`bool`, *необязательный*) : Нужно ли возвращать [ModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.utils.ModelOutput) вместо обычного кортежа.

**Возвращает:** [MaskFormerForInstanceSegmentationOutput](/docs/transformers/main/ru/model_doc/maskformer#transformers.models.maskformer.modeling_maskformer.MaskFormerForInstanceSegmentationOutput) или `tuple(torch.Tensor)`

Объект [MaskFormerForInstanceSegmentationOutput](/docs/transformers/main/ru/model_doc/maskformer#transformers.models.maskformer.modeling_maskformer.MaskFormerForInstanceSegmentationOutput) или кортеж `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([MaskFormerConfig](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerConfig)) и входных данных.

Метод forward класса [MaskFormerForInstanceSegmentation](/docs/transformers/main/ru/model_doc/maskformer#transformers.MaskFormerForInstanceSegmentation) переопределяет специальный метод `__call__`.

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

- **loss** (`torch.Tensor`, *optional*) -- Вычисленная величина потерь, возвращается при наличии меток.
- **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)`, представляющий предложенные маски для каждого запроса.
- **auxiliary_logits** (`Dict[str, torch.Tensor]`, *необязательный*, возвращается при `output_auxiliary_logits=True`) -- Словарь, содержащий вспомогательные предсказания для каждого слоя декодера, если включены вспомогательные потери.
- **encoder_last_hidden_state** (`torch.Tensor` формы `(batch_size, num_channels, height, width)`) -- Состояния последнего скрытого слоя (финальная карта признаков) последней стадии модели-энкодера (backbone).
- **pixel_decoder_last_hidden_state** (`torch.Tensor` формы `(batch_size, num_channels, height, width)`) -- Последние скрытые состояния (конечная карта признаков) последней стадии модели пиксельного декодера (FPN).
- **transformer_decoder_last_hidden_state** (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`) -- Последние скрытые состояния (финальная карта признаков) последней стадии модели декодера трансформера.
- **encoder_hidden_states** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или при `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода эмбеддингов + один для вывода каждого этапа) формы `(batch_size, num_channels, height, width)`. Скрытые состояния (также называемые картами признаков) модели-энкодера на выходе каждого этапа.
- **pixel_decoder_hidden_states** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или при `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода эмбеддингов + один для вывода каждого этапа) формы `(batch_size, num_channels, height, width)`. Скрытые состояния (также называемые картами признаков) модели пиксельного декодера на выходе каждого этапа.
- **transformer_decoder_hidden_states** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или при `config.output_hidden_states=True`) — Кортеж `torch.Tensor` (один для вывода эмбеддингов + один для вывода каждого этапа) формы `(batch_size, sequence_length, hidden_size)`. Скрытые состояния декодера трансформера на выходе каждого этапа. hidden_states `tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или при `config.output_hidden_states=True`): Кортеж `torch.Tensor`, содержащий `encoder_hidden_states`, `pixel_decoder_hidden_states` и `decoder_hidden_states`.
- **hidden_states** (`tuple[torch.Tensor]`, *необязательный*, возвращается, если передано `output_hidden_states=True` или если `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`.

  Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
- **attentions** (`tuple[torch.Tensor]`, *необязательный*, возвращается при передаче `output_attentions=True` или когда `config.output_attentions=True`) -- Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, num_heads, sequence_length, sequence_length)`.

  Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Примеры:

Пример семантической сегментации:

```python
>>> from transformers import AutoImageProcessor, MaskFormerForInstanceSegmentation
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

>>> # load MaskFormer fine-tuned on ADE20k semantic segmentation
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/maskformer-swin-base-ade")
>>> model = MaskFormerForInstanceSegmentation.from_pretrained("facebook/maskformer-swin-base-ade")

>>> url = (
...     "https://huggingface.co/datasets/hf-internal-testing/fixtures_ade20k/resolve/main/ADE_val_00000001.jpg"
... )
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> inputs = image_processor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> # model predicts class_queries_logits of shape `(batch_size, num_queries)`
>>> # and masks_queries_logits of shape `(batch_size, num_queries, height, width)`
>>> class_queries_logits = outputs.class_queries_logits
>>> masks_queries_logits = outputs.masks_queries_logits

>>> # you can pass them to image_processor for postprocessing
>>> predicted_semantic_map = image_processor.post_process_semantic_segmentation(
...     outputs, target_sizes=[(image.height, image.width)]
... )[0]

>>> # we refer to the demo notebooks for visualization (see "Resources" section in the MaskFormer docs)
>>> list(predicted_semantic_map.shape)
[512, 683]
```

Пример паноптической сегментации:

```python
>>> from transformers import AutoImageProcessor, MaskFormerForInstanceSegmentation
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

>>> # load MaskFormer fine-tuned on COCO panoptic segmentation
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/maskformer-swin-base-coco")
>>> model = MaskFormerForInstanceSegmentation.from_pretrained("facebook/maskformer-swin-base-coco")

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> inputs = image_processor(images=image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> # model predicts class_queries_logits of shape `(batch_size, num_queries)`
>>> # and masks_queries_logits of shape `(batch_size, num_queries, height, width)`
>>> class_queries_logits = outputs.class_queries_logits
>>> masks_queries_logits = outputs.masks_queries_logits

>>> # you can pass them to image_processor for postprocessing
>>> result = image_processor.post_process_panoptic_segmentation(outputs, target_sizes=[(image.height, image.width)])[0]

>>> # we refer to the demo notebooks for visualization (see "Resources" section in the MaskFormer docs)
>>> predicted_panoptic_map = result["segmentation"]
>>> list(predicted_panoptic_map.shape)
[480, 640]
```

