# Dolanımsal Görüş Dönüşümü (CvT)

[Convolutional Vision Transformer (CvT)](https://huggingface.co/papers/2103.15808), bilgisayar görüsü görevleri için konvolüsyonel sinir ağlarının (CNN) ve Vision transformer'ların güçlü yönlerini birleştiren bir modeldir. Görüntü transformer mimarisine konvolüsyonel katmanlar ekleyerek, self-attention mekanizmalarının sağladığı global bağlamı korurken görüntülerdeki yerel örüntüleri yakalamasına olanak tanır.

Tüm CvT checkpoint'lerini [Microsoft](https://huggingface.co/microsoft?search_models=cvt) kuruluşu altında bulabilirsiniz.

> [!TIP]
> Bu model [anujunj](https://huggingface.co/anugunj) tarafından katkıda bulunmuştur.
>
> Farklı bilgisayarla görme görevlerine CvT uygulamanın daha fazla örneği için sağ kenar çubuğundaki CvT modellerine tıklayın.

Aşağıdaki örnek, bir görüntünün [Pipeline](/docs/transformers/main/tr/main_classes/pipelines#transformers.Pipeline) veya [AutoModel](/docs/transformers/main/tr/model_doc/auto#transformers.AutoModel) sınıfı ile nasıl sınıflandırıldığını göstermektedir.

```python
from transformers import pipeline

pipeline = pipeline(
    task="image-classification",
    model="microsoft/cvt-13",
    device=0
)
pipeline("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg")
```

```python
import requests
import torch
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForImageClassification

image_processor = AutoImageProcessor.from_pretrained("microsoft/cvt-13")
model = AutoModelForImageClassification.from_pretrained(
    "microsoft/cvt-13",
    device_map="auto"
)

url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
image = Image.open(requests.get(url, stream=True).raw)
inputs = image_processor(image, return_tensors="pt").to(model.device)

with torch.no_grad():
  logits = model(**inputs).logits
predicted_class_id = logits.argmax(dim=-1).item()

class_labels = model.config.id2label
predicted_class_label = class_labels[predicted_class_id]
print(f"The predicted class label is: {predicted_class_label}")
```

## Kaynaklar

Özel veri setlerinde çıkarım ve ince ayar örnekleri için bu ViT [defterleri](https://github.com/NielsRogge/Transformers-Tutorials/tree/master/VisionTransformer) setine başvurun. Bu defterlerdeki `ViTFeatureExtractor` ve [ViTForImageClassification](/docs/transformers/main/tr/model_doc/vit#transformers.ViTForImageClassification) öğelerini [AutoImageProcessor](/docs/transformers/main/tr/model_doc/auto#transformers.AutoImageProcessor) ve [CvtForImageClassification](/docs/transformers/main/tr/model_doc/cvt#transformers.CvtForImageClassification) ile değiştirin.

## CvtConfig[[transformers.CvtConfig]]

#### transformers.CvtConfig[[transformers.CvtConfig]]

```python
transformers.CvtConfig(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, num_channels: int = 3, patch_sizes: list[int] | tuple[int, ...] = (7, 3, 3), patch_stride: list[int] | tuple[int, ...] = (4, 2, 2), patch_padding: list[int] | tuple[int, ...] = (2, 1, 1), embed_dim: list[int] | tuple[int, ...] = (64, 192, 384), num_heads: list[int] | tuple[int, ...] = (1, 3, 6), depth: list[int] | tuple[int, ...] = (1, 2, 10), mlp_ratio: list[float] | tuple[float, ...] = (4.0, 4.0, 4.0), attention_drop_rate: list[float] | tuple[float, ...] = (0.0, 0.0, 0.0), drop_rate: list[float] | tuple[float, ...] = (0.0, 0.0, 0.0), drop_path_rate: list[float] | tuple[float, ...] = (0.0, 0.0, 0.1), qkv_bias: list[bool] | tuple[bool, ...] = (True, True, True), cls_token: list[bool] | tuple[bool, ...] = (False, False, True), qkv_projection_method: list[str] | tuple[str, ...] = ('dw_bn', 'dw_bn', 'dw_bn'), kernel_qkv: list[int] | tuple[int, ...] = (3, 3, 3), padding_kv: list[int] | tuple[int, ...] = (1, 1, 1), stride_kv: list[int] | tuple[int, ...] = (2, 2, 2), padding_q: list[int] | tuple[int, ...] = (1, 1, 1), stride_q: list[int] | tuple[int, ...] = (1, 1, 1), initializer_range: float = 0.02, layer_norm_eps: float = 1e-12)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/cvt/configuration_cvt.py#L24)

**Parametreler:**

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

patch_sizes (`Union[list[int], tuple[int, ...]]`, *isteğe bağlı*, varsayılan `(7, 3, 3)`) : Modelin her aşamasındaki yama boyutu.

patch_stride (`list[int]`, *isteğe bağlı*, varsayılan `[4, 2, 2]`) : Her kodlayıcının yama gömme adım boyutu.

patch_padding (`list[int]`, *isteğe bağlı*, varsayılan `[2, 1, 1]`) : Her kodlayıcının yama gömme dolgusu boyutu.

embed_dim (`Union[list[int], tuple[int, ...]]`, *isteğe bağlı*, varsayılan `(64, 192, 384)`) : Gömme ve gizli durumların boyutluluğu.

num_heads (`Union[list[int], tuple[int, ...]]`, *isteğe bağlı*, varsayılan `(1, 3, 6)`) : Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.

depth (`list[int]`, *isteğe bağlı*, varsayılan `[1, 2, 10]`) : Her kodlayıcı bloğundaki katman sayısı.

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

attention_drop_rate (`list[float]`, *isteğe bağlı*, varsayılan `[0.0, 0.0, 0.0]`) : Dikkat olasılıkları için dropout oranı.

drop_rate (`list[float]`, *isteğe bağlı*, varsayılan `[0.0, 0.0, 0.0]`) : Yama gömme olasılıkları için dropout oranı.

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

qkv_bias (`Union[list[bool], tuple[bool, ...]]`, *isteğe bağlı*, varsayılan `(True, True, True)`) : Sorgulara, anahtarlara ve değerlere bir sapma (bias) eklenip eklenmeyeceğini belirtir.

cls_token (`list[bool]`, *isteğe bağlı*, varsayılan `[False, False, True]`) : Son 3 aşamanın her birinin çıktısına bir sınıflandırma belirteci eklenip eklenmeyeceğini belirtir.

qkv_projection_method (`list[string]`, *isteğe bağlı*, varsayılan ["dw_bn", "dw_bn", "dw_bn"]`) : Sorgu, anahtar ve değer için projeksiyon yöntemi. Varsayılan, batch norm ile derinlik içi konvolüsyonlardır. Doğrusal projeksiyon için "avg" kullanın.

kernel_qkv (`list[int]`, *isteğe bağlı*, varsayılan `[3, 3, 3]`) : Dikkat katmanında sorgu, anahtar ve değer için çekirdek boyutu

padding_kv (`list[int]`, *isteğe bağlı*, varsayılan `[1, 1, 1]`) : Dikkat katmanında anahtar ve değer için dolgu boyutu

stride_kv (`list[int]`, *isteğe bağlı*, varsayılan `[2, 2, 2]`) : Dikkat katmanında anahtar ve değer için adım boyutu

padding_q (`list[int]`, *isteğe bağlı*, varsayılan `[1, 1, 1]`) : Dikkat katmanında sorgu için dolgu boyutu

stride_q (`list[int]`, *isteğe bağlı*, varsayılan `[1, 1, 1]`) : Dikkat katmanında sorgu için adım boyutu

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-12`) : Katman normalizasyonu katmanları tarafından kullanılan epsilon.

Bu, bir CvtModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Cvt 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/cvt-13](https://huggingface.co/microsoft/cvt-13) 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 CvtConfig, CvtModel

>>> # Initializing a Cvt msft/cvt style configuration
>>> configuration = CvtConfig()

>>> # Initializing a model (with random weights) from the msft/cvt style configuration
>>> model = CvtModel(configuration)

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

## CvtModel[[transformers.CvtModel]]

#### transformers.CvtModel[[transformers.CvtModel]]

```python
transformers.CvtModel(config: CvtConfig, add_pooling_layer = True)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/cvt/modeling_cvt.py#L499)

**Parametreler:**

config ([CvtConfig](/docs/transformers/main/tr/model_doc/cvt#transformers.CvtConfig)) : 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

Üzerinde herhangi bir özel head olmadan ham hidden-state'ler üreten çıplak Cvt Model.

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.CvtModel.forward]]

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

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/cvt/modeling_cvt.py#L510)

**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 [ConvNextImageProcessor](/docs/transformers/main/tr/model_doc/convnext#transformers.ConvNextImageProcessor) kullanılarak elde edilebilir. Ayrıntılar için [ConvNextImageProcessor.__call__()](/docs/transformers/main/tr/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) bölümüne bakın (`processor_class`, görüntü işleme için [ConvNextImageProcessor](/docs/transformers/main/tr/model_doc/convnext#transformers.ConvNextImageProcessor) kullanı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üş:** `BaseModelOutputWithCLSToken` veya `tuple(torch.Tensor)`

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

[CvtModel](/docs/transformers/main/tr/model_doc/cvt#transformers.CvtModel) ileri yöntemi, `__call__` özel yöntemini 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.
- **cls_token_value** (`torch.Tensor`, şekli `(batch_size, 1, hidden_size)`) -- Modelin son katmanının çıktısındaki sınıflandırma belirteci.
- **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` (modelin bir 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 bir tuple, şekli `(batch_size, sequence_length, hidden_size)`.

  Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

## CvtForImageClassification[[transformers.CvtForImageClassification]]

#### transformers.CvtForImageClassification[[transformers.CvtForImageClassification]]

```python
transformers.CvtForImageClassification(config: CvtConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/cvt/modeling_cvt.py#L549)

**Parametreler:**

config ([CvtConfig](/docs/transformers/main/tr/model_doc/cvt#transformers.CvtConfig)) : 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.

Üzerinde bir görüntü sınıflandırma başlığı bulunan (örneğin ImageNet için) Cvt Model transformer'ı (son gizli durumun [CLS] token'ı üzerine yerleştirilen doğrusal bir katman).

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.CvtForImageClassification.forward]]

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

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/cvt/modeling_cvt.py#L564)

**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 [ConvNextImageProcessor](/docs/transformers/main/tr/model_doc/convnext#transformers.ConvNextImageProcessor) kullanılarak elde edilebilir. Ayrıntılar için [ConvNextImageProcessor.__call__()](/docs/transformers/main/tr/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) bölümüne bakın (`processor_class`, görüntü işleme için [ConvNextImageProcessor](/docs/transformers/main/tr/model_doc/convnext#transformers.ConvNextImageProcessor) 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üş:** [ImageClassifierOutputWithNoAttention](/docs/transformers/main/tr/main_classes/output#transformers.modeling_outputs.ImageClassifierOutputWithNoAttention) veya `tuple(torch.Tensor)`

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

[CvtForImageClassification](/docs/transformers/main/tr/model_doc/cvt#transformers.CvtForImageClassification) 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` (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her aşamanın çıktısı için bir tane) içeren bir tuple, şekli `(batch_size, num_channels, height, width)`. Modelin her aşamanın çıktısındaki gizli durumları (aynı zamanda özellik haritaları olarak da adlandırılır).

Örnek:

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

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

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/cvt-13")
>>> model = CvtForImageClassification.from_pretrained("microsoft/cvt-13")

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

