Transformers documentation

MaskFormer

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

이 모델은 2021-07-13에 HF papers에 게시되었으며, 2022-03-02에 Hugging Face Transformers에 기여되었습니다.

MaskFormer

이 모델은 최근에 도입된 모델이므로 API가 광범위하게 테스트되지 않았습니다. 향후 수정을 위해 일부 버그나 경미한 깨짐 변경 사항이 있을 수 있습니다. 이상한 사항을 발견하시면 Github Issue를 등록해 주세요.

개요

The MaskFormer model was proposed in Per-Pixel Classification is Not All You Need for Semantic Segmentation 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는 이진 마스크의 집합을 예측하는 단순한 마스크 분류 모델로, 각 마스크에는 단일 전역 클래스 라벨 예측이 연결됩니다. 전체적으로, 제안된 마스크 분류 기반 방법은 시맨틱 및 팬옵틱 세그멘테이션 작업에 효과적인 접근법의 지형을 단순화하고 뛰어난 실증 결과를 보여줍니다. 특히, 클래스 수가 많을 때 MaskFormer가 픽셀별 분류 베이스라인보다 우수한 성능을 내는 것을 관찰했습니다. 제안된 마스크 분류 기반 방법은 현재 최첨단 시맨틱(55.6 mIoU on ADE20K) 및 팬옵틱 세그멘테이션(52.7 PQ on COCO) 모델 모두를 능가합니다.

아래 그림은 MaskFormer의 아키텍처를 보여줍니다. 원본 논문에서 가져왔습니다.

이 모델은 francesco가 기여했습니다. 원본 코드는 여기에서 찾을 수 있습니다.

사용 팁

  • MaskFormer의 Transformer decoder는 DETR의 decoder와 동일합니다. DETR의 저자들은 학습 과정에서, 특히 각 클래스의 올바른 개수만큼의 객체를 출력하도록 모델을 돕기 위해 decoder에서 보조 손실을 사용하는 것이 유용하다고 확인했습니다. MaskFormerConfig의 use_auxiliary_loss 매개변수를 True로 설정하면, 각 decoder 레이어 뒤에 예측 피드포워드 신경망과 헝가리안 손실이 추가됩니다(FFN은 매개변수를 공유합니다).
  • 모델을 여러 노드에 걸친 분산 환경에서 학습하려면 modeling_maskformer.py의 MaskFormerLoss 클래스 안의 get_num_masks 함수를 업데이트해야 합니다. 여러 노드에서 학습하는 경우, 여기의 원래 구현에서 볼 수 있듯이 이 값을 모든 노드에 걸친 대상 마스크의 평균 개수로 설정해야 합니다.
  • MaskFormerImageProcessor를 사용하여 모델에 사용할 이미지와 선택적 타겟을 준비할 수 있습니다.
  • 작업에 따라 post_process_semantic_segmentation() 또는 post_process_panoptic_segmentation()을 호출하여 최종 분할 결과를 얻을 수 있습니다. 두 작업 모두 MaskFormerForInstanceSegmentation의 출력으로 해결할 수 있으며, panoptic segmentation은 대상 객체(예: 하늘)의 인스턴스를 병합하기 위한 선택적 label_ids_to_fuse 인수를 지원합니다.

리소스

Image Segmentation
  • MaskFormer를 사용하여 추론 및 커스텀 데이터로 파인튜닝을 보여주는 모든 노트북은 여기에서 찾을 수 있습니다.

MaskFormer의 특정 출력

class transformers.models.maskformer.modeling_maskformer.MaskFormerModelOutput

< >

( encoder_last_hidden_state: typing.Optional[torch.Tensor] = Nonepixel_decoder_last_hidden_state: typing.Optional[torch.Tensor] = Nonetransformer_decoder_last_hidden_state: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: tuple[torch.Tensor] | None = Nonepixel_decoder_hidden_states: tuple[torch.Tensor] | None = Nonetransformer_decoder_hidden_states: tuple[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor] | None = Noneattentions: tuple[torch.Tensor] | None = None )

