# Mask2Former

## 개요

Mask2Former 모델은 Bowen Cheng, Ishan Misra, Alexander G. Schwing, Alexander Kirillov, Rohit Girdhar가 [Masked-attention Mask Transformer for Universal Image Segmentation](https://huggingface.co/papers/2112.01527)에서 제안했습니다. Mask2Former는 파노픽, 인스턴스 및 시맨틱 분할을 위한 통합 프레임워크이며, [MaskFormer](maskformer) 대비 성능과 효율성에서 상당한 개선을 제공합니다.

해당 논문의 초록은 다음과 같습니다:

*이미지 분할은 픽셀을 서로 다른 의미, 예를 들어 카테고리 또는 인스턴스 소속에 따라 그룹화합니다. 각 의미 선택은 하나의 작업을 정의합니다. 각 작업의 의미만 다를 뿐이지만, 현재 연구는 각 작업에 특화된 아키텍처를 설계하는 데 초점을 맞추고 있습니다. 우리는 모든 이미지 분할 작업(팬옵틱, 인스턴스 또는 시맨틱)을 처리할 수 있는 새로운 아키텍처인 Masked-attention Mask Transformer(Mask2Former)를 제시합니다. 그 핵심 구성 요소에는 예측된 마스크 영역 내에서 크로스 어텐션을 제한하여 로컬라이즈된 특징을 추출하는 마스크드 어텐션이 포함됩니다. 연구 노력을 최소 3배 이상 줄이는 것 외에도, Mask2Former는 4개의 인기 있는 데이터셋에서 최고의 특화 아키텍처를 상당한 격차로 능가합니다. 특히, Mask2Former는 팬옵틱 분할(COCO에서 57.8 PQ), 인스턴스 분할(COCO에서 50.1 AP), 시맨틱 분할(ADE20K에서 57.7 mIoU)에서 새로운 최첨단 성능을 달성했습니다.*

 Mask2Former 아키텍처. 원 논문에서 가져왔습니다.

이 모델은 [Shivalika Singh](https://huggingface.co/shivi)와 [Alara Dirik](https://huggingface.co/adirik)가 기여했습니다. 원본 코드는 [여기](https://github.com/facebookresearch/Mask2Former)에서 찾을 수 있습니다.

## 사용 팁

- Mask2Former는 [MaskFormer](maskformer)와 동일한 전처리 및 후처리 단계를 사용합니다. 모델에 사용할 이미지와 선택적 타겟을 준비하려면 [Mask2FormerImageProcessor](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerImageProcessor) 또는 [AutoImageProcessor](/docs/transformers/v5.23.0/ko/model_doc/auto#transformers.AutoImageProcessor)를 사용하세요.
- 작업에 따라 [post_process_semantic_segmentation()](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerImageProcessor.post_process_semantic_segmentation) 또는 [post_process_instance_segmentation()](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerImageProcessor.post_process_instance_segmentation) 또는 [post_process_panoptic_segmentation()](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerImageProcessor.post_process_panoptic_segmentation)를 호출하여 최종 분할을 얻을 수 있습니다. 세 가지 작업 모두 [Mask2FormerForUniversalSegmentation](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerForUniversalSegmentation)의 출력으로 해결할 수 있으며, panoptic segmentation은 대상 객체(예: 하늘)의 인스턴스를 함께 병합하기 위한 선택적 `label_ids_to_fuse` 인수를 지원합니다.

## 리소스

Mask2Former를 시작하는 데 도움이 되는 공식 Hugging Face 및 커뮤니티(🌎로 표시) 리소스 목록입니다.

- 커스텀 데이터에서 Mask2Former 추론 + 파인튜닝에 대한 데모 노트북은 [여기](https://github.com/NielsRogge/Transformers-Tutorials/tree/master/Mask2Former)에서 확인할 수 있습니다.

여기에 포함할 리소스를 제출하고 싶으시다면, Pull Request를 열어 주시면 검토하겠습니다. 기존 리소스와 중복되는 것이 아니라 새로운 것을 보여주는 것이 이상적입니다.

## Mask2FormerConfig[[transformers.Mask2FormerConfig]]

#### transformers.Mask2FormerConfig[[transformers.Mask2FormerConfig]]

```python
transformers.Mask2FormerConfig(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, backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, feature_size: int = 256, mask_feature_size: int = 256, hidden_dim: int = 256, encoder_feedforward_dim: int = 1024, activation_function: str = 'relu', encoder_layers: int = 6, decoder_layers: int = 10, num_attention_heads: int = 8, dropout: float | int = 0.0, dim_feedforward: int = 2048, pre_norm: bool = False, enforce_input_projection: bool = False, common_stride: int = 4, ignore_value: int = 255, num_queries: int = 100, no_object_weight: float = 0.1, class_weight: float = 2.0, mask_weight: float = 5.0, dice_weight: float = 5.0, train_num_points: int = 12544, oversample_ratio: float = 3.0, importance_sample_ratio: float = 0.75, init_std: float = 0.02, init_xavier_std: float = 1.0, use_auxiliary_loss: bool = True, feature_strides: list[int] | tuple[int, ...] = (4, 8, 16, 32), output_auxiliary_logits: bool | None = None)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mask2former/configuration_mask2former.py#L28)

**매개변수:**

backbone_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`, *선택*) : 백본 모델의 구성입니다.

feature_size (`int`, *선택 사항*, 기본값 256) : 결과 feature map의 features(채널) 수입니다.

mask_feature_size (`int`, *선택 사항*, 기본값 256) : 마스크의 특징 크기입니다. 이 값은 Feature Pyramid Network 특징의 크기를 지정하는 데에도 사용됩니다.

hidden_dim (`int`, *선택 사항*, 기본값 `256`) : 숨겨진 표현의 차원.

encoder_feedforward_dim (`int`, *선택 사항*, 기본값 1024) : 픽셀 디코더의 일부로 사용되는 deformable detr 인코더의 피드포워드 네트워크 차원.

activation_function (`str`, *선택 사항*, 기본값 `relu`) : 디코더의 비선형 활성화 함수(함수 또는 문자열). 예를 들어, `"gelu"`, `"relu"`, `"silu"` 등.

encoder_layers (`int`, *선택 사항*, 기본값 `6`) : Transformer 인코더의 숨겨진 레이어 수. 설정되지 않으면 `num_layers`와 동일한 값을 사용합니다.

decoder_layers (`int`, *선택 사항*, 기본값 `10`) : Transformer 디코더의 숨겨진 레이어 수. 설정되지 않으면 `num_layers`와 동일한 값을 사용합니다.

num_attention_heads (`int`, *선택 사항*, 기본값 `8`) : Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다.

dropout (`Union[float, int]`, *선택 사항*, 기본값 `0.0`) : 모든 dropout 레이어에 적용되는 비율입니다.

dim_feedforward (`int`, *선택 사항*, 기본값 2048) : transformer decoder의 feedforward network에서 사용되는 feature 차원입니다.

pre_norm (`bool`, *선택 사항*, 기본값 `False`) : transformer decoder에 pre-LayerNorm을 사용할지 여부.

enforce_input_projection (`bool`, *선택 사항*, 기본값 `False`) : Transformer decoder에서 입력 채널과 hidden dim이 동일하더라도 입력 projection 1x1 convolution을 추가할지 여부.

common_stride (`int`, *선택 사항*, 기본값 4) : 픽셀 디코더의 일부로 사용되는 FPN 레벨 수를 결정하는 데 사용되는 매개변수입니다.

ignore_value (`int`, *선택 사항*, 기본값 255) : 학습 중에 무시할 카테고리 ID.

num_queries (`int`, *선택 사항*, 기본값 100) : 디코더의 쿼리 수.

no_object_weight (`float`, *선택 사항*, 기본값 `0.1`) : 객체 감지 손실에서 no-object 클래스의 상대 분류 가중치입니다.

class_weight (`float`, *선택 사항*, 기본값 `2.0`) : 헝가리안 매칭 비용에서 분류 오류의 상대적 가중치입니다.

mask_weight (`float`, *선택 사항*, 기본값 `5.0`) : 파노픽 세분화 손실에서 포칼 손실의 상대적 가중치입니다.

dice_weight (`float`, *선택 사항*, 기본값 `5.0`) : 파노픽 세분화 손실에서 dice loss의 상대적 가중치입니다.

train_num_points (`str` 또는 `function`, *선택 사항*, 기본값 12544) : 손실 계산 시 샘플링에 사용되는 포인트 수.

oversample_ratio (`float`, *선택 사항*, 기본값 3.0) : 샘플링된 점의 수를 계산하는 데 사용되는 오버샘플링 파라미터

importance_sample_ratio (`float`, *선택 사항*, 기본값 0.75) : 중요도 샘플링(importance sampling)을 통해 샘플링되는 포인트의 비율입니다.

init_std (`float`, *선택 사항*, 기본값 `0.02`) : 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.

init_xavier_std (`float`, *선택 사항*, 기본값 `1.0`) : cross-attention 가중치의 Xavier 초기화에 사용되는 스케일링 계수입니다.

use_auxiliary_loss (`bool`, *선택 사항*, 기본값 `True`) : Transformer decoder의 중간 예측을 사용하여 손실을 계산할지 여부.

feature_strides (`list[int]`, *선택 사항*, 기본값 `[4, 8, 16, 32]`) : 백본 네트워크에서 생성된 특징에 해당하는 특징 스트라이드입니다.

output_auxiliary_logits (`bool`, *선택 사항*) : 모델이 `auxiliary_logits`를 출력할지 여부.

이것은 Mask2FormerModel의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Mask2Former 모델을 인스턴스화하고 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 [facebook/mask2former-swin-small-coco-instance](https://huggingface.co/facebook/mask2former-swin-small-coco-instance)와 유사한 구성이 생성됩니다.

Configuration 객체는 [PreTrainedConfig](/docs/transformers/v5.23.0/ko/main_classes/configuration#transformers.PreTrainedConfig)를 상속하며, 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 [PreTrainedConfig](/docs/transformers/v5.23.0/ko/main_classes/configuration#transformers.PreTrainedConfig)의 문서를 참고하세요.

예:

```python
>>> from transformers import Mask2FormerConfig, Mask2FormerModel

>>> # Initializing a Mask2Former facebook/mask2former-swin-small-coco-instance configuration
>>> configuration = Mask2FormerConfig()

>>> # Initializing a model (with random weights) from the facebook/mask2former-swin-small-coco-instance style configuration
>>> model = Mask2FormerModel(configuration)

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

## MaskFormer의 특정 출력[[transformers.models.mask2former.modeling_mask2former.Mask2FormerModelOutput]]

#### transformers.models.mask2former.modeling_mask2former.Mask2FormerModelOutput[[transformers.models.mask2former.modeling_mask2former.Mask2FormerModelOutput]]

```python
transformers.models.mask2former.modeling_mask2former.Mask2FormerModelOutput(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, transformer_decoder_intermediate_states: tuple[torch.Tensor] | None = None, masks_queries_logits: tuple[torch.Tensor] | None = None, attentions: tuple[torch.Tensor] | None = None)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mask2former/modeling_mask2former.py#L143)

**매개변수:**

encoder_last_hidden_state (`torch.Tensor`, shape `(batch_size, num_channels, height, width)`, *선택 사항*) : 인코더 모델(백본)의 마지막 단계의 마지막 히든 스테이트(최종 특징 맵). `output_hidden_states=True`가 전달될 때 반환됩니다.

pixel_decoder_last_hidden_state (`torch.Tensor`, shape `(batch_size, num_channels, height, width)`, *선택 사항*) : 픽셀 디코더 모델의 마지막 단계의 마지막 히든 상태(최종 특징 맵).

transformer_decoder_last_hidden_state (`tuple(torch.Tensor)`) : Transformer decoder의 최종 출력 `(batch_size, sequence_length, hidden_size)`.

encoder_hidden_states (`tuple(torch.Tensor)`, *선택 사항*) : `torch.Tensor`의 튜플(embeddings 출력용 1개 + 각 stage 출력용 1개)로, shape은 `(batch_size, num_channels, height, width)`입니다. 각 stage 출력에서 encoder 모델의 hidden-states(또는 feature maps라고도 함). `output_hidden_states=True`가 전달될 때 반환됩니다.

pixel_decoder_hidden_states (`tuple(torch.Tensor)`, , *선택 사항*, `output_hidden_states=True`가 전달되거나 `config.output_hidden_states=True`인 경우 반환됨) : `torch.Tensor`의 튜플 (임베딩의 출력 하나 + 각 단계의 출력 하나)로, 모양은 `(batch_size, num_channels, height, width)`입니다. 각 단계의 출력에서 픽셀 디코더 모델의 히든 스테이트(피처 맵이라고도 함). `output_hidden_states=True`가 전달된 경우 반환됩니다.

transformer_decoder_hidden_states (`tuple(torch.Tensor)`, *선택 사항*) : `torch.Tensor`의 튜플(embeddings 출력용 1개 + 각 stage 출력용 1개)로, shape은 `(batch_size, sequence_length, hidden_size)`입니다. 각 stage 출력 시점의 transformer decoder hidden-states(또는 feature maps라고도 함). `output_hidden_states=True`가 전달되면 반환됩니다.

transformer_decoder_intermediate_states (`tuple(torch.Tensor)`, shape `(num_queries, 1, hidden_size)`) : 중간 decoder activations, 즉 각 decoder layer의 출력으로, 각각 layernorm을 거친 값입니다.

masks_queries_logits (`tuple(torch.Tensor)`, shape `(batch_size, num_queries, height, width)`) : transformer decoder의 각 레이어에서 생성된 Mask Predictions.

attentions (`tuple(tuple(torch.Tensor))`, *선택*, `output_attentions=True`가 전달될 때 반환됨) : `tuple(torch.Tensor)`의 튜플(레이어당 하나)로, 모양은 `(batch_size, num_heads, sequence_length, sequence_length)`입니다. Transformer 디코더의 셀프 어텐션 가중치입니다.

attentions (`tuple[torch.Tensor]`, *선택 사항*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환됨) : `torch.Tensor`의 튜플(레이어당 하나), shape은 `(batch_size, num_heads, sequence_length, sequence_length)`입니다. attention softmax 이후의 attention 가중치로, self-attention 헤드에서 가중 평균을 계산하는 데 사용됩니다.

[Mask2FormerModel](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerModel)의 출력에 대한 클래스입니다. 이 클래스는 logits를 계산하는 데 필요한 모든 hidden states를 반환합니다.

#### transformers.models.mask2former.modeling_mask2former.Mask2FormerForUniversalSegmentationOutput[[transformers.models.mask2former.modeling_mask2former.Mask2FormerForUniversalSegmentationOutput]]

```python
transformers.models.mask2former.modeling_mask2former.Mask2FormerForUniversalSegmentationOutput(loss: typing.Optional[torch.Tensor] = None, class_queries_logits: typing.Optional[torch.Tensor] = None, masks_queries_logits: typing.Optional[torch.Tensor] = None, auxiliary_logits: list[dict[str, torch.Tensor]] | None = 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: typing.Optional[torch.Tensor] = None, attentions: tuple[torch.Tensor] | None = None)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mask2former/modeling_mask2former.py#L196)

**매개변수:**

loss (`torch.Tensor`, *선택 사항*) : 라벨이 존재할 때 반환되는 계산된 손실입니다.

class_queries_logits (`torch.Tensor`, *선택 사항*) : 각 쿼리에 대해 제안된 클래스를 나타내는 `(batch_size, num_queries, num_labels + 1)` 모양의 텐서입니다. `+ 1`은 null 클래스를 포함해야 하므로 필요합니다.

masks_queries_logits (`torch.Tensor`, *선택 사항*) : 각 쿼리에 대한 제안된 마스크를 나타내는 `(batch_size, num_queries, height, width)` 모양의 텐서.

auxiliary_logits (`list[Dict(str, torch.Tensor)]`, *선택 사항*) : Transformer decoder의 각 레이어에서 생성된 클래스 및 마스크 예측 값 목록.

encoder_last_hidden_state (`torch.Tensor`, shape `(batch_size, num_channels, height, width)`) : 인코더 모델(백본)의 마지막 단계의 마지막 히든 스테이트(최종 특징 맵).

pixel_decoder_last_hidden_state (`torch.Tensor`, shape `(batch_size, num_channels, height, width)`) : 픽셀 디코더 모델의 마지막 단계의 마지막 히든 스테이트(최종 특징 맵).

transformer_decoder_last_hidden_state (`tuple(torch.Tensor)`) : Transformer decoder의 최종 출력 `(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)`입니다. 각 단계의 출력에서 transformer 디코더의 hidden-states(또는 feature maps이라고도 함).

attentions (`tuple(tuple(torch.Tensor))`, *선택*, `output_attentions=True`가 전달되거나 `config.output_attentions=True`인 경우 반환됨) : `tuple(torch.Tensor)`의 튜플(레이어당 하나)로, 모양은 `(batch_size, num_heads, sequence_length, sequence_length)`입니다. Transformer 디코더의 Self 및 Cross Attention 가중치입니다.

`Mask2FormerForUniversalSegmentationOutput`의 출력에 대한 클래스입니다.

이 출력은 최종 세그멘테이션 맵을 계산하기 위해 [post_process_semantic_segmentation()](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerImageProcessor.post_process_semantic_segmentation) 또는 [post_process_instance_segmentation()](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerImageProcessor.post_process_instance_segmentation) 또는 [post_process_panoptic_segmentation()](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerImageProcessor.post_process_panoptic_segmentation)에 직접 전달할 수 있습니다. 사용법에 대한 자세한 내용은 [`~Mask2FormerImageProcessor]를 참고하세요.

## Mask2FormerModel[[transformers.Mask2FormerModel]]

#### transformers.Mask2FormerModel[[transformers.Mask2FormerModel]]

```python
transformers.Mask2FormerModel(config: Mask2FormerConfig)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mask2former/modeling_mask2former.py#L2224)

**매개변수:**

config ([Mask2FormerConfig](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/v5.23.0/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

Mask2Former 모델은 특정 헤드가 위에 없는 상태에서 원시 hidden-states를 출력하는 기본 모델입니다.

이 모델은 [PreTrainedModel](/docs/transformers/v5.23.0/ko/main_classes/model#transformers.PreTrainedModel)에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대해서는 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법과 동작에 관한 모든 사항은 PyTorch 문서를 참조하세요.

#### forward[[transformers.Mask2FormerModel.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/v5.23.0/src/transformers/models/mask2former/modeling_mask2former.py#L2234)

**매개변수:**

pixel_values (`torch.Tensor`, shape `(batch_size, num_channels, image_size, image_size)`) : 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 [Mask2FormerImageProcessor](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerImageProcessor)를 사용하여 얻을 수 있습니다. 자세한 내용은 [Mask2FormerImageProcessor.__call__()](/docs/transformers/v5.23.0/ko/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__)를 참조하세요 (`processor_class`는 이미지 처리에 [Mask2FormerImageProcessor](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerImageProcessor)를 사용합니다).

pixel_mask (`torch.Tensor`, shape `(batch_size, height, width)`, *선택 사항*) : 패딩 픽셀 값에 대한 attention 수행을 방지하기 위한 마스크. `[0, 1]`에서 선택된 마스크 값: - 실제 픽셀(즉, **마스크되지 않은** 픽셀)은 1, - 패딩 픽셀(즉, **마스크된** 픽셀)은 0. [attention 마스크란 무엇인가요?](../glossary#attention-mask)

output_hidden_states (`bool`, *선택 사항*) : 모든 레이어의 hidden states를 반환할지 여부. 자세한 내용은 반환되는 텐서 중 `hidden_states` 항목을 참조하세요.

output_attentions (`bool`, *선택 사항*) : 모든 어텐션 레이어의 어텐션 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의 `attentions`를 참조하세요.

return_dict (`bool`, *선택 사항*) : 일반 튜플 대신 [ModelOutput](/docs/transformers/v5.23.0/ko/main_classes/output#transformers.utils.ModelOutput)를 반환할지 여부.

**반환값:** [Mask2FormerModelOutput](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.models.mask2former.modeling_mask2former.Mask2FormerModelOutput) 또는 `tuple(torch.Tensor)`

구성([Mask2FormerConfig](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerConfig))과 입력에 따라 다양한 요소를 포함하는 [Mask2FormerModelOutput](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.models.mask2former.modeling_mask2former.Mask2FormerModelOutput) 또는 `torch.Tensor`의 튜플(`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우).

[Mask2FormerModel](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerModel)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **encoder_last_hidden_state** (`torch.Tensor`, shape `(batch_size, num_channels, height, width)`, *선택 사항*) -- 인코더 모델(백본)의 마지막 단계의 마지막 히든 상태(최종 특징 맵). `output_hidden_states=True`가 전달되면 반환됩니다.
- **pixel_decoder_last_hidden_state** (`torch.Tensor`, shape `(batch_size, num_channels, height, width)`, *선택 사항*) -- 픽셀 디코더 모델의 마지막 단계의 마지막 히든 상태(최종 특징 맵).
- **transformer_decoder_last_hidden_state** (`tuple(torch.Tensor)`) -- transformer decoder의 최종 출력 `(batch_size, sequence_length, hidden_size)`.
- **encoder_hidden_states** (`tuple(torch.Tensor)`, *선택 사항*) -- 각 단계의 출력에 대한 `torch.Tensor` 튜플(임베딩 출력 1개 + 각 단계 출력 1개)로, 모양은 `(batch_size, num_channels, height, width)`입니다. 각 단계 출력 시점의 인코더 모델 히든 스테이트(피처 맵이라고도 함). `output_hidden_states=True`가 전달되면 반환됩니다.
- **pixel_decoder_hidden_states** (`tuple(torch.Tensor)`, , *선택 사항*, `output_hidden_states=True`가 전달되거나 `config.output_hidden_states=True`인 경우 반환됨) -- `torch.Tensor`의 튜플(임베딩 출력 1개 + 각 단계의 출력 1개)로, 모양은 `(batch_size, num_channels, height, width)`입니다. 각 단계의 출력에서 pixel decoder 모델의 hidden-states(또는 feature maps라고도 함). `output_hidden_states=True`가 전달된 경우 반환됩니다.
- **transformer_decoder_hidden_states** (`tuple(torch.Tensor)`, *선택 사항*) -- `torch.Tensor`의 튜플(임베딩 출력 1개 + 각 단계의 출력 1개)로, 모양은 `(batch_size, sequence_length, hidden_size)`입니다. 각 단계의 출력에서 transformer decoder의 hidden-states(또는 feature maps라고도 함). `output_hidden_states=True`가 전달되면 반환됩니다.
- **transformer_decoder_intermediate_states** (`tuple(torch.Tensor)`, shape `(num_queries, 1, hidden_size)`) -- 중간 디코더 활성화 값, 즉 각 디코더 레이어의 출력으로, 각각 layernorm을 거친 상태입니다.
- **masks_queries_logits** (`tuple(torch.Tensor)`, shape `(batch_size, num_queries, height, width)`) Transformer decoder의 각 레이어에서 생성된 마스크 예측값. attentions (`tuple(tuple(torch.Tensor))`, *선택 사항*, `output_attentions=True`가 전달될 때 반환됨) -- `tuple(torch.Tensor)`의 튜플(각 레이어마다 하나), shape `(batch_size, num_heads, sequence_length, sequence_length)`. Transformer decoder의 셀프 어텐션 가중치.
- **attentions** (`tuple[torch.Tensor]`, *선택*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환됨) -- 각 레이어마다 하나씩 포함된 `torch.Tensor`의 튜플로, 모양은 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치입니다.

## Mask2FormerForUniversalSegmentation[[transformers.Mask2FormerForUniversalSegmentation]]

#### transformers.Mask2FormerForUniversalSegmentation[[transformers.Mask2FormerForUniversalSegmentation]]

```python
transformers.Mask2FormerForUniversalSegmentation(config: Mask2FormerConfig)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mask2former/modeling_mask2former.py#L2300)

**매개변수:**

config ([Mask2FormerConfig](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/v5.23.0/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

인스턴스/시맨틱/팬옵틱 분할을 위해 상단에 헤드(heads)가 있는 Mask2Former 모델.

이 모델은 [PreTrainedModel](/docs/transformers/v5.23.0/ko/main_classes/model#transformers.PreTrainedModel)에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대해서는 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법과 동작에 관한 모든 사항은 PyTorch 문서를 참조하세요.

#### forward[[transformers.Mask2FormerForUniversalSegmentation.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_hidden_states: bool | None = None, output_auxiliary_logits: bool | None = None, output_attentions: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mask2former/modeling_mask2former.py#L2353)

**매개변수:**

pixel_values (`torch.Tensor`, shape `(batch_size, num_channels, image_size, image_size)`) : 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 [Mask2FormerImageProcessor](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerImageProcessor)를 사용하여 얻을 수 있습니다. 자세한 내용은 [Mask2FormerImageProcessor.__call__()](/docs/transformers/v5.23.0/ko/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__)를 참조하세요 (`processor_class`는 이미지 처리에 [Mask2FormerImageProcessor](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerImageProcessor)를 사용합니다).

mask_labels (`list[torch.Tensor]`, *선택 사항*) : 모델에 전달할 `(num_labels, height, width)` 모양의 마스크 라벨 목록

class_labels (`list[torch.LongTensor]`, *선택 사항*) : 모델에 전달할 `(num_labels, height, width)` 형식의 대상 클래스 라벨 목록입니다. `mask_labels`의 라벨을 식별하며, 예를 들어 `class_labels[i][j]`인 경우 `mask_labels[i][j]`의 라벨을 나타냅니다.

pixel_mask (`torch.Tensor`, shape `(batch_size, height, width)`, *선택 사항*) : 패딩 픽셀 값에 대한 attention 수행을 방지하기 위한 마스크. `[0, 1]`에서 선택된 마스크 값: - 실제 픽셀(즉, **마스크되지 않은** 픽셀)은 1, - 패딩 픽셀(즉, **마스크된** 픽셀)은 0. [attention 마스크란 무엇인가요?](../glossary#attention-mask)

output_hidden_states (`bool`, *선택 사항*) : 모든 레이어의 hidden states를 반환할지 여부. 자세한 내용은 반환되는 텐서 중 `hidden_states` 항목을 참조하세요.

output_auxiliary_logits (`bool`, *선택 사항*) : 보조 로짓(auxiliary logits)을 출력할지 여부.

output_attentions (`bool`, *선택 사항*) : 모든 어텐션 레이어의 어텐션 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의 `attentions`를 참조하세요.

return_dict (`bool`, *선택 사항*) : 일반 튜플 대신 [ModelOutput](/docs/transformers/v5.23.0/ko/main_classes/output#transformers.utils.ModelOutput)를 반환할지 여부.

**반환값:** [Mask2FormerForUniversalSegmentationOutput](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.models.mask2former.modeling_mask2former.Mask2FormerForUniversalSegmentationOutput) 또는 `tuple(torch.Tensor)`

구성([Mask2FormerConfig](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerConfig))과 입력에 따라 다양한 요소를 포함하는 [Mask2FormerForUniversalSegmentationOutput](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.models.mask2former.modeling_mask2former.Mask2FormerForUniversalSegmentationOutput) 또는 `torch.Tensor`의 튜플(`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우).

[Mask2FormerForUniversalSegmentation](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerForUniversalSegmentation)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **loss** (`torch.Tensor`, *선택 사항*) -- 라벨이 존재할 때 반환되는 계산된 손실입니다.
- **class_queries_logits** (`torch.Tensor`, *선택*) -- 각 query에 대해 제안된 클래스를 나타내는 shape가 `(batch_size, num_queries, num_labels + 1)`인 텐서입니다. null 클래스를 포함하기 때문에 `+ 1`이 필요합니다.
- **masks_queries_logits** (`torch.Tensor`, *선택 사항*) -- 각 쿼리에 대한 제안된 마스크를 나타내는 `(batch_size, num_queries, height, width)` 형태의 텐서입니다.
- **auxiliary_logits** (`list[Dict(str, torch.Tensor)]`, *선택 사항*) -- Transformer decoder의 각 레이어에서 생성된 클래스 및 마스크 예측 값 목록입니다.
- **encoder_last_hidden_state** (`torch.Tensor`, shape `(batch_size, num_channels, height, width)`) -- 인코더 모델(백본)의 마지막 단계의 마지막 히든 상태(최종 특징 맵).
- **pixel_decoder_last_hidden_state** (`torch.Tensor`, shape `(batch_size, num_channels, height, width)`) -- 픽셀 디코더 모델의 마지막 단계의 마지막 히든 상태(최종 특징 맵).
- **transformer_decoder_last_hidden_state** (`tuple(torch.Tensor)`) -- transformer decoder의 최종 출력 `(batch_size, sequence_length, hidden_size)`.
- **encoder_hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`가 전달되었거나 `config.output_hidden_states=True`인 경우 반환됨) -- `torch.Tensor`의 튜플(임베딩 출력 1개 + 각 단계의 출력 1개)로, 모양은 `(batch_size, num_channels, height, width)`입니다. 각 단계의 출력에서 인코더 모델의 히든 스테이트(피처 맵이라고도 함).
- **pixel_decoder_hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`가 전달되었거나 `config.output_hidden_states=True`인 경우 반환됨) -- `torch.Tensor`의 튜플(임베딩 출력 1개 + 각 단계의 출력 1개)로, 모양은 `(batch_size, num_channels, height, width)`입니다. 각 단계의 출력에서 픽셀 디코더 모델의 히든 스테이트(피처 맵이라고도 함).
- **transformer_decoder_hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`가 전달되었거나 `config.output_hidden_states=True`인 경우 반환됨) -- `torch.Tensor`의 튜플(임베딩 출력 1개 + 각 단계의 출력 1개)로, 모양은 `(batch_size, sequence_length, hidden_size)`입니다. 각 단계의 출력에서 transformer decoder의 hidden-states(또는 feature maps라고도 함).
- **attentions** (`tuple(tuple(torch.Tensor))`, *optional*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환) -- shape가 `(batch_size, num_heads, sequence_length, sequence_length)`인 `tuple(torch.Tensor)`의 Tuple (레이어당 하나). transformer decoder의 Self Attention과 Cross Attention 가중치입니다.

예:

인스턴스 분할 예시:

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

>>> # Load Mask2Former trained on COCO instance segmentation dataset
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/mask2former-swin-small-coco-instance")
>>> model = Mask2FormerForUniversalSegmentation.from_pretrained(
...     "facebook/mask2former-swin-small-coco-instance"
... )

>>> 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")

>>> with torch.no_grad():
...     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

>>> # Perform post-processing to get instance segmentation map
>>> pred_instance_map = image_processor.post_process_instance_segmentation(
...     outputs, target_sizes=[(image.height, image.width)]
... )[0]
>>> print(pred_instance_map.shape)
torch.Size([480, 640])
```

의미 분할 예시:
```python
>>> from transformers import AutoImageProcessor, Mask2FormerForUniversalSegmentation
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> import torch

>>> # Load Mask2Former trained on ADE20k semantic segmentation dataset
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/mask2former-swin-small-ade-semantic")
>>> model = Mask2FormerForUniversalSegmentation.from_pretrained("facebook/mask2former-swin-small-ade-semantic")

>>> 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(image, return_tensors="pt")

>>> with torch.no_grad():
...     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

>>> # Perform post-processing to get semantic segmentation map
>>> pred_semantic_map = image_processor.post_process_semantic_segmentation(
...     outputs, target_sizes=[(image.height, image.width)]
... )[0]
>>> print(pred_semantic_map.shape)
torch.Size([512, 683])
```

Panoptic segmentation 예시:

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

>>> # Load Mask2Former trained on CityScapes panoptic segmentation dataset
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/mask2former-swin-small-cityscapes-panoptic")
>>> model = Mask2FormerForUniversalSegmentation.from_pretrained(
...     "facebook/mask2former-swin-small-cityscapes-panoptic"
... )

>>> url = "https://cdn-media.huggingface.co/Inference-API/Sample-results-on-the-Cityscapes-dataset-The-above-images-show-how-our-method-can-handle.png"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> inputs = image_processor(image, return_tensors="pt")

>>> with torch.no_grad():
...     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

>>> # Perform post-processing to get panoptic segmentation map
>>> pred_panoptic_map = image_processor.post_process_panoptic_segmentation(
...     outputs, target_sizes=[(image.height, image.width)]
... )[0]["segmentation"]
>>> print(pred_panoptic_map.shape)
torch.Size([338, 676])
```

## Mask2FormerImageProcessor[[transformers.Mask2FormerImageProcessor]]

#### transformers.Mask2FormerImageProcessor[[transformers.Mask2FormerImageProcessor]]

```python
transformers.Mask2FormerImageProcessor(**kwargs: *<class 'transformers.models.mask2former.image_processing_mask2former.Mask2FormerImageProcessorKwargs'>)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mask2former/image_processing_mask2former.py#L263)

**매개변수:**

do_convert_rgb (`bool`, *kwargs*, *선택*) : 이미지를 RGB로 변환할지 여부.

do_resize (`bool`, *kwargs*, *선택 사항*, 기본값 `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*, *선택 사항*, 기본값 `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` enum 중 하나일 수 있습니다. `do_resize`가 `True`로 설정된 경우에만 효과가 있습니다.

do_rescale (`bool`, *kwargs*, *선택 사항*, 기본값 `True`) : 이미지를 다시 스케일링할지 여부.

rescale_factor (`float`, *kwargs*, *선택 사항*, 기본값 `0.00392156862745098`) : `do_rescale`이 `True`로 설정된 경우 이미지를 재조정하는 데 사용되는 재조정 계수입니다.

do_normalize (`bool`, *kwargs*, *선택 사항*, 기본값 `True`) : 이미지를 정규화할지 여부.

image_mean (`Union[float, list[float], tuple[float, ...]]`, *kwargs*, *선택 사항*, 기본값은 `[0.485, 0.456, 0.406]`) : 정규화에 사용할 이미지 평균입니다. `do_normalize`가 `True`로 설정된 경우에만 효과가 있습니다.

image_std (`Union[float, list[float], tuple[float, ...]]`, *kwargs*, *선택 사항*, 기본값은 `[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*, *선택*) : 이미지를 중앙 크롭할지 여부.

data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *선택*) : `ChannelDimension.FIRST`만 지원됩니다. 느린 프로세서와의 호환성을 위해 추가되었습니다.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *선택*) : 입력 이미지의 채널 차원 형식입니다. 설정하지 않으면 입력 이미지에서 채널 차원 형식을 추론합니다. 다음 중 하나일 수 있습니다: - `"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*, *선택*) : 이미지의 크기에 따른 그룹화를 비활성화하여 이미지를 배치 대신 개별적으로 처리할지 여부입니다. None인 경우, 이미지가 CPU에 있으면 True, 그렇지 않으면 False로 설정됩니다. 이 선택은 https://github.com/huggingface/transformers/pull/38157에 자세히 설명된 경험적 관찰에 기반합니다.

image_seq_length (`int`, *kwargs*, *선택*) : 입력의 각 이미지에 사용할 이미지 토큰의 수입니다. 하위 호환성을 위해 추가되었지만, 향후 모델에서는 프로세서 속성으로 설정해야 합니다.

ignore_index (`int`, *kwargs*, *선택 사항*) : 세그멘테이션 맵의 배경 픽셀에 할당할 라벨입니다. 제공된 경우, 세그멘테이션 맵에서 0(배경)으로 표시된 픽셀은 `ignore_index`로 대체됩니다.

do_reduce_labels (`bool`, *kwargs*, *선택 사항*, 기본값 `False`) : 세그멘테이션 맵의 모든 라벨 값을 1만큼 감소시킬지 여부입니다. 일반적으로 0을 배경으로 사용하고, 배경 자체가 데이터셋의 모든 클래스에 포함되지 않는 데이터셋(예: ADE20k)에서 사용됩니다. 배경 라벨은 `ignore_index`로 대체됩니다.

num_labels (`int`, *kwargs*, *선택 사항*) : 세그멘테이션 맵의 라벨 수.

size_divisor (`int`, *kwargs*, *선택 사항*, 기본값은 `32`) : 일부 백본은 특정 숫자로 나누어 떨어지는 이미지가 필요합니다. 전달되지 않으면 Swin Transformer에서 사용된 값이 기본값으로 사용됩니다.

Mask2FormerImageProcessor 이미지 프로세서를 생성합니다.

#### preprocess[[transformers.Mask2FormerImageProcessor.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.mask2former.image_processing_mask2former.Mask2FormerImageProcessorKwargs'>)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mask2former/image_processing_mask2former.py#L386)

**매개변수:**

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]]`, *선택*) : 인스턴스 ID에서 의미론적 ID로 매핑하는 딕셔너리.

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` enum 중 하나를 사용할 수 있습니다. `do_resize`가 `True`로 설정된 경우에만 효과가 있습니다.

do_rescale (`bool`, *kwargs*, *선택*) : 이미지를 다시 스케일링할지 여부.

rescale_factor (`float`, *kwargs*, *선택*) : `do_rescale`가 `True`로 설정된 경우 이미지를 재조정하는 데 사용되는 재조정 계수입니다.

do_normalize (`bool`, *kwargs*, *선택*) : 이미지를 정규화할지 여부.

image_mean (`Union[float, list[float], tuple[float, ...]]`, *kwargs*, *선택*) : 정규화에 사용할 이미지 평균값. `do_normalize`이 `True`로 설정된 경우에만 효과가 있습니다.

image_std (`Union[float, list[float], tuple[float, ...]]`, *kwargs*, *선택*) : 정규화에 사용할 이미지 표준 편차. `do_normalize`가 `True`로 설정된 경우에만 효과가 있습니다.

do_pad (`bool`, *kwargs*, *선택*) : 이미지를 패딩할지 여부입니다. 패딩은 배치 내 가장 큰 크기로 수행하거나, 이미지마다 고정된 정사각형 크기로 수행합니다. 정확한 패딩 전략은 모델에 따라 달라집니다.

pad_size (`SizeDict`, *kwargs*, *optional*) : 이미지를 패딩할 크기입니다. 전처리용으로 제공된 모든 이미지 크기보다 커야 합니다. `pad_size`가 제공되지 않으면, 배치 내 가장 큰 높이와 너비로 이미지가 패딩됩니다.

do_center_crop (`bool`, *kwargs*, *선택*) : 이미지를 중앙 크롭할지 여부.

data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *선택*) : `ChannelDimension.FIRST`만 지원됩니다. 느린 프로세서와의 호환성을 위해 추가되었습니다.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *선택*) : 입력 이미지의 채널 차원 형식입니다. 설정하지 않으면 입력 이미지에서 채널 차원 형식을 추론합니다. 다음 중 하나일 수 있습니다: - `"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*, *선택*) : 이미지의 크기에 따른 그룹화를 비활성화하여 이미지를 배치 대신 개별적으로 처리할지 여부입니다. None인 경우, 이미지가 CPU에 있으면 True, 그렇지 않으면 False로 설정됩니다. 이 선택은 https://github.com/huggingface/transformers/pull/38157에 자세히 설명된 경험적 관찰에 기반합니다.

