# FocalNet

## 개요

FocalNet 모델은 Jianwei Yang, Chunyuan Li, Xiyang Dai, Lu Yuan, Jianfeng Gao가 [Focal Modulation Networks](https://huggingface.co/papers/2203.11926)에서 제안했습니다. FocalNet은 비전에서 토큰 상호작용을 모델링하기 위해 [ViT](vit)와 [Swin](swin)와 같은 모델에서 사용되는 self-attention을 완전히 focal modulation 메커니즘으로 대체합니다. 저자들은 FocalNet이 유사한 계산 비용으로 이미지 분류, 객체 감지, 분할 작업에서 self-attention 기반 모델보다 우수한 성능을 보인다고 주장합니다.

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

*시각에서 토큰 상호작용을 모델링하기 위해 셀프 어텐션(SA)을 완전히 초점 모듈레이션 메커니즘으로 대체하는 초점 모듈레이션 네트워크(FocalNets)를 제안합니다. 초점 모듈레이션은 세 가지 구성 요소로 이루어져 있습니다: (i) 짧은 범위에서 긴 범위에 이르는 시각적 컨텍스트를 인코딩하기 위해 딥스 와이즈 컨볼루션 레이어 스택을 사용하여 구현된 계층적 컨텍스트화, (ii) 각 쿼리 토큰의 콘텐츠에 기반하여 컨텍스트를 선택적으로 수집하는 게이트드 어그리게이션, (iii) 집계된 컨텍스트를 쿼리에 주입하기 위한 요소별 모듈레이션 또는 아핀 변환. 광범위한 실험 결과, FocalNets는 이미지 분류, 객체 감지, 분할 작업에서 유사한 계산 비용으로 최첨단 SA 대응 모델(예: Swin 및 Focal Transformers)보다 우수한 성능을 보였습니다. 구체적으로, tiny 및 base 크기의 FocalNets는 ImageNet-1K에서 각각 82.3% 및 83.9%의 top-1 정확도를 달성했습니다. 224 해상도로 ImageNet-22K에서 사전 학습된 후, 각각 224 및 384 해상도로 미세 조정할 때 86.5% 및 87.3%의 top-1 정확도를 달성했습니다. 다운스트림 작업으로 이전할 때 FocalNets는 명확한 우월성을 보였습니다. Mask R-CNN을 사용한 객체 감지에서, 1\times로 학습된 FocalNet base는 Swin 대응 모델보다 2.1포인트 높고, 이미 3\times 스케줄로 학습된 Swin을 능가합니다(49.0 대 48.5). UPerNet을 사용한 의미론적 분할에서, 단일 스케일의 FocalNet base는 Swin보다 2.4 높고, 멀티 스케일의 Swin을 이깁니다(50.5 대 49.7). 대형 FocalNet과 Mask2former를 사용하여 ADE20K 의미론적 분할에서 58.5 mIoU, COCO 팬옵틱 분할에서 57.9 PQ를 달성했습니다. 대형 FocalNet과 DINO를 사용하여 COCO minival과 test-dev에서 각각 64.3 및 64.4 mAP를 달성하여, Swinv2-G 및 BEIT-3와 같이 훨씬 더 큰 어텐션 기반 모델 위에 새로운 SoTA를 수립했습니다.*

이 모델은 [nielsr](https://huggingface.co/nielsr)에 의해 기여되었습니다. 원본 코드는 [여기](https://github.com/microsoft/FocalNet)에서 찾을 수 있습니다.

## FocalNetConfig[[transformers.FocalNetConfig]]

#### transformers.FocalNetConfig[[transformers.FocalNetConfig]]

```python
transformers.FocalNetConfig(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, image_size: int | list[int] | tuple[int, int] = 224, patch_size: int | list[int] | tuple[int, int] = 4, num_channels: int = 3, embed_dim: int = 96, use_conv_embed: bool = False, hidden_sizes: list[int] | tuple[int, ...] = (192, 384, 768, 768), depths: list[int] | tuple[int, ...] = (2, 2, 6, 2), focal_levels: list[int] | tuple[int, ...] = (2, 2, 2, 2), focal_windows: list[int] | tuple[int, ...] = (3, 3, 3, 3), hidden_act: str = 'gelu', mlp_ratio: float = 4.0, hidden_dropout_prob: float | int = 0.0, drop_path_rate: float | int = 0.1, use_layerscale: bool = False, layerscale_value: float = 0.0001, use_post_layernorm: bool = False, use_post_layernorm_in_modulation: bool = False, normalize_modulator: bool = False, initializer_range: float = 0.02, layer_norm_eps: float = 1e-05, encoder_stride: int = 32, _out_features: list[str] | None = None, _out_indices: list[int] | None = None)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/focalnet/configuration_focalnet.py#L25)

**매개변수:**

image_size (`Union[int, list[int], tuple[int, int]]`, *선택*, 기본값 `224`) : 각 이미지의 크기(해상도).

patch_size (`Union[int, list[int], tuple[int, int]]`, *선택 사항*, 기본값 `4`) : 각 패치의 크기(해상도).

num_channels (`int`, *선택 사항*, 기본값 `3`) : 입력 채널의 수입니다.

embed_dim (`int`, *선택 사항*, 기본값 `96`) : 임베딩 및 숨겨진 상태의 차원.

use_conv_embed (`bool`, *선택 사항*, 기본값 `False`) : 컨볼루션 임베딩을 사용할지 여부입니다. 저자들은 컨볼루션 임베딩을 사용하면 일반적으로 성능이 향상된다고 언급했지만, 기본적으로는 사용하지 않습니다.

hidden_sizes (`Union[list[int], tuple[int, ...]]`, *선택 사항*, 기본값 `(192, 384, 768, 768)`) : 모델의 각 단계별 차원(hidden size).

depths (`Union[list[int], tuple[int, ...]]`, *선택 사항*, 기본값 `(2, 2, 6, 2)`) : Transformer의 각 레이어 깊이.

focal_levels (`list(int)`, *선택 사항*, 기본값 `[2, 2, 2, 2]`) : 인코더의 각 단계에서 해당 레이어의 초점 레벨 수입니다.

focal_windows (`list(int)`, *선택 사항*, 기본값 `[3, 3, 3, 3]`) : 인코더의 각 단계에서 해당 레이어의 Focal 윈도우 크기입니다.

hidden_act (`str`, *선택 사항*, 기본값 `gelu`) : 디코더에서 사용되는 비선형 활성화 함수(함수 또는 문자열). 예를 들어, `"gelu"`, `"relu"`, `"silu"` 등이 있습니다.

mlp_ratio (`float`, *선택 사항*, 기본값 `4.0`) : MLP 숨겨진 차원과 임베딩 차원의 비율입니다.

hidden_dropout_prob (`float`, *선택 사항*, 기본값 0.0) : 임베딩 및 인코더의 모든 완전 연결 계층에 적용되는 dropout 확률입니다.

drop_path_rate (`Union[float, int]`, *선택 사항*, 기본값 `0.1`) : 패치 퓨전(drop path)에 사용할 드롭 패스 비율입니다.

use_layerscale (`bool`, *선택 사항*, 기본값 `False`) : 인코더에서 layer scale을 사용할지 여부.

layerscale_value (`float`, *선택 사항*, 기본값 0.0001) : 레이어 스케일의 초기 값입니다.

use_post_layernorm (`bool`, *선택 사항*, 기본값 `False`) : 인코더에서 post layer normalization을 사용할지 여부.

use_post_layernorm_in_modulation (`bool`, *선택 사항*, 기본값 `False`) : modulation layer에서 post layer normalization을 사용할지 여부.

normalize_modulator (`bool`, *선택 사항*, 기본값 `False`) : modulator를 정규화할지 여부.

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

layer_norm_eps (`float`, *선택 사항*, 기본값 `1e-05`) : layer normalization 레이어에서 사용되는 epsilon 값입니다.

encoder_stride (`int`, *선택 사항*, 기본값 32) : masked image modeling을 위한 decoder head에서 공간 해상도를 높이기 위한 배율입니다.

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

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

예:

```python
>>> from transformers import FocalNetConfig, FocalNetModel

>>> # Initializing a FocalNet microsoft/focalnet-tiny style configuration
>>> configuration = FocalNetConfig()

>>> # Initializing a model (with random weights) from the microsoft/focalnet-tiny style configuration
>>> model = FocalNetModel(configuration)

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

## FocalNetModel[[transformers.FocalNetModel]]

#### transformers.FocalNetModel[[transformers.FocalNetModel]]

```python
transformers.FocalNetModel(config: FocalNetConfig, add_pooling_layer = True, use_mask_token = False)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/focalnet/modeling_focalnet.py#L592)

**매개변수:**

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

add_pooling_layer (`bool`, *선택 사항*, 기본값 `True`) : 풀링 레이어를 추가할지 여부

use_mask_token (`bool`, *선택 사항*, 기본값 `False`) : masked image modeling에 mask token을 사용할지 여부입니다.

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

이 모델은 [PreTrainedModel](/docs/transformers/main/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.FocalNetModel.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/focalnet/modeling_focalnet.py#L617)

**매개변수:**

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

bool_masked_pos (`torch.BoolTensor`, shape `(batch_size, num_patches)`) : Boolean masked positions. 어떤 patch가 mask되어 있는지(1) 아니면 그렇지 않은지(0)를 나타냅니다.

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

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

**반환값:** `FocalNetModelOutput` 또는 `tuple(torch.Tensor)`

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

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

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

- **last_hidden_state** (`torch.Tensor`, shape `(batch_size, sequence_length, hidden_size)`, *선택 사항*) -- 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.
- **pooler_output** (`torch.Tensor`, shape `(batch_size, hidden_size)`, *선택 사항*, `add_pooling_layer=True`가 전달될 때 반환됨) -- 마지막 레이어 hidden-state의 평균 풀링.
- **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와 선택적 초기 임베딩 출력을 포함합니다.
- **reshaped_hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`가 전달되거나 `config.output_hidden_states=True`인 경우 반환됨) -- shape가 `(batch_size, hidden_size, height, width)`인 `torch.Tensor` 튜플 (임베딩 출력 1개 + 각 단계의 출력 1개).

  각 레이어의 출력에서 모델의 Hidden-states와 공간 차원을 포함하도록 재구성된 초기 임베딩 출력.

예:

```python
```

## FocalNetForMaskedImageModeling[[transformers.FocalNetForMaskedImageModeling]]

#### transformers.FocalNetForMaskedImageModeling[[transformers.FocalNetForMaskedImageModeling]]

```python
transformers.FocalNetForMaskedImageModeling(config: FocalNetConfig)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/focalnet/modeling_focalnet.py#L675)

**매개변수:**

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

마스크 이미지 모델링을 위해 상단에 디코더가 있는 FocalNet 모델.

이것은 [SimMIM](https://huggingface.co/papers/2111.09886)의 구현과 동일한 방식을 따릅니다.

이 모델은 [PreTrainedModel](/docs/transformers/main/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.FocalNetForMaskedImageModeling.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/focalnet/modeling_focalnet.py#L693)

**매개변수:**

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

bool_masked_pos (`torch.BoolTensor`, shape `(batch_size, num_patches)`) : Boolean masked positions. 어떤 patch가 mask되어 있는지(1) 아니면 그렇지 않은지(0)를 나타냅니다.

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

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

**반환값:** `FocalNetMaskedImageModelingOutput` 또는 `tuple(torch.Tensor)`

`FocalNetMaskedImageModelingOutput` 또는 `torch.Tensor`의 튜플(`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우)로, [FocalNetConfig](/docs/transformers/main/ko/model_doc/focalnet#transformers.FocalNetConfig) 및 입력에 따라 다양한 요소를 포함합니다.

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

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

- **loss** (`torch.Tensor`, shape `(1,)`, *선택 사항*, `bool_masked_pos`가 제공될 때 반환됨) -- Masked image modeling (MLM) 손실.
- **reconstruction** (`torch.Tensor`, shape `(batch_size, num_channels, height, width)`) -- 재구성된 픽셀 값.
- **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와 선택적 초기 임베딩 출력을 포함합니다.
- **reshaped_hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`가 전달되거나 `config.output_hidden_states=True`인 경우 반환됨) -- shape가 `(batch_size, hidden_size, height, width)`인 `torch.Tensor` 튜플 (임베딩 출력 1개 + 각 단계의 출력 1개).

  각 레이어의 출력에서 모델의 Hidden-states와 공간 차원을 포함하도록 재구성된 초기 임베딩 출력.

예:
```python
>>> from transformers import AutoImageProcessor, FocalNetConfig, FocalNetForMaskedImageModeling
>>> import torch
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

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

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/focalnet-base-simmim-window6-192")
>>> config = FocalNetConfig()
>>> model = FocalNetForMaskedImageModeling(config)

>>> num_patches = (model.config.image_size // model.config.patch_size) ** 2
>>> pixel_values = image_processor(images=image, return_tensors="pt").pixel_values
>>> # create random boolean mask of shape (batch_size, num_patches)
>>> bool_masked_pos = torch.randint(low=0, high=2, size=(1, num_patches)).bool()

>>> outputs = model(pixel_values, bool_masked_pos=bool_masked_pos)
>>> loss, reconstructed_pixel_values = outputs.loss, outputs.logits
>>> list(reconstructed_pixel_values.shape)
[1, 3, 192, 192]
```

## FocalNetForImageClassification[[transformers.FocalNetForImageClassification]]

#### transformers.FocalNetForImageClassification[[transformers.FocalNetForImageClassification]]

```python
transformers.FocalNetForImageClassification(config: FocalNetConfig)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/focalnet/modeling_focalnet.py#L782)

**매개변수:**

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

FocalNet 모델은 상단에 이미지 분류 헤드가 있는 경우, 예를 들어 ImageNet을 위한 경우, 풀링된 출력 위에 선형 레이어가 있습니다.

이 모델은 [PreTrainedModel](/docs/transformers/main/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.FocalNetForImageClassification.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/focalnet/modeling_focalnet.py#L798)

**매개변수:**

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

labels (`torch.LongTensor`, shape `(batch_size,)`, *선택 사항*) : 이미지 분류/회귀 손실을 계산하는 데 사용되는 라벨. 인덱스는 `[0, ..., config.num_labels - 1]` 범위에 있어야 합니다. `config.num_labels == 1`인 경우 회귀 손실(평균 제곱 손실)이 계산되고, `config.num_labels > 1`인 경우 분류 손실(크로스 엔트로피)이 계산됩니다.

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

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

**반환값:** `FocalNetImageClassifierOutput` 또는 `tuple(torch.Tensor)`

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

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

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

- **loss** (`torch.Tensor`, shape `(1,)`, *선택*, `labels`이 제공될 때 반환됨) -- 분류(또는 config.num_labels==1인 경우 회귀) 손실.
- **logits** (`torch.Tensor`, shape `(batch_size, config.num_labels)`) -- SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수.
- **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와 선택적 초기 임베딩 출력을 포함합니다.
- **reshaped_hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`가 전달되거나 `config.output_hidden_states=True`인 경우 반환됨) -- shape가 `(batch_size, hidden_size, height, width)`인 `torch.Tensor` 튜플 (임베딩 출력 1개 + 각 단계의 출력 1개).

  각 레이어의 출력에서 모델의 Hidden-states와 공간 차원을 포함하도록 재구성된 초기 임베딩 출력.

예:

```python
>>> from transformers import AutoImageProcessor, FocalNetForImageClassification
>>> import torch
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/focalnet-tiny")
>>> model = FocalNetForImageClassification.from_pretrained("microsoft/focalnet-tiny")

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

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = logits.argmax(-1).item()
>>> print(model.config.id2label[predicted_label])
...
```