매개변수

  • 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)) — 픽셀 디코더 모델(FPN)의 마지막 단계의 마지막 히든 상태(최종 피처 맵).
  • transformer_decoder_last_hidden_state (torch.Tensor, shape (batch_size, sequence_length, hidden_size)) — transformer decoder 모델의 마지막 단계의 마지막 hidden states(최종 feature map).
  • encoder_hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(임베딩 출력 1개 + 각 단계의 출력 1개)로, shape은 (batch_size, num_channels, height, width)입니다. 각 단계의 출력에서 인코더 모델의 hidden-states(또는 feature maps라고도 함).
  • pixel_decoder_hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(임베딩 출력 1개 + 각 단계의 출력 1개)로, shape이 (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개)로, shape이 (batch_size, sequence_length, hidden_size)입니다. 각 단계 출력 시점의 transformer decoder hidden-states(또는 feature maps라고도 함).
  • hidden_states tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨) — encoder_hidden_states, pixel_decoder_hidden_states 및 decoder_hidden_states를 포함하는 torch.Tensor의 Tuple
  • hidden_states (tuple[torch.Tensor], 선택 사항, 다음 조건에서 반환됩니다: output_hidden_states=True 이 전달되거나 config.output_hidden_states=True) — 다음 형태의 튜플: torch.Tensor (임베딩이 있는 경우 임베딩 레이어의 출력 1개 + 각 레이어의 출력 1개)로, 형태는 (batch_size, sequence_length, hidden_size).

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • 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 가중치.

MaskFormerModel의 출력을 위한 클래스입니다. 이 클래스는 logits를 계산하는 데 필요한 모든 hidden states를 반환합니다.

class transformers.models.maskformer.modeling_maskformer.MaskFormerForInstanceSegmentationOutput

< >

( loss: typing.Optional[torch.Tensor] = Noneclass_queries_logits: typing.Optional[torch.Tensor] = Nonemasks_queries_logits: typing.Optional[torch.Tensor] = Noneauxiliary_logits: typing.Optional[torch.Tensor] = Noneencoder_last_hidden_state: typing.Optional[torch.Tensor] = Nonepixel_decoder_last_hidden_state: typing.Optional[torch.Tensor] = Nonetransformer_decoder_last_hidden_state: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: tuple[torch.Tensor] | None = Nonepixel_decoder_hidden_states: tuple[torch.Tensor] | None = Nonetransformer_decoder_hidden_states: tuple[torch.Tensor] | None = Nonehidden_states: tuple[torch.Tensor] | None = Noneattentions: tuple[torch.Tensor] | None = None )

매개변수

  • 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 (Dict[str, torch.Tensor], 선택, output_auxiliary_logits=True일 때 반환됨) — 보조 손실이 활성화된 경우 각 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)) — 픽셀 디코더 모델(FPN)의 마지막 단계의 마지막 히든 상태(최종 피처 맵).
  • transformer_decoder_last_hidden_state (torch.Tensor, shape (batch_size, sequence_length, hidden_size)) — transformer decoder 모델의 마지막 단계의 마지막 hidden states(최종 feature map).
  • encoder_hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(임베딩 출력 1개 + 각 단계의 출력 1개)로, shape은 (batch_size, num_channels, height, width)입니다. 각 단계의 출력에서 인코더 모델의 hidden-states(또는 feature maps라고도 함).
  • pixel_decoder_hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(임베딩 출력 1개 + 각 단계의 출력 1개)로, shape이 (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개)로, shape이 (batch_size, sequence_length, hidden_size)입니다. 각 단계 출력 시점의 transformer decoder hidden-states입니다.
  • hidden_states tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨) — encoder_hidden_states, pixel_decoder_hidden_states 및 decoder_hidden_states를 포함하는 torch.Tensor의 Tuple입니다.
  • hidden_states (tuple[torch.Tensor], 선택 사항, 다음 조건에서 반환됩니다: output_hidden_states=True 이 전달되거나 config.output_hidden_states=True) — 다음 형태의 튜플: torch.Tensor (임베딩이 있는 경우 임베딩 레이어의 출력 1개 + 각 레이어의 출력 1개)로, 형태는 (batch_size, sequence_length, hidden_size).

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • 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 가중치.