image_seq_length (`int`, *kwargs*, *선택*) : 입력의 각 이미지에 사용할 이미지 토큰의 수입니다. 하위 호환성을 위해 추가되었지만, 향후 모델에서는 프로세서 속성으로 설정해야 합니다.

ignore_index (`int`, *kwargs*, *선택 사항*) : 세그멘테이션 맵의 배경 픽셀에 할당할 라벨입니다. 제공된 경우, 세그멘테이션 맵에서 0(배경)으로 표시된 픽셀은 `ignore_index`로 대체됩니다.

do_reduce_labels (`bool`, *kwargs*, *선택 사항*, 기본값 `False`) : 세그멘테이션 맵의 모든 라벨 값을 1만큼 감소시킬지 여부입니다. 일반적으로 0을 배경으로 사용하고, 배경 자체가 데이터셋의 모든 클래스에 포함되지 않는 데이터셋(예: ADE20k)에서 사용됩니다. 배경 라벨은 `ignore_index`로 대체됩니다.

num_labels (`int`, *kwargs*, *선택 사항*) : 세그멘테이션 맵의 라벨 수.

size_divisor (`int`, *kwargs*, *선택 사항*, 기본값은 `32`) : 일부 백본은 특정 숫자로 나누어 떨어지는 이미지가 필요합니다. 전달되지 않으면 Swin Transformer에서 사용된 값이 기본값으로 사용됩니다.

