# IP-Adapter

[IP-Adapter](https://hf.co/papers/2308.06721), bir difüzyon modelini görüntüyle yönlendirmeyi (prompting) mümkün kılan hafif bir adaptördür. Bu yöntem, görüntü ve metin özelliklerinin çapraz dikkat (cross-attention) katmanlarını birbirinden ayırır. Görüntü özellikleri, bir görüntü kodlayıcıdan (image encoder) üretilir.

> [!TIP]
> Bir IP-Adapter kontrol noktası ve görüntüsünü nasıl yükleyip kullanacağınızı [IP-Adapter](../../using-diffusers/ip_adapter) kılavuzunda öğrenin.

## IPAdapterMixin[[diffusers.loaders.IPAdapterMixin]]

#### diffusers.loaders.IPAdapterMixin[[diffusers.loaders.IPAdapterMixin]]

```python
diffusers.loaders.IPAdapterMixin()
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/ip_adapter.py#L55)

IP Adapter'ları işlemek için karışım (mixin).

#### load_ip_adapter[[diffusers.loaders.IPAdapterMixin.load_ip_adapter]]

```python
load_ip_adapter(pretrained_model_name_or_path_or_dict: str | list[str] | dict[str, torch.Tensor], subfolder: str | list[str], weight_name: str | list[str], image_encoder_folder: str | None = 'image_encoder', **kwargs)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/ip_adapter.py#L58)

**Parametreler:**

pretrained_model_name_or_path_or_dict (`str` veya `list[str]` veya `os.PathLike` veya `list[os.PathLike]` veya `dict` veya `list[dict]`) : Şunlardan biri olabilir:  - Hub'da barındırılan önceden eğitilmiş bir modelin *model kimliği* (örneğin `google/ddpm-celebahq-256`) olan bir dize. - [ModelMixin.save_pretrained()](/docs/diffusers/main/tr/api/models/overview#diffusers.ModelMixin.save_pretrained) ile kaydedilmiş model ağırlıklarını içeren bir *dizin* yolu (örneğin `./my_model_directory`). - Bir [torch state dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict).

subfolder (`str` veya `list[str]`) : Hub'daki veya yerel bir model deposundaki daha büyük bir model deposu içindeki model dosyasının alt klasör konumu. Bir liste geçiriliyorsa, `weight_name` ile aynı uzunlukta olmalıdır.

weight_name (`str` veya `list[str]`) : Yüklenecek ağırlık dosyasının adı. Bir liste geçiriliyorsa, `subfolder` ile aynı uzunlukta olmalıdır.

image_encoder_folder (`str`, *isteğe bağlı*, varsayılan `image_encoder`) : Hub'daki veya yerel bir model deposundaki daha büyük bir modelin içindeki görüntü kodlayıcısının alt klasör konumu. Görüntü kodlayıcısını yüklememek için `None` geçirin. Görüntü kodlayıcı `subfolder` içinde bir klasörde konumlandırılmışsa, yalnızca görüntü kodlayıcı ağırlıklarını içeren klasörün adını geçmeniz yeterlidir, örneğin `image_encoder_folder="image_encoder"`. Görüntü kodlayıcı `subfolder` dışında bir klasörde konumlandırılmışsa, görüntü kodlayıcı ağırlıklarını içeren klasöre giden yolu geçmelisiniz, örneğin `image_encoder_folder="different_subfolder/image_encoder"`.

cache_dir (`str | os.PathLike`, *isteğe bağlı*) : Standart önbellek kullanılmıyorsa, indirilen önceden eğitilmiş model yapılandırmasının önbelleğe alındığı dizinin yolu.

force_download (`bool`, *isteğe bağlı*, varsayılan `False`) : Model ağırlıklarının ve yapılandırma dosyalarının (yeniden) indirilmesinin zorlanıp zorlanmayacağını belirler; önbellekteki sürümler varsa bunların üzerine yazar.

proxies (`dict[str, str]`, *isteğe bağlı*) : Protokol veya uç nokta bazında kullanılacak vekil sunucuların sözlüğü, örneğin `{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}`. Vekiller her istekte kullanılır.

local_files_only (`bool`, *isteğe bağlı*, varsayılan `False`) : Sadece yerel model ağırlıklarının ve yapılandırma dosyalarının yüklenip yüklenmeyeceğini belirtir. `True` olarak ayarlanırsa, model Hub'dan indirilmez.

token (`str` veya *bool*, *isteğe bağlı*) : Uzaktaki dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton. `True` ise, `diffusers-cli login` ile oluşturulan jeton (`~/.huggingface` içinde saklanır) kullanılır.

revision (`str`, *isteğe bağlı*, varsayılan `"main"`) : Kullanılacak belirli model sürümü. Bir dal adı, etiket adı, commit kimliği veya Git tarafından izin verilen herhangi bir tanımlayıcı olabilir.

low_cpu_mem_usage (`bool`, *isteğe bağlı*, varsayılan olarak PyTorch sürümü >= 1.9.0 ise `True`, aksi halde `False`) : Ağırlıkları başlatmadan yalnızca önceden eğitilmiş ağırlıkları yükleyerek model yüklemesini hızlandırır. Bu, model yüklenirken (tepe bellek dahil) CPU belleğinde model boyutunun 1 katından fazlasını kullanmamaya da çalışır. Yalnızca PyTorch >= 1.9.0 için desteklenir. PyTorch'un daha eski bir sürümünü kullanıyorsanız, bu argümanı `True` olarak ayarlamak bir hata verecektir.

#### set_ip_adapter_scale[[diffusers.loaders.IPAdapterMixin.set_ip_adapter_scale]]

```python
set_ip_adapter_scale(scale)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/ip_adapter.py#L259)

IP-Adapter ölçekleri, dönüştürücü bloğu başına ayarlanır. Girdi `scale`, her bir IP-Adapter davranışı üzerinde ince kontrol için tek bir yapılandırma veya yapılandırma listesi olabilir. Bir yapılandırma, bir ondalık sayı veya sözlük olabilir.

Örnek:

```py
# To use original IP-Adapter
scale = 1.0
pipeline.set_ip_adapter_scale(scale)

# To use style block only
scale = {
    "up": {"block_0": [0.0, 1.0, 0.0]},
}
pipeline.set_ip_adapter_scale(scale)

# To use style+layout blocks
scale = {
    "down": {"block_2": [0.0, 1.0]},
    "up": {"block_0": [0.0, 1.0, 0.0]},
}
pipeline.set_ip_adapter_scale(scale)

# To use style and layout from 2 reference images
scales = [{"down": {"block_2": [0.0, 1.0]}}, {"up": {"block_0": [0.0, 1.0, 0.0]}}]
pipeline.set_ip_adapter_scale(scales)
```

#### unload_ip_adapter[[diffusers.loaders.IPAdapterMixin.unload_ip_adapter]]

```python
unload_ip_adapter()
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/ip_adapter.py#L312)

IP Adapter ağırlıklarını boşaltır

Örnekler:

```python
>>> # Assuming `pipeline` is already loaded with the IP Adapter weights.
>>> pipeline.unload_ip_adapter()
>>> ...
```

## SD3IPAdapterMixin[[diffusers.loaders.SD3IPAdapterMixin]]

#### diffusers.loaders.SD3IPAdapterMixin[[diffusers.loaders.SD3IPAdapterMixin]]

```python
diffusers.loaders.SD3IPAdapterMixin()
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/ip_adapter.py#L904)

StableDiffusion 3 IP Adapters'ı işlemek için karışım (mixin).

#### is_ip_adapter_active[[diffusers.loaders.SD3IPAdapterMixin.is_ip_adapter_active]]

```python
is_ip_adapter_active()
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/ip_adapter.py#L907)

**Dönüş:** `bool`

IP-Adapter yüklendiğinde ve herhangi bir katmanın ölçeği > 0 olduğunda doğru.

IP-Adapter'ın yüklendiğini ve ölçeğin > 0 olduğunu kontrol eder.

IP-Adapter ölçeği, görsel istemin metin istimine kıyasla etkisini kontrol eder. Bu değer 0 olarak ayarlandığında, görsel bağlam önemsizdir.

#### load_ip_adapter[[diffusers.loaders.SD3IPAdapterMixin.load_ip_adapter]]

```python
load_ip_adapter(pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor], weight_name: str = 'ip-adapter.safetensors', subfolder: str | None = None, image_encoder_folder: str | None = 'image_encoder', **kwargs)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/ip_adapter.py#L925)

**Parametreler:**

pretrained_model_name_or_path_or_dict (`str` veya `os.PathLike` veya `dict`) : Şunlardan biri olabilir: - Hub'da barındırılan önceden eğitilmiş bir modelin *model kimliği* (örneğin `google/ddpm-celebahq-256`). - [ModelMixin.save_pretrained()](/docs/diffusers/main/tr/api/models/overview#diffusers.ModelMixin.save_pretrained) ile kaydedilmiş model ağırlıklarını içeren bir *dizin* yolu (örneğin `./my_model_directory`). - Bir [torch state dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict).

weight_name (`str`, varsayılan "ip-adapter.safetensors") : Yükenecek ağırlık dosyasının adı. Bir liste geçiriliyorsa, `subfolder` ile aynı uzunlukta olmalıdır.

subfolder (`str`, *isteğe bağlı*) : Hub'daki veya yerel bir model deposundaki daha büyük bir model deposu içindeki model dosyasının alt klasör konumu. Bir liste geçiriliyorsa, `weight_name` ile aynı uzunlukta olmalıdır.

image_encoder_folder (`str`, *isteğe bağlı*, varsayılan `image_encoder`) : Hub'daki veya yerel bir model deposundaki daha büyük bir modelin içindeki görüntü kodlayıcısının alt klasör konumu. Görüntü kodlayıcısını yüklememek için `None` geçirin. Görüntü kodlayıcı `subfolder` içinde bir klasörde konumlandırılmışsa, yalnızca görüntü kodlayıcı ağırlıklarını içeren klasörün adını geçmeniz yeterlidir, örneğin `image_encoder_folder="image_encoder"`. Görüntü kodlayıcı `subfolder` dışında bir klasörde konumlandırılmışsa, görüntü kodlayıcı ağırlıklarını içeren klasöre giden yolu geçmelisiniz, örneğin `image_encoder_folder="different_subfolder/image_encoder"`.

cache_dir (`str | os.PathLike`, *isteğe bağlı*) : Standart önbellek kullanılmıyorsa, indirilen önceden eğitilmiş model yapılandırmasının önbelleğe alındığı dizinin yolu.

force_download (`bool`, *isteğe bağlı*, varsayılan `False`) : Model ağırlıklarının ve yapılandırma dosyalarının (yeniden) indirilmesinin zorlanıp zorlanmayacağını belirler; önbellekteki sürümler varsa bunların üzerine yazar.

proxies (`dict[str, str]`, *isteğe bağlı*) : Protokol veya uç nokta bazında kullanılacak vekil sunucuların sözlüğü, örneğin `{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}`. Vekiller her istekte kullanılır.

local_files_only (`bool`, *isteğe bağlı*, varsayılan `False`) : Sadece yerel model ağırlıklarının ve yapılandırma dosyalarının yüklenip yüklenmeyeceğini belirtir. `True` olarak ayarlanırsa, model Hub'dan indirilmez.

token (`str` veya *bool*, *isteğe bağlı*) : Uzaktaki dosyalar için HTTP bearer yetkilendirmesi olarak kullanılacak jeton. `True` ise, `diffusers-cli login` ile oluşturulan jeton (`~/.huggingface` içinde saklanır) kullanılır.

revision (`str`, *isteğe bağlı*, varsayılan `"main"`) : Kullanılacak belirli model sürümü. Bir dal adı, etiket adı, commit kimliği veya Git tarafından izin verilen herhangi bir tanımlayıcı olabilir.

low_cpu_mem_usage (`bool`, *isteğe bağlı*, varsayılan olarak PyTorch sürümü >= 1.9.0 ise `True`, aksi halde `False`) : Ağırlıkları başlatmadan yalnızca önceden eğitilmiş ağırlıkları yükleyerek model yüklemesini hızlandırır. Bu, model yüklenirken (tepe bellek dahil) CPU belleğinde model boyutunun 1 katından fazlasını kullanmamaya da çalışır. Yalnızca PyTorch >= 1.9.0 için desteklenir. PyTorch'un daha eski bir sürümünü kullanıyorsanız, bu argümanı `True` olarak ayarlamak bir hata verecektir.

#### set_ip_adapter_scale[[diffusers.loaders.SD3IPAdapterMixin.set_ip_adapter_scale]]

```python
set_ip_adapter_scale(scale: float)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/ip_adapter.py#L1079)

**Parametreler:**

scale (float) : Ayarlanacak IP-Adapter ölçeği.

Görsel istem koşullandırmasını kontrol eden IP-Adapter ölçeğini ayarlayın. 1.0 değeri, modelin yalnızca görsel istemle koşullandırıldığını; 0.0 değeri ise yalnızca metin istemiyle koşullandırıldığını ifade eder. Bu değerin düşürülmesi, modelin daha çeşitli görseller üretmesini teşvik eder ancak bu görsellerin görsel istemle uyumu daha düşük olabilir.

Örnek:

```python
>>> # Assuming `pipeline` is already loaded with the IP Adapter weights.
>>> pipeline.set_ip_adapter_scale(0.6)
>>> ...
```

#### unload_ip_adapter[[diffusers.loaders.SD3IPAdapterMixin.unload_ip_adapter]]

```python
unload_ip_adapter()
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/ip_adapter.py#L1102)

IP Adapter ağırlıklarını boşaltır.

Örnek:

```python
>>> # Assuming `pipeline` is already loaded with the IP Adapter weights.
>>> pipeline.unload_ip_adapter()
>>> ...
```

## IPAdapterMaskProcessor[[diffusers.IPAdapterMaskProcessor]]

#### diffusers.IPAdapterMaskProcessor[[diffusers.IPAdapterMaskProcessor]]

```python
diffusers.IPAdapterMaskProcessor(do_resize: bool = True, vae_scale_factor: int = 8, resample: str = 'lanczos', do_normalize: bool = False, do_binarize: bool = True, do_convert_grayscale: bool = True)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/image_processor.py#L1277)

**Parametreler:**

do_resize (`bool`, *isteğe bağlı*, varsayılan `True`) : Görselin (yükseklik, genişlik) boyutlarının `vae_scale_factor`'ün katlarına ölçeklendirilip ölçeklendirilmeyeceğini belirtir.

vae_scale_factor (`int`, *isteğe bağlı*, varsayılan `8`) : VAE ölçekleme faktörü. `do_resize` `True` ise, görüntü bu faktörün katlarına otomatik olarak yeniden boyutlandırılır.

resample (`str`, *isteğe bağlı*, varsayılan `lanczos`) : Görsel yeniden boyutlandırılırken kullanılacak yeniden örnekleme filtresi.

do_normalize (`bool`, *isteğe bağlı*, varsayılan `False`) : Görüntünün [-1,1] aralığına normalize edilip edilmeyeceğini belirtir.

do_binarize (`bool`, *isteğe bağlı*, varsayılan `True`) : Görselin 0/1 olarak ikileştirilip ikileştirilmeyeceğini belirtir.

do_convert_grayscale (`bool`, *isteğe bağlı*, varsayılan olarak `True`) : Görsellerin gri tonlamalı formata dönüştürülüp dönüştürülmeyeceğini belirtir.

IP Adapter görüntü maskeleri için görüntü işleyici.

#### downsample[[diffusers.IPAdapterMaskProcessor.downsample]]

```python
downsample(mask: Tensor, batch_size: int, num_queries: int, value_embed_dim: int)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/image_processor.py#L1318)

**Parametreler:**

mask (`torch.Tensor`) : `IPAdapterMaskProcessor.preprocess()` ile oluşturulan giriş maskesi tensörü.

batch_size (`int`) : Toplu işlem boyutu.

num_queries (`int`) : Sorgu sayısı.

value_embed_dim (`int`) : Değer gömme boyutları.

**Dönüş:** `torch.Tensor`

Örnekleme azaltılmış maske tensörü.

Ölçekli nokta çarpımı dikkati için beklenen boyutlara uymak üzere sağlanan maske tensörünü indirger. Maske en-boy oranı, çıktı görüntüsünün en-boy oranıyla eşleşmiyorsa bir uyarı verilir.

