# Hiera

## 개요

Hiera는 Chaitanya Ryali, Yuan-Ting Hu, Daniel Bolya, Chen Wei, Haoqi Fan, Po-Yao Huang, Vaibhav Aggarwal, Arkabandhu Chowdhury, Omid Poursaeed, Judy Hoffman, Jitendra Malik, Yanghao Li, Christoph Feichtenhofer가 [Hiera: A Hierarchical Vision Transformer without the Bells-and-Whistles](https://huggingface.co/papers/2306.00989)에서 제안했습니다.

이 논문은 "Hiera"를 소개합니다. Hiera는 정확도나 효율성을 해치지 않으면서도 불필요한 구성 요소를 제거하여 현대적인 계층형 Vision Transformer의 아키텍처를 단순화한 계층형 Vision Transformer입니다. 전통적인 Transformer는 지도 분류 성능을 향상시키기 위해 복잡한 비전 전용 구성 요소를 추가하는 반면, Hiera는 이러한 추가 요소(흔히 "bells-and-whistles"라고 불림)가 높은 정확도에 필수적이지 않음을 보여줍니다. 강력한 시각적 pretext task(MAE)를 활용한 사전 학습을 통해 Hiera는 단순성을 유지하면서 다양한 이미지 및 비디오 인식 작업에서 추론과 학습 모두에 걸쳐 우수한 정확도와 속도를 달성합니다. 이 접근법은 비전 작업에 필요한 공간적 편향(spatial biases)이 적절한 사전 학습을 통해 효과적으로 학습될 수 있음을 시사하며, 아키텍처 복잡성을 추가할 필요가 없음을 보여줍니다.

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

*현대 계층형 비전 트랜스포머는 지도 분류 성능을 추구하면서 여러 비전 전용 구성 요소를 추가했습니다. 이러한 구성 요소는 효과적인 정확도와 매력적인 FLOP 수를 제공하지만, 추가된 복잡성으로 인해 실제로는 일반 ViT 대비 더 느려집니다. 본 논문에서는 이러한 추가 부피가 불필요하다고 주장합니다. 강력한 시각 사전 작업(MAE)으로 사전 학습을 수행하면, 정확도를 유지하면서 최첨단 다단계 비전 트랜스포머에서 모든 부가 기능을 제거할 수 있습니다. 이 과정에서, 추론과 학습 모두에서 기존 모델보다 훨씬 빠르면서 더 높은 정확도를 달성하는 매우 단순한 계층형 비전 트랜스포머인 Hiera를 만들었습니다. Hiera는 이미지 및 비디오 인식의 다양한 작업에서 평가했습니다. 코드와 모델은 https://github.com/facebookresearch/hiera에서 사용할 수 있습니다.*

<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/hiera_overview.png"
alt="drawing" width="600"/>

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

이 모델은 [EduardoPacheco](https://huggingface.co/EduardoPacheco)와 [namangarg110](https://huggingface.co/namangarg110)의 공동 기여로 개발되었습니다. 원본 코드는 [여기](https://github.com/facebookresearch/hiera)에서 확인할 수 있습니다.

## 리소스

Hiera를 시작하는 데 도움이 되는 공식 Hugging Face 및 커뮤니티(🌎로 표시) 리소스 목록입니다. 여기에 포함할 리소스를 제출하고 싶으시면 Pull Request를 열어 주시면 검토하겠습니다! 리소스는 기존 리소스와 중복되는 것 대신에 새로운 것을 보여주는 것이 이상적입니다.

- [HieraForImageClassification](/docs/transformers/main/ko/model_doc/hiera#transformers.HieraForImageClassification)은 이 [노트북](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/image_classification.ipynb)에서 지원됩니다.
- 참고: [이미지 분류 작업 가이드](../tasks/image_classification)

## HieraConfig[[transformers.HieraConfig]]

#### transformers.HieraConfig[[transformers.HieraConfig]]

```python
transformers.HieraConfig(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, embed_dim: int = 96, image_size: list[int] | tuple[int, ...] = (224, 224), patch_size: list[int] | tuple[int, ...] = (7, 7), patch_stride: list[int] | tuple[int, ...] = (4, 4), patch_padding: list[int] | tuple[int, ...] = (3, 3), mlp_ratio: float = 4.0, depths: list[int] | tuple[int, ...] = (2, 3, 16, 3), num_heads: list[int] | tuple[int, ...] = (1, 2, 4, 8), embed_dim_multiplier: float | int = 2.0, num_query_pool: int = 3, query_stride: list[int] | tuple[int, ...] = (2, 2), masked_unit_size: list[int] | tuple[int, ...] = (8, 8), masked_unit_attention: list[bool] | tuple[bool, ...] = (True, True, False, False), drop_path_rate: float | int = 0.0, num_channels: int = 3, hidden_act: str = 'gelu', initializer_range: float = 0.02, layer_norm_init: float = 1.0, layer_norm_eps: float = 1e-06, decoder_hidden_size: int | None = None, decoder_depth: int | None = None, decoder_num_heads: int | None = None, normalize_pixel_loss: bool | None = True, mask_ratio: float = 0.6, _out_features: list[str] | None = None, _out_indices: list[int] | None = None)
```

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

**매개변수:**

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

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

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

patch_stride (`list(int)`, *선택 사항*, 기본값 `[4, 4]`) : 패치의 스트라이드입니다.

patch_padding (`list(int)`, *선택 사항*, 기본값 `[3, 3]`) : 패치의 패딩입니다.

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

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

num_heads (`list(int)`, *선택 사항*, 기본값 `[1, 2, 4, 8]`) : Transformer 인코더의 각 레이어에 있는 어텐션 헤드 수입니다.

embed_dim_multiplier (`float`, *선택 사항*, 기본값 2.0) : Transformer 인코더의 각 레이어에서 패치 임베딩의 차원에 적용되는 배율입니다.

num_query_pool (`int`, *선택 사항*, 기본값 3) : 쿼리 풀 단계의 수입니다.

query_stride (`list(int)`, *선택 사항*, 기본값 `[2, 2]`) : 쿼리 풀의 스트라이드입니다.

masked_unit_size (`list(int)`, *선택 사항*, 기본값 `[8, 8]`) : 마스킹된 유닛의 크기입니다.

masked_unit_attention (`list(bool)`, *선택 사항*, 기본값 `[True, True, False, False]`) : Transformer 인코더의 각 레이어에서 masked unit attention을 사용할지 여부입니다.

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

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

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

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

layer_norm_init (`float`, *선택 사항*, 기본값 1.0) : 레이어 정규화 레이어의 초기 가중치 값입니다.

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

decoder_hidden_size (`int`, *선택 사항*) : 숨겨진 표현의 차원.

decoder_depth (`int`, *선택 사항*) : MAE 사전 학습을 위한 디코더의 깊이.

decoder_num_heads (`int`, *선택 사항*) : Transformer 디코더의 각 어텐션 레이어에 사용할 어텐션 헤드 수.

normalize_pixel_loss (`bool`, *선택 사항*, 기본값 `True`) : 픽셀 손실을 픽셀 수로 정규화할지 여부.

mask_ratio (`float`, *선택 사항*, 기본값 0.6) : 입력에서 마스킹된 토큰의 비율입니다.

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

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 HieraConfig, HieraModel

>>> # Initializing a Hiera hiera-base-patch16-224 style configuration
>>> configuration = HieraConfig()

>>> # Initializing a model (with random weights) from the hiera-base-patch16-224 style configuration
>>> model = HieraModel(configuration)

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

## HieraModel[[transformers.HieraModel]]

#### transformers.HieraModel[[transformers.HieraModel]]

```python
transformers.HieraModel(config: HieraConfig, add_pooling_layer: bool = True, is_mae: bool = False)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/hiera/modeling_hiera.py#L800)

**매개변수:**

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

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

is_mae (`bool`, *선택 사항*, 기본값 `False`) : 모델을 MAE 모드로 실행할지 여부.

…

이 모델은 [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.HieraModel.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/hiera/modeling_hiera.py#L824)

**매개변수:**

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)를 사용합니다).

noise (`torch.Tensor`, shape `(batch_size, num_mask_units)`, *선택 사항*) : 주로 테스트 목적으로 사용되며, 무작위성을 제어하고 재현성을 유지하는 데

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

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

interpolate_pos_encoding (`bool`, *선택 사항*) : 사전 학습된 위치 인코딩을 보간할지 여부.

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

**반환값:** [BaseModelOutputWithPooling](/docs/transformers/main/ko/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) 또는 `tuple(torch.Tensor)`

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

[HieraModel](/docs/transformers/main/ko/model_doc/hiera#transformers.HieraModel)의 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)`) -- 시퀀스의 첫 번째 토큰(분류 토큰)의 마지막 레이어 hidden-state입니다. 보조 사전학습 작업을 위해 사용되는 레이어들을 통해 추가 처리된 값입니다. 예를 들어 BERT 계열 모델의 경우, 선형 레이어와 tanh 활성화 함수를 통해 처리된 분류 토큰을 반환합니다. 선형 레이어의 가중치는 사전학습 단계에서 다음 문장 예측(분류) 목적 함수를 통해 학습됩니다.
- **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 가중치입니다.

예:

```python
```

## HieraForPreTraining[[transformers.HieraForPreTraining]]

#### transformers.HieraForPreTraining[[transformers.HieraForPreTraining]]

```python
transformers.HieraForPreTraining(config: HieraConfig)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/hiera/modeling_hiera.py#L1061)

**매개변수:**

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

self-supervised pre-training을 위해 상단에 decoder가 있는 Hiera Model transformer.

이 모델은 [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.HieraForPreTraining.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/hiera/modeling_hiera.py#L1102)

**매개변수:**

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)를 사용합니다).

noise (`torch.Tensor`, shape `(batch_size, num_mask_units)`, *선택 사항*) : 주로 테스트 목적으로 사용되며, 무작위성을 제어하고 재현성을 유지하는 데

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

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

interpolate_pos_encoding (`bool`, *선택 사항*) : 사전 학습된 위치 인코딩을 보간할지 여부.

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

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

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

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

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

- **loss** (`torch.Tensor`, shape `(1,)`) -- 픽셀 재구성 손실.
- **logits** (`torch.Tensor`, shape `(batch_size, sequence_length, patch_size ** 2 * num_channels)`) -- 픽셀 재구성 logits.
- **bool_masked_pos** (`torch.BoolTensor`, shape `(batch_size, sequence_length)`) -- 어떤 패치가 마스킹된(0) 상태이고 어떤 패치가 마스킹되지 않은(1) 상태인지를 나타내는 텐서.
- **ids_restore** (`torch.LongTensor`, shape `(batch_size, sequence_length)`) -- (셔플된) 마스킹된 패치의 원래 인덱스를 포함하는 텐서.
- **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 가중치입니다.
- **reshaped_hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`가 전달되거나 `config.output_hidden_states=True`인 경우 반환됨) -- `torch.Tensor`의 튜플(임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은 `(batch_size, height, width, hidden_size)`입니다. 각 레이어 출력에서의 모델 히든 스테이트와 초기 임베딩 출력을 공간 차원을 포함하도록 리셰이프한 값입니다.

예:
```python
>>> from transformers import AutoImageProcessor, HieraForPreTraining
>>> 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("facebook/hiera-tiny-224-mae-hf")
>>> model = HieraForPreTraining.from_pretrained("facebook/hiera-tiny-224-mae-hf")

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

>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> loss = outputs.loss
>>> print(list(logits.shape))
[1, 196, 768]
```

## HieraForImageClassification[[transformers.HieraForImageClassification]]

#### transformers.HieraForImageClassification[[transformers.HieraForImageClassification]]

```python
transformers.HieraForImageClassification(config: HieraConfig)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/hiera/modeling_hiera.py#L1207)

**매개변수:**

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

ImageNet과 같은 작업에 사용할 수 있도록, 최종 숨겨진 상태 위의 평균 풀링을 기반으로 한 선형 레이어가 있는 이미지 분류 헤드가 위에 있는 Hiera Model transformer

모델의 forward에서 `interpolate_pos_encoding`을 `True`로 설정하면, 학습에 사용된 해상도보다 높은 해상도의 이미지로 Hiera를 fine-tune할 수 있습니다. 이렇게 하면 사전 학습된 position embeddings이 더 높은 해상도에 맞게 보간됩니다.

이 모델은 [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.HieraForImageClassification.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/hiera/modeling_hiera.py#L1222)

**매개변수:**

pixel_values (`` of shape `(batch_size, num_channels, image_size, image_size)`) : The tensors corresponding to the input images. Pixel values can be obtained using [BitImageProcessor](/docs/transformers/main/ko/model_doc/bit#transformers.BitImageProcessor). See [BitImageProcessor.__call__()](/docs/transformers/main/ko/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) for details (`processor_class` uses [BitImageProcessor](/docs/transformers/main/ko/model_doc/bit#transformers.BitImageProcessor) for processing images).

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

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

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

interpolate_pos_encoding (`bool`, *선택 사항*) : 사전 학습된 위치 인코딩을 보간할지 여부.

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

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

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

[HieraForImageClassification](/docs/transformers/main/ko/model_doc/hiera#transformers.HieraForImageClassification)의 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개)로, shape이 `(batch_size, sequence_length, hidden_size)`입니다. 각 단계 출력 시점의 모델 hidden-states(또는 feature maps)입니다.
- **attentions** (`tuple(torch.Tensor)`, *선택 사항*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환) -- 각 레이어당 하나씩, shape가 `(batch_size, num_heads, patch_size, sequence_length)`인 `torch.Tensor`의 튜플.

  self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치입니다.
- **reshaped_hidden_states** (`tuple(torch.Tensor)`, `optional`) -- `torch.Tensor`의 튜플(임베딩 출력 1개 + 각 스테이지 출력 1개)로, 모양은 `(batch_size, height, width, hidden_size)`입니다. 이는 모델의 리셰이핑 및 리롤링된 히든 스테이트입니다.

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

예:

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

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

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/hiera-base-224")
>>> model = HieraForImageClassification.from_pretrained("facebook/hiera-base-224")

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