**반환값:** `~image_processing_base.BatchFeature`

- **data** (`dict`) -- __call__ 메서드가 반환하는 리스트/배열/텐서 딕셔너리('pixel_values' 등).
- **tensor_type** (`Union[None, str, TensorType]`, *선택 사항*) -- 초기화 시 PyTorch/Numpy 텐서에서 정수 목록을 변환하려면 여기에 tensor_type을 지정할 수 있습니다.

#### post_process_semantic_segmentation[[transformers.Mask2FormerImageProcessor.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/v5.23.0/src/transformers/models/mask2former/image_processing_mask2former.py#L550)

**매개변수:**

outputs ([Mask2FormerForUniversalSegmentation](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerForUniversalSegmentation)) : 모델의 원시 출력.

target_sizes (`list[tuple[int, int]]`, *선택 사항*) : (batch_size) 길이의 리스트로, 각 리스트 항목(`tuple[int, int]]`)은 각 예측의 요청된 최종 크기(높이, 너비)에 해당합니다. None으로 두면 예측 결과가 리사이즈되지 않습니다.

return_segmentation_scores (`bool`, *선택 사항*, 기본값 `False`) : 분할 맵과 함께 분할 점수를 반환할지 여부입니다. `True`인 경우, 반환된 리스트의 각 요소는 `segmentation` 필드(클래스 ID, shape `(height, width)`)와 `segmentation_scores` 필드(shape `(num_classes, height, width)`)를 가진 `SemanticSegmentationPostProcessorOutput`입니다.