MaskFormerForInstanceSegmentation의 출력 클래스입니다.

이 출력은 작업에 따라 post_process_semantic_segmentation() 또는 post_process_instance_segmentation() 또는 post_process_panoptic_segmentation()에 직접 전달할 수 있습니다. 사용법에 대한 자세한 내용은 [`~MaskFormerImageProcessor]를 참고하세요.

MaskFormerDetrConfig

클래스 transformers.MaskFormerDetrConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool = Truebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonenum_channels: int = 3num_queries: int = 100encoder_layers: int = 6encoder_ffn_dim: int = 2048encoder_attention_heads: int = 8decoder_layers: int = 6decoder_ffn_dim: int = 2048decoder_attention_heads: int = 8encoder_layerdrop: float | int = 0.0decoder_layerdrop: float | int = 0.0activation_function: str = 'relu'd_model: int = 256dropout: float | int = 0.1attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0init_std: float = 0.02init_xavier_std: float = 1.0auxiliary_loss: bool = Falseposition_embedding_type: str = 'sine'dilation: bool = Falseclass_cost: int = 1bbox_cost: int = 5giou_cost: int = 2mask_loss_coefficient: int = 1dice_loss_coefficient: int = 1bbox_loss_coefficient: int = 5giou_loss_coefficient: int = 2eos_coefficient: float = 0.1 )

매개변수

  • is_encoder_decoder (bool, 선택 사항, 기본값 True) — 모델이 인코더/디코더로 사용되는지 여부를 나타냅니다.
  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], 선택) — backbone 모델의 설정입니다.
  • num_channels (int, 선택 사항, 기본값 3) — 입력 채널의 수입니다.
  • num_queries (int, 선택 사항, 기본값 100) — 객체 쿼리의 수, 즉 감지 슬롯의 수입니다. 이는 ConditionalDetrModel이 단일 이미지에서 감지할 수 있는 최대 객체 수입니다. COCO의 경우 100개의 쿼리를 권장합니다.
  • encoder_layers (int, 선택 사항, 기본값 6) — Transformer 인코더의 숨겨진 레이어 수입니다. 설정하지 않으면 num_layers와 동일한 값을 사용합니다.
  • encoder_ffn_dim (int, 선택 사항, 기본값 2048) — 인코더의 “중간” 레이어(일반적으로 feed-forward 레이어라고도 함)의 차원입니다.
  • encoder_attention_heads (int, 선택 사항, 기본값 8) — Transformer 인코더의 각 어텐션 레이어에 사용할 어텐션 헤드 수입니다.
  • decoder_layers (int, 선택 사항, 기본값 6) — Transformer decoder의 hidden layer 수입니다. 설정하지 않으면 num_layers와 동일한 값을 사용합니다.
  • decoder_ffn_dim (int, 선택 사항, 기본값 2048) — decoder의 “intermediate”(일반적으로 feed-forward라고도 함) 레이어의 차원입니다.
  • decoder_attention_heads (int, 선택 사항, 기본값 8) — Transformer decoder의 각 attention layer에 사용할 attention head 수입니다.
  • encoder_layerdrop (Union[float, int], 선택 사항, 기본값 0.0) — 인코더의 LayerDrop 확률입니다. 자세한 내용은 [LayerDrop 논문](https://huggingface.co/papers/1909.11556 참조)을 참고하세요.
  • decoder_layerdrop (Union[float, int], 선택 사항, 기본값 0.0) — 디코더의 LayerDrop 확률입니다. 자세한 내용은 [LayerDrop 논문](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) — Attention 확률에 적용할 dropout 비율입니다.
  • activation_dropout (Union[float, int], 선택 사항, 기본값 0.0) — 완전 연결 레이어 내부 활성화에 적용할 dropout 비율입니다.
  • init_std (float, 선택 사항, 기본값 0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.
  • init_xavier_std (float, 선택 사항, 기본값 1.0) — 크로스 어텐션 가중치의 Xavier 초기화에 사용되는 스케일링 계수입니다.
  • auxiliary_loss (bool, 선택 사항, 기본값 False) — 보조 디코딩 손실(각 디코더 레이어의 손실)을 사용할지 여부입니다.
  • position_embedding_type (str, 선택 사항, 기본값 "sine") — 이미지 특징 위에 사용할 위치 임베딩의 유형입니다. "sine" 또는 "learned" 중 하나입니다.
  • dilation (bool, 선택 사항, 기본값 False) — 마지막 컨볼루션 블록(DC5)에서 stride를 dilation으로 대체할지 여부입니다. use_timm_backbone = True일 때만 지원됩니다.
  • class_cost (int, 선택 사항, 기본값 1) — 헝가리안 매칭 비용에서 분류 오류의 상대적 가중치입니다.
  • bbox_cost (int, 선택 사항, 기본값 5) — 헝가리안 매칭 비용에서 L1 바운딩 박스 오차의 상대적 가중치입니다.
  • giou_cost (int, 선택 사항, 기본값 2) — 헝가리안 매칭 비용에서 일반화 IoU 손상의 상대적 가중치.
  • mask_loss_coefficient (int, 선택 사항, 기본값 1) — panoptic segmentation loss에서 focal loss의 상대적 가중치입니다.
  • dice_loss_coefficient (int, 선택 사항, 기본값 1) — panoptic segmentation loss에서 dice loss의 상대적 가중치입니다.
  • bbox_loss_coefficient (int, 선택 사항, 기본값 5) — panoptic segmentation loss에서 L1 bounding box loss의 상대적 가중치입니다.
  • giou_loss_coefficient (int, 선택 사항, 기본값 2) — panoptic segmentation loss에서 generalized IoU loss의 상대적 가중치입니다.
  • eos_coefficient (float, 선택 사항, 기본값 0.1) — 객체 감지 손실에서 ‘no-object’ 클래스의 상대 분류 가중치입니다.

이것은 MaskFormerModel의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Maskformer 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 facebook/maskformer-swin-base-ade와 유사한 설정이 생성됩니다.

Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.

예:

>>> 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_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonefpn_feature_size: int = 256mask_feature_size: int = 256no_object_weight: float = 0.1use_auxiliary_loss: bool = Falsebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonedecoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneinit_std: float = 0.02init_xavier_std: float = 1.0dice_weight: float = 1.0cross_entropy_weight: float = 1.0mask_weight: float = 20.0output_auxiliary_logits: bool | None = None )

매개변수

  • fpn_feature_size (int, 선택 사항, 기본값 256) — Feature Pyramid Network의 특징 크기입니다.
  • mask_feature_size (int, 선택 사항, 기본값 256) — 마스크의 특징 크기입니다. 이 값은 Feature Pyramid Network 특징의 크기를 지정하는 데에도 사용됩니다.
  • no_object_weight (float, 선택 사항, 기본값 0.1) — 객체 감지 손실에서 no-object 클래스의 상대 분류 가중치입니다.
  • use_auxiliary_loss (bool, 선택 사항, 기본값 False) — transformer decoder의 중간 예측을 사용하여 손실을 계산할지 여부입니다.
  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], 선택) — backbone 모델의 설정입니다.
  • decoder_config (Dict, 선택 사항) — 설정되지 않은 경우 detr-resnet-50의 기본 설정이 사용되며, transformer decoder 모델에 전달되는 설정입니다.
  • init_std (float, 선택 사항, 기본값 0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.
  • init_xavier_std (float, 선택 사항, 기본값 1.0) — 크로스 어텐션 가중치의 Xavier 초기화에 사용되는 스케일링 계수입니다.
  • dice_weight (float, 선택 사항, 기본값 1.0) — panoptic segmentation loss에서 dice loss의 상대적 가중치입니다.
  • cross_entropy_weight (float, 선택 사항, 기본값 1.0) — cross entropy loss에 적용할 가중치입니다.
  • mask_weight (float, 선택 사항, 기본값 20.0) — panoptic segmentation loss에서 focal loss의 상대적 가중치입니다.
  • output_auxiliary_logits (bool, 선택) — 모델이 auxiliary_logits를 출력할지 여부를 지정합니다.

예외

ValueError

  • ValueError — 선택한 backbone 모델 유형이 ["swin"]에 없거나 선택한 decoder 모델 유형이 ["detr"]에 없는 경우 발생

이것은 MaskFormerModel의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Maskformer 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 facebook/maskformer-swin-base-ade와 유사한 설정이 생성됩니다.

Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.

예:

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

class transformers.MaskFormerImageProcessor

< >

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

매개변수

  • 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로 설정된 경우 이미지를 재조정(rescale)하는 데 사용할 재조정 계수입니다.
  • 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, optional) — 이미지를 패딩할지 여부입니다. 패딩은 배치 내 가장 큰 크기로 수행하거나, 이미지마다 고정된 정사각형 크기로 수행합니다. 정확한 패딩 전략은 모델에 따라 달라집니다.
  • pad_size (SizeDict, kwargs, 선택 사항) — 이미지를 패딩할 크기입니다. 전처리용으로 제공된 모든 이미지 크기보다 커야 합니다. 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) — 일부 backbone은 특정 숫자로 나누어 떨어지는 이미지가 필요합니다. 값을 전달하지 않으면 Swin Transformer에서 사용된 값이 기본값으로 적용됩니다.

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

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] = Noneinstance_id_to_semantic_id: list[dict[int, int]] | dict[int, int] | None = None**kwargs: *<class 'transformers.models.maskformer.image_processing_maskformer.MaskFormerImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature

매개변수

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — 전처리할 이미지. 픽셀 값이 0에서 255 범위로 이루어진 단일 이미지 또는 배치 이미지를 기대합니다. 픽셀 값이 0에서 1 사이인 이미지를 전달하는 경우 do_rescale=False로 설정하세요.
  • segmentation_maps (ImageInput, 선택 사항) — 세그멘테이션 맵입니다.
  • instance_id_to_semantic_id (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, optional) — do_rescale이 True로 설정된 경우 이미지를 리스케일하기 위한 리스케일 팩터입니다.
  • do_normalize (bool, kwargs, optional) — 이미지를 정규화할지 여부.
  • 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, optional) — 이미지를 패딩할지 여부입니다. 패딩은 배치 내 가장 큰 크기로 수행하거나, 이미지마다 고정된 정사각형 크기로 수행합니다. 정확한 패딩 전략은 모델에 따라 달라집니다.
  • pad_size (SizeDict, kwargs, 선택 사항) — 이미지를 패딩할 크기입니다. 전처리용으로 제공된 모든 이미지 크기보다 커야 합니다. 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) — 일부 backbone은 특정 숫자로 나누어 떨어지는 이미지가 필요합니다. 값을 전달하지 않으면 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

< >

( outputstarget_sizes: list[tuple[int, int]] | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]

매개변수

  • outputs (MaskFormerForInstanceSegmentation) — 모델의 원시 출력입니다.
  • target_sizes (list[tuple[int, int]], 선택 사항) — (batch_size) 길이의 리스트로, 각 리스트 항목(tuple[int, int]])은 각 예측의 요청된 최종 크기(height, width)에 해당합니다. None으로 두면 예측 결과가 리사이즈되지 않습니다.
  • return_segmentation_scores (bool, 선택 사항, 기본값 False) — 분할 맵과 함께 분할 점수를 반환할지 여부입니다. True인 경우, 반환된 리스트의 각 요소는 SemanticSegmentationPostProcessorOutput이며, segmentation 필드(클래스 ID, shape (height, width))와 segmentation_scores 필드(shape (num_classes, height, width))를 포함합니다.

반환값

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가 지정된 경우)에 해당합니다.

MaskFormerForInstanceSegmentation의 출력을 의미 분할(semantic segmentation) 맵으로 변환합니다. PyTorch만 지원합니다.

post_process_instance_segmentation

< >

( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8target_sizes: list[tuple[int, int]] | None = Nonereturn_coco_annotation: bool | None = Falsereturn_binary_maps: bool | None = False ) → list[Dict]

매개변수

  • outputs (MaskFormerForInstanceSegmentation) — 모델의 원시 출력입니다.
  • 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를 가진 세그먼트의 예측 점수.

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

post_process_panoptic_segmentation

< >

( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8label_ids_to_fuse: set[int] | None = Nonetarget_sizes: list[tuple[int, int]] | None = None ) → list[Dict]

매개변수

  • outputs (MaskFormerForInstanceSegmentationOutput) — MaskFormerForInstanceSegmentation의 출력입니다.
  • 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인 boolean 값입니다. 동일한 클래스/라벨의 여러 인스턴스가 병합되어 단일 segment_id가 할당되었습니다.
    • score — segment_id를 가진 세그먼트의 예측 점수.

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

MaskFormerImageProcessorPil

class transformers.MaskFormerImageProcessorPil

< >

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

매개변수

  • 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로 설정된 경우 이미지를 재조정(rescale)하는 데 사용할 재조정 계수입니다.
  • 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, optional) — 이미지를 패딩할지 여부입니다. 패딩은 배치 내 가장 큰 크기로 수행하거나, 이미지마다 고정된 정사각형 크기로 수행합니다. 정확한 패딩 전략은 모델에 따라 달라집니다.
  • pad_size (SizeDict, kwargs, 선택 사항) — 이미지를 패딩할 크기입니다. 전처리용으로 제공된 모든 이미지 크기보다 커야 합니다. 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) — 일부 backbone은 특정 숫자로 나누어 떨어지는 이미지가 필요합니다. 값을 전달하지 않으면 Swin Transformer에서 사용된 값이 기본값으로 적용됩니다.

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

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] = Noneinstance_id_to_semantic_id: list[dict[int, int]] | dict[int, int] | None = None**kwargs: *<class 'transformers.models.maskformer.image_processing_pil_maskformer.MaskFormerImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature

매개변수

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — 전처리할 이미지. 픽셀 값이 0에서 255 범위로 이루어진 단일 이미지 또는 배치 이미지를 기대합니다. 픽셀 값이 0에서 1 사이인 이미지를 전달하는 경우 do_rescale=False로 설정하세요.
  • segmentation_maps (ImageInput, 선택 사항) — 세그멘테이션 맵입니다.
  • instance_id_to_semantic_id (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, optional) — do_rescale이 True로 설정된 경우 이미지를 리스케일하기 위한 리스케일 팩터입니다.
  • do_normalize (bool, kwargs, optional) — 이미지를 정규화할지 여부.
  • 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, optional) — 이미지를 패딩할지 여부입니다. 패딩은 배치 내 가장 큰 크기로 수행하거나, 이미지마다 고정된 정사각형 크기로 수행합니다. 정확한 패딩 전략은 모델에 따라 달라집니다.
  • pad_size (SizeDict, kwargs, 선택 사항) — 이미지를 패딩할 크기입니다. 전처리용으로 제공된 모든 이미지 크기보다 커야 합니다. 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) — 일부 backbone은 특정 숫자로 나누어 떨어지는 이미지가 필요합니다. 값을 전달하지 않으면 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

< >

( outputstarget_sizes: list[tuple[int, int]] | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]

매개변수

  • outputs (MaskFormerForInstanceSegmentation) — 모델의 원시 출력입니다.
  • target_sizes (list[tuple[int, int]], 선택 사항) — (batch_size) 길이의 리스트로, 각 리스트 항목(tuple[int, int]])은 각 예측의 요청된 최종 크기(height, width)에 해당합니다. None으로 두면 예측 결과가 리사이즈되지 않습니다.
  • return_segmentation_scores (bool, 선택 사항, 기본값 False) — 분할 맵과 함께 분할 점수를 반환할지 여부입니다. True인 경우, 반환된 리스트의 각 요소는 SemanticSegmentationPostProcessorOutput이며, segmentation 필드(클래스 ID, shape (height, width))와 segmentation_scores 필드(shape (num_classes, height, width))를 포함합니다.

반환값

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가 지정된 경우)에 해당합니다.

MaskFormerForInstanceSegmentation의 출력을 의미 분할(semantic segmentation) 맵으로 변환합니다. PyTorch만 지원합니다.

post_process_instance_segmentation

< >

( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8target_sizes: list[tuple[int, int]] | None = Nonereturn_coco_annotation: bool | None = Falsereturn_binary_maps: bool | None = False ) → list[Dict]

매개변수

  • outputs (MaskFormerForInstanceSegmentation) — 모델의 원시 출력입니다.
  • 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를 가진 세그먼트의 예측 점수.

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

post_process_panoptic_segmentation

< >

( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8label_ids_to_fuse: set[int] | None = Nonetarget_sizes: list[tuple[int, int]] | None = None ) → list[Dict]

매개변수

  • outputs (MaskFormerForInstanceSegmentationOutput) — MaskFormerForInstanceSegmentation의 출력입니다.
  • 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인 boolean 값입니다. 동일한 클래스/라벨의 여러 인스턴스가 병합되어 단일 segment_id가 할당되었습니다.
    • score — segment_id를 가진 세그먼트의 예측 점수.

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

MaskFormerModel

class transformers.MaskFormerModel

< >

( config: MaskFormerConfig )

매개변수

  • config (MaskFormerConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하면 모델에 연결된 가중치는 로드되지 않으며 구성만 로드됩니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

특정 헤드가 위에 없는 맨 상태의 Maskformer 모델로, 원시 hidden-states를 출력합니다.

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

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

forward

< >

( pixel_values: Tensorpixel_mask: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Noneoutput_attentions: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → MaskFormerModelOutput or tuple(torch.Tensor)

매개변수

  • pixel_values (torch.Tensor, shape (batch_size, num_channels, image_size, image_size)) — 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 MaskFormerImageProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 MaskFormerImageProcessor.call()를 참조하세요 (processor_class는 이미지 처리에 MaskFormerImageProcessor를 사용합니다).
  • pixel_mask (torch.Tensor 의 형태인 (batch_size, height, width), 선택 사항) — 패딩 픽셀 값에 대한 attention을 수행하지 않도록 하는 마스크. [0, 1] 범위에서 선택된 마스크 값: 실제 픽셀(즉, 마스크되지 않은 픽셀)은 1, 패딩 픽셀(즉, 마스크된 픽셀)은 0. attention 마스크란 무엇인가요? [0, 1]:
    • 실제 픽셀(즉, 마스크가 적용되지 않은 픽셀)에 대해 1
    • 패딩(즉, 마스크 처리된) 픽셀은 0

    어텐션 마스크란 무엇인가요?

  • output_hidden_states (bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중 hidden_states 항목을 참고하세요.
  • output_attentions (bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의 attentions 항목을 참조하세요.
  • return_dict (bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부.

반환값

MaskFormerModelOutput 또는 tuple(torch.Tensor)

torch.Tensor의 튜플 또는 MaskFormerModelOutput입니다. return_dict=False가 전달되거나 config.return_dict=False인 경우, 구성(MaskFormerConfig)과 입력에 따라 다양한 요소를 포함합니다.

MaskFormerModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • 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)) — 픽셀 디코더 모델(FPN)의 마지막 단계의 마지막 히든 스테이트(최종 피처 맵).

  • transformer_decoder_last_hidden_state (torch.Tensor, shape (batch_size, sequence_length, hidden_size)) — transformer decoder 모델의 마지막 단계의 마지막 hidden states(최종 feature map).

  • encoder_hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(임베딩 출력 1개 + 각 단계의 출력 1개)로, shape는 (batch_size, num_channels, height, width)입니다. 각 단계의 출력에서 인코더 모델의 hidden-states(또는 feature maps라고도 함).

  • pixel_decoder_hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(임베딩 출력용 1개 + 각 단계 출력용 1개)로, shape는 (batch_size, num_channels, height, width)입니다. 각 단계 출력 시점의 픽셀 디코더 모델의 hidden-states(또는 feature maps이라고도 함).

  • transformer_decoder_hidden_states (tuple(torch.Tensor), 선택, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(임베딩 출력 1개 + 각 단계의 출력 1개)로, shape이 (batch_size, sequence_length, hidden_size)입니다. 각 단계 출력 시점의 transformer decoder의 hidden-states(또는 feature maps라고도 함). hidden_states tuple(torch.Tensor), 선택, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨: encoder_hidden_states, pixel_decoder_hidden_states, decoder_hidden_states를 포함하는 torch.Tensor의 튜플

  • hidden_states (tuple[torch.Tensor], 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • 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 가중치.

예:

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

class transformers.MaskFormerForInstanceSegmentation

< >

( config: MaskFormerConfig )

forward

< >

( pixel_values: Tensormask_labels: list[torch.Tensor] | None = Noneclass_labels: list[torch.Tensor] | None = Nonepixel_mask: typing.Optional[torch.Tensor] = Noneoutput_auxiliary_logits: bool | None = Noneoutput_hidden_states: bool | None = Noneoutput_attentions: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → MaskFormerForInstanceSegmentationOutput or tuple(torch.Tensor)

매개변수

  • pixel_values (torch.Tensor, shape (batch_size, num_channels, image_size, image_size)) — 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 MaskFormerImageProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 MaskFormerImageProcessor.call()를 참조하세요 (processor_class는 이미지 처리에 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), 선택 사항) — 패딩 픽셀 값에 대한 attention을 수행하지 않도록 하는 마스크. [0, 1] 범위에서 선택된 마스크 값: 실제 픽셀(즉, 마스크되지 않은 픽셀)은 1, 패딩 픽셀(즉, 마스크된 픽셀)은 0. attention 마스크란 무엇인가요? [0, 1]:
    • 실제 픽셀(즉, 마스크가 적용되지 않은 픽셀)에 대해 1
    • 패딩(즉, 마스크 처리된) 픽셀은 0

    어텐션 마스크란 무엇인가요?

  • output_auxiliary_logits (bool, 선택 사항) — 보조 logits를 출력할지 여부.
  • output_hidden_states (bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중 hidden_states 항목을 참고하세요.
  • output_attentions (bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의 attentions 항목을 참조하세요.
  • return_dict (bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부.

반환값

MaskFormerForInstanceSegmentationOutput 또는 tuple(torch.Tensor)

torch.Tensor의 튜플 또는 MaskFormerForInstanceSegmentationOutput입니다. return_dict=False가 전달되거나 config.return_dict=False인 경우, 구성(MaskFormerConfig)과 입력에 따라 다양한 요소를 포함합니다.

MaskFormerForInstanceSegmentation의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • 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 (Dict[str, torch.Tensor], 선택, output_auxiliary_logits=True일 때 반환됨) — 보조 손실이 활성화된 경우 각 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)) — 픽셀 디코더 모델(FPN)의 마지막 단계의 마지막 히든 스테이트(최종 피처 맵).

  • transformer_decoder_last_hidden_state (torch.Tensor, shape (batch_size, sequence_length, hidden_size)) — transformer decoder 모델의 마지막 단계의 마지막 hidden states(최종 feature map).

  • encoder_hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(임베딩 출력 1개 + 각 단계의 출력 1개)로, shape는 (batch_size, num_channels, height, width)입니다. 각 단계의 출력에서 인코더 모델의 hidden-states(또는 feature maps라고도 함).

  • pixel_decoder_hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(임베딩 출력용 1개 + 각 단계 출력용 1개)로, shape는 (batch_size, num_channels, height, width)입니다. 각 단계 출력 시점의 픽셀 디코더 모델의 hidden-states(또는 feature maps이라고도 함).

  • transformer_decoder_hidden_states (tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(임베딩 출력용 1개 + 각 단계 출력용 1개)로, shape는 (batch_size, sequence_length, hidden_size)입니다. 각 단계 출력 시점의 transformer decoder hidden-states입니다. hidden_states tuple(torch.Tensor), 선택 사항, output_hidden_states=True가 전달되었거나 config.output_hidden_states=True인 경우 반환됨: encoder_hidden_states, pixel_decoder_hidden_states, decoder_hidden_states를 포함하는 torch.Tensor의 튜플입니다.

  • hidden_states (tuple[torch.Tensor], 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • 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 가중치.

예:

의미 분할 예시:

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

Panoptic segmentation 예시:

>>> 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]
Update on GitHub