# ConvNeXt V2

## Genel Bakış

ConvNeXt V2 modeli, Sanghyun Woo, Shoubhik Debnath, Ronghang Hu, Xinlei Chen, Zhuang Liu, In So Kweon ve Saining Xie tarafından [ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders](https://huggingface.co/papers/2301.00808) makalesinde önerilmiştir. ConvNeXt V2, Vision Transformers tasarımından ilham alan saf bir konvolüsyonel model (ConvNet) olup [ConvNeXT](convnext)'in devamıdır.

Makalenin özeti aşağıdaki gibidir:

*Geliştirilmiş mimariler ve daha iyi temsil öğrenme çerçeveleri sayesinde, görsel tanıma alanı 2020'lerin başlarında hızlı bir modernleşme ve performans artışı yaşamıştır. Örneğin, ConvNeXt tarafından temsil edilen modern ConvNet'ler, çeşitli senaryolarda güçlü performans sergilemiştir. Bu modeller başlangıçta ImageNet etiketleriyle denetimli öğrenme için tasarlanmış olsa da, maskeli otoenkoderler (MAE) gibi kendiliğinden denetimsiz öğrenme tekniklerinden de faydalanma potansiyeline sahiptirler. Ancak, bu iki yaklaşımı basitçe birleştirmenin yetersiz performansla sonuçlandığını tespit ettik. Bu makalede, ConvNeXt mimarisine eklenebilecek ve kanal arası özellik rekabetini artırmak için tasarlanmış tamamen konvolüsyonel bir maskeli otoenkoder çerçevesi ve yeni bir Global Response Normalization (GRN) katmanı öneriyoruz. Kendiliğinden denetimsiz öğrenme teknikleri ile mimari iyileştirmenin bu ortak tasarımı, ImageNet sınıflandırma, COCO algılama ve ADE20K segmentasyonu dahil olmak üzere çeşitli tanıma ölçütlerinde saf ConvNet'lerin performansını önemli ölçüde artıran ConvNeXt V2 adlı yeni bir model ailesi ortaya koymaktadır. Ayrıca, ImageNet'te %76,7 top-1 doğruluğa sahip verimli 3,7M parametreli Atto modelinden, yalnızca herkese açık eğitim verileri kullanarak %88,9 doğrulukla alanın en iyi performansını (state-of-the-art) elde eden 650M parametreli Huge modeline kadar çeşitli boyutlarda önceden eğitilmiş ConvNeXt V2 modelleri sunuyoruz.*

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

 ConvNeXt V2 mimarisi. Orijinal makaleden alınmıştır.

Bu model [adirik](https://huggingface.co/adirik) tarafından katkıda bulunmuştur. Orijinal kod [burada](https://github.com/facebookresearch/ConvNeXt-V2) bulunabilir.

## Kaynaklar

ConvNeXt V2 ile başlamanıza yardımcı olmak için resmi Hugging Face ve topluluk (🌎 ile belirtilen) kaynaklarının listesi.

- Bu [defter](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/image_classification.ipynb) [ConvNextV2ForImageClassification](/docs/transformers/main/tr/model_doc/convnextv2#transformers.ConvNextV2ForImageClassification) sınıfını destekler.

Buraya bir kaynak eklemek isterseniz, lütfen bir Pull Request açmaktan çekinmeyin; inceleyeceğiz! Kaynağın, mevcut bir kaynağı tekrarlamak yerine ideal olarak yeni bir şeyi göstermesi beklenir.

## ConvNextV2Config[[transformers.ConvNextV2Config]]

#### transformers.ConvNextV2Config[[transformers.ConvNextV2Config]]

```python
transformers.ConvNextV2Config(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_size: int | list[int] | tuple[int, int] = 4, num_stages: int = 4, hidden_sizes: list[int] | tuple[int, ...] | None = (96, 192, 384, 768), depths: list[int] | tuple[int, ...] | None = (3, 3, 9, 3), hidden_act: str = 'gelu', initializer_range: float = 0.02, layer_norm_eps: float = 1e-12, drop_path_rate: float | int = 0.0, image_size: int | list[int] | tuple[int, int] = 224, _out_features: list[str] | None = None, _out_indices: list[int] | None = None)
```

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

**Parametreler:**

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

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

num_stages (`int`, *isteğe bağlı*, varsayılan 4) : Modeldeki aşama sayısı.

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

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

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.

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.

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

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üğü).

Bu, bir ConvNextV2Model yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Convnextv2 modelinin örneklenmesi için kullanılır ve model mimarisini tanımlar. Varsayılanlarla bir yapılandırma örneği oluşturmak, [facebook/convnextv2-tiny-1k-224](https://huggingface.co/facebook/convnextv2-tiny-1k-224) 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 ConvNeXTV2Config, ConvNextV2Model

>>> # Initializing a ConvNeXTV2 convnextv2-tiny-1k-224 style configuration
>>> configuration = ConvNeXTV2Config()

>>> # Initializing a model (with random weights) from the convnextv2-tiny-1k-224 style configuration
>>> model = ConvNextV2Model(configuration)

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

## ConvNextV2Model[[transformers.ConvNextV2Model]]

#### transformers.ConvNextV2Model[[transformers.ConvNextV2Model]]

```python
transformers.ConvNextV2Model(config: ConvNextV2Config)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/convnextv2/modeling_convnextv2.py#L273)

**Parametreler:**

config ([ConvNextV2Config](/docs/transformers/main/tr/model_doc/convnextv2#transformers.ConvNextV2Config)) : 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 herhangi bir özel başlık olmadan ham gizli durumları (hidden-states) üreten çıplak Convnextv2 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.ConvNextV2Model.forward]]

```python
forward(pixel_values: typing.Optional[torch.Tensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/convnextv2/modeling_convnextv2.py#L287)

**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).

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

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

[ConvNextV2Model](/docs/transformers/main/tr/model_doc/convnextv2#transformers.ConvNextV2Model) 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, num_channels, height, width)`) -- Modelin son katmanının çıktısındaki gizli durumlar dizisi.
- **pooler_output** (`torch.Tensor`, şekli `(batch_size, hidden_size)`) -- Uzamsal boyutlar üzerinde bir havuzlama işlemi uygulandıktan sonraki son katman gizli durumu.
- **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, num_channels, height, width)` biçiminde bir demet.

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

Örnek:

```python
```

## ConvNextV2ForImageClassification[[transformers.ConvNextV2ForImageClassification]]

#### transformers.ConvNextV2ForImageClassification[[transformers.ConvNextV2ForImageClassification]]

```python
transformers.ConvNextV2ForImageClassification(config: ConvNextV2Config)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/convnextv2/modeling_convnextv2.py#L316)

**Parametreler:**

config ([ConvNextV2Config](/docs/transformers/main/tr/model_doc/convnextv2#transformers.ConvNextV2Config)) : 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ış özelliklerin üzerinde doğrusal bir katman) bulunan ConvNextV2 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.ConvNextV2ForImageClassification.forward]]

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

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/convnextv2/modeling_convnextv2.py#L334)

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

**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 ([ConvNextV2Config](/docs/transformers/main/tr/model_doc/convnextv2#transformers.ConvNextV2Config)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[ConvNextV2ForImageClassification](/docs/transformers/main/tr/model_doc/convnextv2#transformers.ConvNextV2ForImageClassification) 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, ConvNextV2ForImageClassification
>>> import torch
>>> from datasets import load_dataset

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

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/convnextv2-tiny-1k-224")
>>> model = ConvNextV2ForImageClassification.from_pretrained("facebook/convnextv2-tiny-1k-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])
...
```