**반환값:** `list[torch.Tensor]` 또는 `list[SemanticSegmentationPostProcessorOutput]`

`return_segmentation_scores=False`(기본값)인 경우, 각 항목이 클래스 ID를 가진 `(height, width)` 모양의 세그멘테이션 맵인 `batch_size` 길이의 리스트를 반환합니다. `return_segmentation_scores=True`인 경우, `segmentation`(클래스 ID, `(height, width)` 모양)와 `segmentation_scores`(`(num_classes, height, width)` 모양) 필드를 가진 `SemanticSegmentationPostProcessorOutput` 리스트를 반환합니다. 두 경우 모두 `(height, width)`는 대상 크기(`target_sizes`가 지정된 경우)에 해당합니다.

[Mask2FormerForUniversalSegmentation](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerForUniversalSegmentation)의 출력을 의미 분할 맵으로 변환합니다. PyTorch만 지원합니다.

#### post_process_instance_segmentation[[transformers.Mask2FormerImageProcessor.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/v5.23.0/src/transformers/models/mask2former/image_processing_mask2former.py#L627)

**매개변수:**

outputs ([Mask2FormerForUniversalSegmentation](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerForUniversalSegmentation)) : 모델의 원시 출력.

threshold (`float`, *선택 사항*, 기본값 0.5) : 예측된 인스턴스 마스크를 유지하기 위한 확률 점수 임계값입니다.

