# FocalNet

## Genel Bakış

FocalNet modeli, Jianwei Yang, Chunyuan Li, Xiyang Dai, Lu Yuan ve Jianfeng Gao tarafından [Focal Modulation Networks](https://huggingface.co/papers/2203.11926) makalesinde önerilmiştir. FocalNets, görü işlemlerinde token etkileşimlerini modellemek için [ViT](vit) ve [Swin](swin) gibi modellerde kullanılan öz-dikkati (self-attention) tamamen bir odak modülasyonu mekanizmasıyla değiştirir. Yazarlar, FocalNets'in benzer hesaplama maliyetleriyle, görüntü sınıflandırma, nesne algılama ve segmentasyon görevlerinde öz-dikkat tabanlı modellerden daha iyi performans gösterdiğini iddia etmektedir.

Makalenin özeti aşağıdaki gibidir:

*Focal modülasyon ağlarını (kısaltılmış adıyla FocalNets) öneriyoruz; bu ağlarda, görüde token etkileşimlerini modellemek için öz-dikkat (SA) tamamen bir odak modülasyon mekanizmasıyla değiştirilmektedir. Odak modülasyon üç bileşenden oluşur: (i) kısa ve uzun menzilli görsel bağlamları kodlamak için derinlik içi konvolüsyon katmanlarından oluşan bir yığın kullanılarak uygulanan hiyerarşik bağlamsallaştırma, (ii) her sorgu token'ı için içeriğine göre bağlamları seçici olarak toplamak için kapılı toplanma ve (iii) toplanan bağlamı sorguya enjekte etmek için eleman bazlı modülasyon veya afin dönüşüm. Kapsamlı deneyler, FocalNets'in görüntü sınıflandırma, nesne algılama ve segmentasyon görevlerinde benzer hesaplama maliyetleriyle en iyi SA muadillerini (ör. Swin ve Focal Transformers) geride bıraktığını göstermektedir. Özellikle, tiny ve base boyutundaki FocalNets, ImageNet-1K üzerinde sırasıyla %82,3 ve %83,9 top-1 doğruluğa ulaşmaktadır. 224 çözünürlükte ImageNet-22K üzerinde ön eğitildikten sonra, sırasıyla 224 ve 384 çözünürlükte ince ayar yapıldığında %86,5 ve %87,3 top-1 doğruluğa erişmektedir. Aşağı akış görevlerine aktarıldığında FocalNets açık bir üstünlük sergilemektedir. Mask R-CNN ile nesne algılamada, 1\times ile eğitilen FocalNet base, Swin muadilini 2,1 puan geride bırakmakta ve 3\times zaman çizelgesiyle eğitilen Swin'i zaten geçmektedir (49,0 v.s. 48,5). UPerNet ile anlamsal segmentasyonda, tek ölçekli FocalNet base, Swin'i 2,4 puan geride bırakmakta ve çok ölçekli Swin'i geçmektedir (50,5 v.s. 49,7). Büyük FocalNet ve Mask2former kullanarak ADE20K anlamsal segmentasyonunda 58,5 mIoU ve COCO Panoptic Segmentasyonda 57,9 PQ elde ediyoruz. Dev FocalNet ve DINO kullanarak COCO minival ve test-dev üzerinde sırasıyla 64,3 ve 64,4 mAP elde ettik; bu da Swinv2-G ve BEIT-3 gibi çok daha büyük dikkat tabanlı modellerin üzerine yeni SoTA'lar kurmaktadır.*

Bu model [nielsr](https://huggingface.co/nielsr) tarafından katkıda bulunmuştur. Orijinal kod [burada](https://github.com/microsoft/FocalNet) bulunabilir.

## 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)
```

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

**Parametreler:**

image_size (`Union[int, list[int], tuple[int, int]]`, *isteğe bağlı*, varsayılan `224`) : Her bir görüntünün boyutu (çözünürlüğü).

patch_size (`Union[int, list[int], tuple[int, int]]`, *isteğe bağlı*, varsayılan `4`) : Her yamanın boyutu (çözünürlüğü).

num_channels (`int`, *opsiyonel*, varsayılan `3`) : Girdi kanal sayısı.

embed_dim (`int`, *isteğe bağlı*, varsayılan `96`) : Gömme ve gizli durumların boyutluluğu.

use_conv_embed (`bool`, *isteğe bağlı*, varsayılan `False`) : Konvolüsyonel gömme kullanılıp kullanılmayacağı. Yazarlar, konvolüsyonel gömme kullanımının genellikle performansı artırdığını belirtmiş, ancak varsayılan olarak kullanılmadığını ifade etmiştir.

hidden_sizes (`Union[list[int], tuple[int, ...]]`, *isteğe bağlı*, varsayılan `(192, 384, 768, 768)`) : Modelin her aşamasındaki boyut (gizli boyut).

depths (`Union[list[int], tuple[int, ...]]`, *isteğe bağlı*, varsayılan `(2, 2, 6, 2)`) : Transformer'daki her katmanın derinliği.

focal_levels (`list(int)`, *isteğe bağlı*, varsayılan `[2, 2, 2, 2]`) : Kodlayıcıdaki ilgili aşamaların her katmanındaki odak seviyesi sayısı.

focal_windows (`list(int)`, *isteğe bağlı*, varsayılan `[3, 3, 3, 3]`) : Kodlayıcıdaki ilgili aşamaların her katmanındaki odak pencere boyutu.

hidden_act (`str`, *isteğe bağlı*, varsayılan `gelu`) : Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, `"gelu"`, `"relu"`, `"silu"` vb.

mlp_ratio (`float`, *isteğe bağlı*, varsayılan `4.0`) : MLP gizli boyutunun gömme boyutuna oranı.

hidden_dropout_prob (`float`, *opsiyonel*, varsayılan 0.0) : Gömme ve kodlayıcıdaki tüm tam bağlı katmanlar için dropout olasılığı.

drop_path_rate (`Union[float, int]`, *isteğe bağlı*, varsayılan `0.1`) : Yama birleştirme için drop path oranı.

use_layerscale (`bool`, *isteğe bağlı*, varsayılan `False`) : Kodlayıcıda katman ölçeğinin (layer scale) kullanılıp kullanılmayacağı.

layerscale_value (`float`, *opsiyonel*, varsayılan 0.0001) : Katman ölçeğinin başlangıç değeri.

use_post_layernorm (`bool`, *isteğe bağlı*, varsayılan `False`) : Kodlayıcıda katman sonrası normalizasyonun kullanılıp kullanılmayacağı.

use_post_layernorm_in_modulation (`bool`, *isteğe bağlı*, varsayılan `False`) : Modülasyon katmanında katman sonrası normalizasyonun kullanılıp kullanılmayacağı.

normalize_modulator (`bool`, *isteğe bağlı*, varsayılan `False`) : Modülatörün normalize edilip edilmeyeceğini belirtir.

initializer_range (`float`, *opsiyonel*, varsayılan `0.02`) : Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

layer_norm_eps (`float`, *opsiyonel*, varsayılan `1e-05`) : Katman normalizasyonu katmanları tarafından kullanılan epsilon.

encoder_stride (`int`, *isteğe bağlı*, varsayılan 32) : Maskeli görüntü modellemede, decoder başlığında uzamsal çözünürlüğü artırmak için kullanılan çarpan.

Bu, bir FocalNetModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Focalnet modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, [microsoft/focalnet-tiny](https://huggingface.co/microsoft/focalnet-tiny) modelinin yapılandırmasına benzer bir yapılandırma üretir.

Yapılandırma nesneleri [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) sınıfından türetilir ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) belgesini okuyun.

Örnek:

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

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

**Parametreler:**

config ([FocalNetConfig](/docs/transformers/main/tr/model_doc/focalnet#transformers.FocalNetConfig)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

add_pooling_layer (`bool`, *isteğe bağlı*, varsayılan `True`) : Bir havuzlama katmanı eklenip eklenmeyeceği

use_mask_token (`bool`, *isteğe bağlı*, varsayılan `False`) : Maskeli görüntü modelleme için bir maske jetonu kullanılıp kullanılmayacağı.

Üzerinde herhangi bir özel başlık olmadan ham gizli durumları (hidden-states) üreten çıplak Focalnet Modeli.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

#### 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)
```

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

**Parametreler:**

pixel_values (`torch.Tensor`, şekli `(batch_size, num_channels, image_size, image_size)`, *isteğe bağlı*) : Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri [BitImageProcessor](/docs/transformers/main/tr/model_doc/bit#transformers.BitImageProcessor) kullanılarak elde edilebilir. Ayrıntılar için [BitImageProcessor.__call__()](/docs/transformers/main/tr/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) adresine bakın (`processor_class`, görüntü işleme için [BitImageProcessor](/docs/transformers/main/tr/model_doc/bit#transformers.BitImageProcessor) kullanır).

bool_masked_pos (`torch.BoolTensor`, şekli `(batch_size, num_patches)`) : Boole maskeli konumlar. Hangi yamaların maskelendiğini (1) ve hangilerinin maskelenmediğini (0) belirtir.

output_hidden_states (`bool`, *isteğe bağlı*) : Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki `hidden_states` bölümüne bakın.

return_dict (`bool`, *isteğe bağlı*) : Düz bir tuple yerine [ModelOutput](/docs/transformers/main/tr/main_classes/output#transformers.utils.ModelOutput) döndürülecek mi?

**Dönüş:** `FocalNetModelOutput` veya `tuple(torch.Tensor)`

Bir `FocalNetModelOutput` veya bir `torch.Tensor` demeti (`return_dict=False` geçirildiğinde veya `config.return_dict=False` olduğunda), yapılandırma ([FocalNetConfig](/docs/transformers/main/tr/model_doc/focalnet#transformers.FocalNetConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[FocalNetModel](/docs/transformers/main/tr/model_doc/focalnet#transformers.FocalNetModel) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **last_hidden_state** (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) -- Modelin son katmanının çıktısındaki gizli durumlar dizisi.
- **pooler_output** (`torch.Tensor`, şekli `(batch_size, hidden_size)`, *isteğe bağlı*, `add_pooling_layer=True` geçirildiğinde döndürülür) -- Son katman gizli durumunun ortalama havuzlaması.
- **hidden_states** (`tuple[torch.Tensor]`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren ve `(batch_size, sequence_length, hidden_size)` biçiminde bir demet.

  Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- **reshaped_hidden_states** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (gömme çıktısı için bir tane + her aşamanın çıktısı için bir tane) içeren, `(batch_size, hidden_size, height, width)` biçiminde bir demet.

  Her katmanın çıktısında modelin gizli durumları ile uzamsal boyutları içerecek şekilde yeniden şekillendirilmiş başlangıç gömme çıktıları.

Örnek:

```python
```

## FocalNetForMaskedImageModeling[[transformers.FocalNetForMaskedImageModeling]]

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

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

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

**Parametreler:**

config ([FocalNetConfig](/docs/transformers/main/tr/model_doc/focalnet#transformers.FocalNetConfig)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

Maskeli görüntü modelleme için üstünde bir çözücüye sahip FocalNet Modeli.

Bu, [SimMIM](https://huggingface.co/papers/2111.09886)'de olduğuyla aynı uygulamayı izler.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

#### 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)
```

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

**Parametreler:**

pixel_values (`torch.Tensor`, şekli `(batch_size, num_channels, image_size, image_size)`, *isteğe bağlı*) : Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri [BitImageProcessor](/docs/transformers/main/tr/model_doc/bit#transformers.BitImageProcessor) kullanılarak elde edilebilir. Ayrıntılar için [BitImageProcessor.__call__()](/docs/transformers/main/tr/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) adresine bakın (`processor_class`, görüntü işleme için [BitImageProcessor](/docs/transformers/main/tr/model_doc/bit#transformers.BitImageProcessor) kullanır).

bool_masked_pos (`torch.BoolTensor`, şekli `(batch_size, num_patches)`) : Boole maskeli konumlar. Hangi yamaların maskelendiğini (1) ve hangilerinin maskelenmediğini (0) belirtir.

output_hidden_states (`bool`, *isteğe bağlı*) : Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki `hidden_states` bölümüne bakın.

return_dict (`bool`, *isteğe bağlı*) : Düz bir tuple yerine [ModelOutput](/docs/transformers/main/tr/main_classes/output#transformers.utils.ModelOutput) döndürülecek mi?

**Dönüş:** `FocalNetMaskedImageModelingOutput` veya `tuple(torch.Tensor)`

`FocalNetMaskedImageModelingOutput` veya bir `torch.Tensor` demeti (eğer `return_dict=False` geçirildiyse veya `config.return_dict=False` ise), yapılandırma ([FocalNetConfig](/docs/transformers/main/tr/model_doc/focalnet#transformers.FocalNetConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[FocalNetForMaskedImageModeling](/docs/transformers/main/tr/model_doc/focalnet#transformers.FocalNetForMaskedImageModeling) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **loss** (`torch.Tensor`, şekli `(1,)`, *isteğe bağlı*, `bool_masked_pos` sağlandığında döndürülür) -- Maskeli görüntü modelleme (MLM) kaybı.
- **yeniden yapılandırma** (`torch.Tensor`, şekli `(batch_size, num_channels, height, width)`) -- Yeniden yapılandırılmış piksel değerleri.
- **hidden_states** (`tuple[torch.Tensor]`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren ve `(batch_size, sequence_length, hidden_size)` biçiminde bir demet.

  Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- **reshaped_hidden_states** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (gömme çıktısı için bir tane + her aşamanın çıktısı için bir tane) içeren, `(batch_size, hidden_size, height, width)` biçiminde bir demet.

  Her katmanın çıktısında modelin gizli durumları ile uzamsal boyutları içerecek şekilde yeniden şekillendirilmiş başlangıç gömme çıktıları.

Örnekler:
```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)
```

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

**Parametreler:**

config ([FocalNetConfig](/docs/transformers/main/tr/model_doc/focalnet#transformers.FocalNetConfig)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

Üstünde bir görüntü sınıflandırma başlığı (toplanmış çıktının üzerinde doğrusal bir katman) bulunan FocalNet Modeli, örneğin ImageNet için.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

#### 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)
```

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

**Parametreler:**

pixel_values (`torch.Tensor`, şekli `(batch_size, num_channels, image_size, image_size)`, *isteğe bağlı*) : Girdi görüntülerine karşılık gelen tensörler. Piksel değerleri [BitImageProcessor](/docs/transformers/main/tr/model_doc/bit#transformers.BitImageProcessor) kullanılarak elde edilebilir. Ayrıntılar için [BitImageProcessor.__call__()](/docs/transformers/main/tr/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) adresine bakın (`processor_class`, görüntü işleme için [BitImageProcessor](/docs/transformers/main/tr/model_doc/bit#transformers.BitImageProcessor) kullanır).

labels (`torch.LongTensor`, şekli `(batch_size,)`, *isteğe bağlı*) : Görüntü sınıflandırma/geri dönüşüm kaybını hesaplamak için etiketler. Endeksler `[0, ..., config.num_labels - 1]` aralığında olmalıdır. `config.num_labels == 1` ise bir geri dönüşüm kaybı (Ortalama Kare kaybı) hesaplanır, `config.num_labels > 1` ise bir sınıflandırma kaybı (Çapraz Entropi) hesaplanır.

output_hidden_states (`bool`, *isteğe bağlı*) : Tüm katmanların gizli durumlarının (hidden states) döndürülüp döndürülmeyeceğini belirtir. Daha fazla ayrıntı için döndürülen tensörler altındaki `hidden_states` bölümüne bakın.

return_dict (`bool`, *isteğe bağlı*) : Düz bir tuple yerine [ModelOutput](/docs/transformers/main/tr/main_classes/output#transformers.utils.ModelOutput) döndürülecek mi?

**Dönüş:** `FocalNetImageClassifierOutput` veya `tuple(torch.Tensor)`

Bir `FocalNetImageClassifierOutput` veya bir `torch.Tensor` demeti (`return_dict=False` geçirildiğinde veya `config.return_dict=False` olduğunda), yapılandırma ([FocalNetConfig](/docs/transformers/main/tr/model_doc/focalnet#transformers.FocalNetConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[FocalNetForImageClassification](/docs/transformers/main/tr/model_doc/focalnet#transformers.FocalNetForImageClassification) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **loss** (`torch.Tensor`, şekli `(1,)`, *isteğe bağlı*, `labels` sağlandığında döndürülür) -- Sınıflandırma (config.num_labels==1 ise regresyon) kaybı.
- **logits** (`torch.Tensor`, şekli `(batch_size, config.num_labels)`) -- Sınıflandırma (veya config.num_labels==1 ise regresyon) puanları (SoftMax öncesi).
- **hidden_states** (`tuple[torch.Tensor]`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren ve `(batch_size, sequence_length, hidden_size)` biçiminde bir demet.

  Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- **reshaped_hidden_states** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (gömme çıktısı için bir tane + her aşamanın çıktısı için bir tane) içeren, `(batch_size, hidden_size, height, width)` biçiminde bir demet.

  Her katmanın çıktısında modelin gizli durumları ile uzamsal boyutları içerecek şekilde yeniden şekillendirilmiş başlangıç gömme çıktıları.

Örnek:

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