mask_threshold (`float`, *선택*, 기본값 0.5) : 예측된 마스크를 이진 값으로 변환할 때 사용할 임계값입니다.

overlap_mask_area_threshold (`float`, *선택 사항*, 기본값 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** -- 각 픽셀이 `segment_id`를 나타내는 `(height, width)` 형태의 텐서, 또는 return_coco_annotation이 `True`로 설정된 경우 분할 맵의 `List[List]` run-length encoding (RLE), 또는 return_binary_maps가 `True`로 설정된 경우 `(num_instances, height, width)` 형태의 텐서입니다. `threshold`보다 높은 마스크가 발견되지 않으면 `None`으로 설정됩니다.
- **segments_info** -- 각 세그먼트에 대한 추가 정보를 포함하는 사전입니다.
  - **id** -- `segment_id`를 나타내는 정수입니다.
  - **label_id** -- `segment_id`에 해당하는 라벨/의미론적 클래스 ID를 나타내는 정수입니다.
  - **score** -- `segment_id`를 가진 세그먼트의 예측 점수.

`Mask2FormerForUniversalSegmentationOutput`의 출력을 인스턴스 세그멘테이션 예측으로 변환합니다. PyTorch만 지원합니다. 인스턴스가 겹칠 수 있는 경우, 올바른 세그멘테이션 결과를 얻으려면 return_coco_annotation 또는 return_binary_maps 중 하나를 `True`로 설정하세요.

#### post_process_panoptic_segmentation[[transformers.Mask2FormerImageProcessor.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/v5.23.0/src/transformers/models/mask2former/image_processing_mask2former.py#L748)

**매개변수:**

outputs (`Mask2FormerForUniversalSegmentationOutput`) : [Mask2FormerForUniversalSegmentation](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerForUniversalSegmentation)의 출력입니다.

threshold (`float`, *선택 사항*, 기본값 0.5) : 예측된 인스턴스 마스크를 유지하기 위한 확률 점수 임계값입니다.

mask_threshold (`float`, *선택*, 기본값 0.5) : 예측된 마스크를 이진 값으로 변환할 때 사용할 임계값입니다.

overlap_mask_area_threshold (`float`, *선택 사항*, 기본값 0.8) : 각 바이너리 인스턴스 마스크 내에서 작은 분리된 부분을 병합하거나 제거하기 위한 오버랩 마스크 영역 임계값입니다.

label_ids_to_fuse (`Set[int]`, *선택 사항*) : 이 상태의 라벨은 모든 인스턴스가 하나로 병합됩니다. 예를 들어 이미지에는 하늘이 하나만 있을 수 있지만 여러 명의 사람이 있을 수 있으므로, 하늘의 라벨 ID는 해당 세트에 포함되지만 사람의 라벨 ID는 포함되지 않습니다.

target_sizes (`List[Tuple]`, *선택 사항*) : (batch_size) 길이의 리스트로, 각 리스트 항목(`Tuple[int, int]]`)은 배치 내 각 예측의 요청된 최종 크기(높이, 너비)에 해당합니다. None으로 두면 예측 결과가 리사이즈되지 않습니다.

**반환값:** `List[Dict]`

이미지별로 하나씩 포함된 딕셔너리 목록이며, 각 딕셔너리에는 두 개의 키가 포함됩니다:
- **segmentation** -- 각 픽셀이 `segment_id`를 나타내는 `(height, width)` 형태의 텐서. `threshold`보다 높은 값이 발견되지 않으면 `None`으로 설정됩니다. `target_sizes`가 지정된 경우, segmentation은 해당 `target_sizes` 항목으로 리사이즈됩니다.
- **segments_info** -- 각 세그먼트에 대한 추가 정보를 포함하는 사전입니다.
  - **id** -- `segment_id`를 나타내는 정수입니다.
  - **label_id** -- `segment_id`에 해당하는 라벨/의미론적 클래스 ID를 나타내는 정수입니다.
  - **was_fused** -- `label_id`가 `label_ids_to_fuse`에 포함되어 있으면 `True`, 그렇지 않으면 `False`인 불리언 값. 동일한 클래스/라벨의 여러 인스턴스가 병합되어 단일 `segment_id`가 할당되었습니다.
  - **score** -- `segment_id`를 가진 세그먼트의 예측 점수.

`Mask2FormerForUniversalSegmentationOutput`의 출력을 이미지 팬옵틱 세분화 예측으로 변환합니다. PyTorch만 지원합니다.

## Mask2FormerImageProcessorPil[[transformers.Mask2FormerImageProcessorPil]]

#### transformers.Mask2FormerImageProcessorPil[[transformers.Mask2FormerImageProcessorPil]]

```python
transformers.Mask2FormerImageProcessorPil(**kwargs: *<class 'transformers.models.mask2former.image_processing_pil_mask2former.Mask2FormerImageProcessorKwargs'>)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mask2former/image_processing_pil_mask2former.py#L274)

#### preprocess[[transformers.Mask2FormerImageProcessorPil.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.mask2former.image_processing_pil_mask2former.Mask2FormerImageProcessorKwargs'>)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mask2former/image_processing_pil_mask2former.py#L442)

**매개변수:**

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]]`, *선택*) : 인스턴스 ID에서 의미론적 ID로 매핑하는 딕셔너리.

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` enum 중 하나를 사용할 수 있습니다. `do_resize`가 `True`로 설정된 경우에만 효과가 있습니다.

do_rescale (`bool`, *kwargs*, *선택*) : 이미지를 다시 스케일링할지 여부.

rescale_factor (`float`, *kwargs*, *선택*) : `do_rescale`가 `True`로 설정된 경우 이미지를 재조정하는 데 사용되는 재조정 계수입니다.

do_normalize (`bool`, *kwargs*, *선택*) : 이미지를 정규화할지 여부.

image_mean (`Union[float, list[float], tuple[float, ...]]`, *kwargs*, *선택*) : 정규화에 사용할 이미지 평균값. `do_normalize`이 `True`로 설정된 경우에만 효과가 있습니다.

image_std (`Union[float, list[float], tuple[float, ...]]`, *kwargs*, *선택*) : 정규화에 사용할 이미지 표준 편차. `do_normalize`가 `True`로 설정된 경우에만 효과가 있습니다.

do_pad (`bool`, *kwargs*, *선택*) : 이미지를 패딩할지 여부입니다. 패딩은 배치 내 가장 큰 크기로 수행하거나, 이미지마다 고정된 정사각형 크기로 수행합니다. 정확한 패딩 전략은 모델에 따라 달라집니다.

pad_size (`SizeDict`, *kwargs*, *optional*) : 이미지를 패딩할 크기입니다. 전처리용으로 제공된 모든 이미지 크기보다 커야 합니다. `pad_size`가 제공되지 않으면, 배치 내 가장 큰 높이와 너비로 이미지가 패딩됩니다.

do_center_crop (`bool`, *kwargs*, *선택*) : 이미지를 중앙 크롭할지 여부.

data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *선택*) : `ChannelDimension.FIRST`만 지원됩니다. 느린 프로세서와의 호환성을 위해 추가되었습니다.

input_data_format (`Union[str, ~image_utils.ChannelDimension]`, *kwargs*, *선택*) : 입력 이미지의 채널 차원 형식입니다. 설정하지 않으면 입력 이미지에서 채널 차원 형식을 추론합니다. 다음 중 하나일 수 있습니다: - `"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*, *선택*) : 이미지의 크기에 따른 그룹화를 비활성화하여 이미지를 배치 대신 개별적으로 처리할지 여부입니다. None인 경우, 이미지가 CPU에 있으면 True, 그렇지 않으면 False로 설정됩니다. 이 선택은 https://github.com/huggingface/transformers/pull/38157에 자세히 설명된 경험적 관찰에 기반합니다.

image_seq_length (`int`, *kwargs*, *선택*) : 입력의 각 이미지에 사용할 이미지 토큰의 수입니다. 하위 호환성을 위해 추가되었지만, 향후 모델에서는 프로세서 속성으로 설정해야 합니다.

ignore_index (`int`, *kwargs*, *선택 사항*) : 세그멘테이션 맵의 배경 픽셀에 할당할 라벨입니다. 제공된 경우, 세그멘테이션 맵에서 0(배경)으로 표시된 픽셀은 `ignore_index`로 대체됩니다.

do_reduce_labels (`bool`, *kwargs*, *선택 사항*, 기본값 `False`) : 세그멘테이션 맵의 모든 라벨 값을 1만큼 감소시킬지 여부입니다. 일반적으로 0을 배경으로 사용하고, 배경 자체가 데이터셋의 모든 클래스에 포함되지 않는 데이터셋(예: ADE20k)에서 사용됩니다. 배경 라벨은 `ignore_index`로 대체됩니다.

num_labels (`int`, *kwargs*, *선택 사항*) : 세그멘테이션 맵의 라벨 수.

size_divisor (`int`, *kwargs*, *선택 사항*, 기본값은 `32`) : 일부 백본은 특정 숫자로 나누어 떨어지는 이미지가 필요합니다. 전달되지 않으면 Swin Transformer에서 사용된 값이 기본값으로 사용됩니다.

**반환값:** `~image_processing_base.BatchFeature`

- **data** (`dict`) -- __call__ 메서드가 반환하는 리스트/배열/텐서 딕셔너리('pixel_values' 등).
- **tensor_type** (`Union[None, str, TensorType]`, *선택 사항*) -- 초기화 시 PyTorch/Numpy 텐서에서 정수 목록을 변환하려면 여기에 tensor_type을 지정할 수 있습니다.

#### post_process_semantic_segmentation[[transformers.Mask2FormerImageProcessorPil.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/v5.23.0/src/transformers/models/mask2former/image_processing_pil_mask2former.py#L587)

**매개변수:**

outputs ([Mask2FormerForUniversalSegmentation](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerForUniversalSegmentation)) : 모델의 원시 출력.

target_sizes (`list[tuple[int, int]]`, *선택 사항*) : (batch_size) 길이의 리스트로, 각 리스트 항목(`tuple[int, int]]`)은 각 예측의 요청된 최종 크기(높이, 너비)에 해당합니다. None으로 두면 예측 결과가 리사이즈되지 않습니다.

return_segmentation_scores (`bool`, *선택 사항*, 기본값 `False`) : 분할 맵과 함께 분할 점수를 반환할지 여부입니다. `True`인 경우, 반환된 리스트의 각 요소는 `segmentation` 필드(클래스 ID, shape `(height, width)`)와 `segmentation_scores` 필드(shape `(num_classes, height, width)`)를 가진 `SemanticSegmentationPostProcessorOutput`입니다.

**반환값:** `list[torch.Tensor]` 또는 `list[SemanticSegmentationPostProcessorOutput]`

`return_segmentation_scores=False`(기본값)인 경우, 각 항목이 클래스 ID를 가진 `(height, width)` 모양의 세그멘테이션 맵인 `batch_size` 길이의 리스트를 반환합니다. `return_segmentation_scores=True`인 경우, `segmentation`(클래스 ID, `(height, width)` 모양)와 `segmentation_scores`(`(num_classes, height, width)` 모양) 필드를 가진 `SemanticSegmentationPostProcessorOutput` 리스트를 반환합니다. 두 경우 모두 `(height, width)`는 대상 크기(`target_sizes`가 지정된 경우)에 해당합니다.

[Mask2FormerForUniversalSegmentation](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerForUniversalSegmentation)의 출력을 의미 분할 맵으로 변환합니다. PyTorch만 지원합니다.

#### post_process_instance_segmentation[[transformers.Mask2FormerImageProcessorPil.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/v5.23.0/src/transformers/models/mask2former/image_processing_pil_mask2former.py#L664)

**매개변수:**

outputs ([Mask2FormerForUniversalSegmentation](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerForUniversalSegmentation)) : 모델의 원시 출력.

threshold (`float`, *선택 사항*, 기본값 0.5) : 예측된 인스턴스 마스크를 유지하기 위한 확률 점수 임계값입니다.

mask_threshold (`float`, *선택*, 기본값 0.5) : 예측된 마스크를 이진 값으로 변환할 때 사용할 임계값입니다.

overlap_mask_area_threshold (`float`, *선택 사항*, 기본값 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** -- 각 픽셀이 `segment_id`를 나타내는 `(height, width)` 형태의 텐서, 또는 return_coco_annotation이 `True`로 설정된 경우 분할 맵의 `List[List]` run-length encoding (RLE), 또는 return_binary_maps가 `True`로 설정된 경우 `(num_instances, height, width)` 형태의 텐서입니다. `threshold`보다 높은 마스크가 발견되지 않으면 `None`으로 설정됩니다.
- **segments_info** -- 각 세그먼트에 대한 추가 정보를 포함하는 사전입니다.
  - **id** -- `segment_id`를 나타내는 정수입니다.
  - **label_id** -- `segment_id`에 해당하는 라벨/의미론적 클래스 ID를 나타내는 정수입니다.
  - **score** -- `segment_id`를 가진 세그먼트의 예측 점수.

`Mask2FormerForUniversalSegmentationOutput`의 출력을 인스턴스 세그멘테이션 예측으로 변환합니다. PyTorch만 지원합니다. 인스턴스가 겹칠 수 있는 경우, 올바른 세그멘테이션 결과를 얻으려면 return_coco_annotation 또는 return_binary_maps 중 하나를 `True`로 설정하세요.

#### post_process_panoptic_segmentation[[transformers.Mask2FormerImageProcessorPil.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/v5.23.0/src/transformers/models/mask2former/image_processing_pil_mask2former.py#L786)

**매개변수:**

outputs (`Mask2FormerForUniversalSegmentationOutput`) : [Mask2FormerForUniversalSegmentation](/docs/transformers/v5.23.0/ko/model_doc/mask2former#transformers.Mask2FormerForUniversalSegmentation)의 출력입니다.

threshold (`float`, *선택 사항*, 기본값 0.5) : 예측된 인스턴스 마스크를 유지하기 위한 확률 점수 임계값입니다.

mask_threshold (`float`, *선택*, 기본값 0.5) : 예측된 마스크를 이진 값으로 변환할 때 사용할 임계값입니다.

overlap_mask_area_threshold (`float`, *선택 사항*, 기본값 0.8) : 각 바이너리 인스턴스 마스크 내에서 작은 분리된 부분을 병합하거나 제거하기 위한 오버랩 마스크 영역 임계값입니다.

label_ids_to_fuse (`Set[int]`, *선택 사항*) : 이 상태의 라벨은 모든 인스턴스가 하나로 병합됩니다. 예를 들어 이미지에는 하늘이 하나만 있을 수 있지만 여러 명의 사람이 있을 수 있으므로, 하늘의 라벨 ID는 해당 세트에 포함되지만 사람의 라벨 ID는 포함되지 않습니다.

target_sizes (`List[Tuple]`, *선택 사항*) : (batch_size) 길이의 리스트로, 각 리스트 항목(`Tuple[int, int]]`)은 배치 내 각 예측의 요청된 최종 크기(높이, 너비)에 해당합니다. None으로 두면 예측 결과가 리사이즈되지 않습니다.

**반환값:** `List[Dict]`

이미지별로 하나씩 포함된 딕셔너리 목록이며, 각 딕셔너리에는 두 개의 키가 포함됩니다:
- **segmentation** -- 각 픽셀이 `segment_id`를 나타내는 `(height, width)` 형태의 텐서. `threshold`보다 높은 값이 발견되지 않으면 `None`으로 설정됩니다. `target_sizes`가 지정된 경우, segmentation은 해당 `target_sizes` 항목으로 리사이즈됩니다.
- **segments_info** -- 각 세그먼트에 대한 추가 정보를 포함하는 사전입니다.
  - **id** -- `segment_id`를 나타내는 정수입니다.
  - **label_id** -- `segment_id`에 해당하는 라벨/의미론적 클래스 ID를 나타내는 정수입니다.
  - **was_fused** -- `label_id`가 `label_ids_to_fuse`에 포함되어 있으면 `True`, 그렇지 않으면 `False`인 불리언 값. 동일한 클래스/라벨의 여러 인스턴스가 병합되어 단일 `segment_id`가 할당되었습니다.
  - **score** -- `segment_id`를 가진 세그먼트의 예측 점수.

`Mask2FormerForUniversalSegmentationOutput`의 출력을 이미지 팬옵틱 세분화 예측으로 변환합니다. PyTorch만 지원합니다.

