# Latent Tutarlılık Modelleri

  

Latent Consistency Models (LCM), Simian Luo, Yiqin Tan, Longbo Huang, Jian Li ve Hang Zhao tarafından [Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference](https://huggingface.co/papers/2310.04378) makalesinde önerilmiştir.

Makalenin özeti aşağıdaki gibidir:

*Latent Diffusion modelleri (LDM'ler), yüksek çözünürlüklü görüntü sentezinde olağanüstü sonuçlar elde etmiştir. Ancak, yinelemeli örneklem süreci hesaplama açısından yoğun olup yavaş üretime yol açar. Consistency Models (song et al.)'den ilham alarak, Latent Consistency Models (LCM'ler) öneriyoruz; bu modeller, Stable Diffusion (rombach et al) dahil olmak üzere herhangi bir önceden eğitilmiş LDM üzerinde az sayıda adımla hızlı çıkarım yapmayı mümkün kılar. Kılavuzlu ters yönlü difüzyon sürecini, artırılmış bir olasılık akış ODE'sini (PF-ODE) çözmek olarak ele alarak, LCM'ler bu ODE'nin çözümünü latent uzayda doğrudan tahmin edecek şekilde tasarlanmıştır; bu sayede çok sayıda yinelemeye duyulan ihtiyaç azaltılır ve hızlı, yüksek sadakatli örneklem sağlanır. Önceden eğitilmiş sınıflandırıcı-özgür kılavuzlu difüzyon modellerinden verimli bir şekilde damıtılarak elde edilen, yüksek kaliteli 768 x 768 2~4 adımlık bir LCM, eğitim için yalnızca 32 A100 GPU saati gerektirir. Ayrıca, LCM'lerin özel görüntü veri kümeleri üzerinde ince ayarlanmasına yönelik tasarlanmış yeni bir yöntem olan Latent Consistency Fine-tuning (LCF)'i tanıtıyoruz. LAION-5B-Aesthetics veri kümesi üzerindeki değerlendirme, LCM'lerin az adımlı çıkarımla metinden görüntüye üretimde en iyi performansı (state-of-the-art) elde ettiğini göstermektedir. Proje Sayfası: [this https URL](https://latent-consistency-models.github.io/).*

[SimianLuo/LCM_Dreamshaper_v7](https://huggingface.co/SimianLuo/LCM_Dreamshaper_v7) kontrol noktası için bir demo [burada](https://huggingface.co/spaces/SimianLuo/Latent_Consistency_Model) bulunabilir.

Hatlara [luosiallen](https://luosiallen.github.io/), [nagolinc](https://github.com/nagolinc) ve [dg845](https://github.com/dg845) tarafından katkıda bulunulmuştur.

> [!TIP]
> LCM ve LCM-LoRA'lar Stable Diffusion v1.5, Stable Diffusion XL ve SSD-1B modeli için kullanılabilir. Kontrol noktalarını [Latent Consistency](https://hf.co/collections/latent-consistency/latent-consistency-models-weights-654ce61a95edd6dffccef6a8) Koleksiyonlarında bulabilirsiniz.

## Metinden görüntüye

LCM'leri kullanmak için, desteklenen modelinizin LCM kontrol noktasını [UNet2DConditionModel](/docs/diffusers/main/tr/api/models/unet2d-cond#diffusers.UNet2DConditionModel) içine yüklemeniz ve zamanlayıcıyı [LCMScheduler](/docs/diffusers/main/tr/api/schedulers/lcm#diffusers.LCMScheduler) ile değiştirmeniz gerekir. Ardından, boru hattını (pipeline) normal şekilde kullanabilir ve yalnızca 4 adımda bir görüntü üretmek için bir metin istemci (prompt) iletebilirsiniz.

LCM'leri kullanırken aklınızda tutmanız gereken birkaç not:

* Genellikle, classifier-free guidance için batch boyutu pipeline içinde ikiye katlanır. Ancak LCM, guidance embeddings ile yönlendirme uygular ve batch boyutunu ikiye katlamaya gerek duymaz; bu da daha hızlı çıkarıma (inference) yol açar. Dezavantajı ise, negatif promptların LCM ile çalışmamasıdır çünkü bunların gürültü azaltma (denoising) süreci üzerinde hiçbir etkisi yoktur.
* `guidance_scale` için ideal aralık [3., 13.]'tür çünkü UNet bu aralıkla eğitilmiştir. Ancak çoğu durumda `guidance_scale`'i 1.0 değeriyle devre dışı bırakmak da etkilidir.

```python
from diffusers import StableDiffusionXLPipeline, UNet2DConditionModel, LCMScheduler
import torch

unet = UNet2DConditionModel.from_pretrained(
    "latent-consistency/lcm-sdxl",
    dtype=torch.float16,
    variant="fp16",
)
pipe = StableDiffusionXLPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", unet=unet, dtype=torch.float16, variant="fp16",
).to("cuda")  # or "mps", "xpu", "cpu"
pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)

prompt = "Self-portrait oil painting, a beautiful cyborg with golden hair, 8k"
generator = torch.manual_seed(0)
image = pipe(
    prompt=prompt, num_inference_steps=4, generator=generator, guidance_scale=8.0
).images[0]
image
```

    

LCM-LoRAları kullanmak için zamanlayıcıyı [LCMScheduler](/docs/diffusers/main/tr/api/schedulers/lcm#diffusers.LCMScheduler) ile değiştirmeniz ve LCM-LoRA ağırlıklarını [load_lora_weights()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.load_lora_weights) yöntemiyle yüklemeniz gerekir. Ardından hattı (pipeline) normal şekilde kullanabilir ve yalnızca 4 adımda bir görüntü üretmek için bir metin istemci (prompt) iletebilirsiniz.

LCM-LoRAları kullanırken aklınızda tutmanız gereken birkaç not:

* Genellikle, classifier-free guidance için batch boyutu pipeline içinde ikiye katlanır. Ancak LCM, guidance embeddings ile yönlendirme uygular ve batch boyutunu ikiye katlamaya gerek duymaz; bu da daha hızlı çıkarıma (inference) yol açar. Dezavantajı ise, negatif promptların LCM ile çalışmamasıdır çünkü bunların gürültü azaltma (denoising) süreci üzerinde hiçbir etkisi yoktur.
* LCM-LoRAlarla rehberlik kullanabilirsiniz, ancak yüksek `guidance_scale` değerlerine karşı çok hassastır ve üretilen görüntüde artefaktlara yol açabilir. Bulduğumuz en iyi değerler [1.0, 2.0] aralığındadır.
* [stabilityai/stable-diffusion-xl-base-1.0](https://hf.co/stabilityai/stable-diffusion-xl-base-1.0) yerine herhangi bir ince ayarlanmış model kullanın. Örneğin, SDXL ile anime görselleri oluşturmak için [animagine-xl](https://huggingface.co/Linaqruf/animagine-xl) kontrol noktasını deneyin.

```py
import torch
from diffusers import DiffusionPipeline, LCMScheduler

pipe = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    variant="fp16",
    dtype=torch.float16
).to("cuda")  # or "mps", "xpu", "cpu"
pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)
pipe.load_lora_weights("latent-consistency/lcm-lora-sdxl")

prompt = "Self-portrait oil painting, a beautiful cyborg with golden hair, 8k"
generator = torch.manual_seed(42)
image = pipe(
    prompt=prompt, num_inference_steps=4, generator=generator, guidance_scale=1.0
).images[0]
image
```

    

## Görselden görseli

Görselden görsel dönüşümünde LCM'leri kullanmak için, desteklenen modelinizin LCM kontrol noktasını [UNet2DConditionModel](/docs/diffusers/main/tr/api/models/unet2d-cond#diffusers.UNet2DConditionModel) içine yüklemeniz ve zamanlayıcıyı [LCMScheduler](/docs/diffusers/main/tr/api/schedulers/lcm#diffusers.LCMScheduler) ile değiştirmeniz gerekir. Ardından, boru hattını normal şekilde kullanabilir ve yalnızca 4 adımda bir görsel üretmek için bir metin istemi ile başlangıç görselini iletebilirsiniz.

> [!TIP]
> En iyi sonuçları almak için `num_inference_steps`, `strength` ve `guidance_scale` parametrelerinde farklı değerlerle deneyler yapın.

```python
import torch
from diffusers import AutoPipelineForImage2Image, UNet2DConditionModel, LCMScheduler
from diffusers.utils import load_image

unet = UNet2DConditionModel.from_pretrained(
    "SimianLuo/LCM_Dreamshaper_v7",
    subfolder="unet",
    dtype=torch.float16,
)

pipe = AutoPipelineForImage2Image.from_pretrained(
    "Lykon/dreamshaper-7",
    unet=unet,
    dtype=torch.float16,
    variant="fp16",
).to("cuda")  # or "mps", "xpu", "cpu"
pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)

init_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-init.png")
prompt = "Astronauts in a jungle, cold color palette, muted colors, detailed, 8k"
generator = torch.manual_seed(0)
image = pipe(
    prompt,
    image=init_image,
    num_inference_steps=4,
    guidance_scale=7.5,
    strength=0.5,
    generator=generator
).images[0]
image
```

  
    
    başlangıç görüntüsü
  
  
    
    oluşturulan görsel
  

Görselden görsel dönüşümde LCM-LoRAları kullanmak için zamanlayıcıyı [LCMScheduler](/docs/diffusers/main/tr/api/schedulers/lcm#diffusers.LCMScheduler) ile değiştirmeniz ve LCM-LoRA ağırlıklarını [load_lora_weights()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.load_lora_weights) yöntemiyle yüklemeniz gerekir. Ardından hattı (pipeline) normal şekilde kullanabilir, bir metin komutu ve başlangıç görseli geçirerek yalnızca 4 adımda bir görsel üretebilirsiniz.

> [!TIP]
> En iyi sonuçları almak için `num_inference_steps`, `strength` ve `guidance_scale` parametrelerinde farklı değerlerle deneyler yapın.

```py
import torch
from diffusers import AutoPipelineForImage2Image, LCMScheduler
from diffusers.utils import make_image_grid, load_image

pipe = AutoPipelineForImage2Image.from_pretrained(
    "Lykon/dreamshaper-7",
    dtype=torch.float16,
    variant="fp16",
).to("cuda")  # or "mps", "xpu", "cpu"

pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)

pipe.load_lora_weights("latent-consistency/lcm-lora-sdv1-5")

init_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/img2img-init.png")
prompt = "Astronauts in a jungle, cold color palette, muted colors, detailed, 8k"

generator = torch.manual_seed(0)
image = pipe(
    prompt,
    image=init_image,
    num_inference_steps=4,
    guidance_scale=1,
    strength=0.6,
    generator=generator
).images[0]
image
```

  
    
    başlangıç görüntüsü
  
  
    
    oluşturulan görsel
  

## Inpainting

Inpainting için LCM-LoRAları kullanmak için zamanlayıcıyı [LCMScheduler](/docs/diffusers/main/tr/api/schedulers/lcm#diffusers.LCMScheduler) ile değiştirmeniz ve LCM-LoRA ağırlıklarını [load_lora_weights()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.load_lora_weights) yöntemiyle yüklemeniz gerekir. Ardından pipeline'ı normal şekilde kullanabilir ve yalnızca 4 adımda bir görüntü üretmek için bir metin istemi, başlangıç görüntüsü ve maske görüntüsü iletebilirsiniz.

```py
import torch
from diffusers import AutoPipelineForInpainting, LCMScheduler
from diffusers.utils import load_image, make_image_grid

pipe = AutoPipelineForInpainting.from_pretrained(
    "stable-diffusion-v1-5/stable-diffusion-inpainting",
    dtype=torch.float16,
    variant="fp16",
).to("cuda")  # or "mps", "xpu", "cpu"

pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)

pipe.load_lora_weights("latent-consistency/lcm-lora-sdv1-5")

init_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/inpaint.png")
mask_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/inpaint_mask.png")

prompt = "concept art digital painting of an elven castle, inspired by lord of the rings, highly detailed, 8k"
generator = torch.manual_seed(0)
image = pipe(
    prompt=prompt,
    image=init_image,
    mask_image=mask_image,
    generator=generator,
    num_inference_steps=4,
    guidance_scale=4,
).images[0]
image
```

  
    
    başlangıç görüntüsü
  
  
    
    oluşturulan görsel
  

## Adaptörler

LCM'ler, LoRA, ControlNet, T2I-Adapter ve AnimateDiff gibi adaptörlerle uyumludur. LCM'lerin hızını bu adaptörlere taşıyarak belirli bir stilde görseller üretebilir veya modeli canny görseli gibi başka bir girdiye göre koşullandırabilirsiniz.

### LoRA

[LoRA](../../tutorials/using_peft_for_inference) adaptörleri, yalnızca birkaç görselden yeni bir stil öğrenmek için hızla ince ayarlanabilir ve bu stilde görseller üretmek için önceden eğitilmiş bir modele eklenebilir.

Desteklenen modeliniz için LCM kontrol noktasını [UNet2DConditionModel](/docs/diffusers/main/tr/api/models/unet2d-cond#diffusers.UNet2DConditionModel) içine yükleyin ve zamanlayıcıyı [LCMScheduler](/docs/diffusers/main/tr/api/schedulers/lcm#diffusers.LCMScheduler) ile değiştirin. Ardından [load_lora_weights()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.load_lora_weights) yöntemini kullanarak LoRA ağırlıklarını LCM'ye yükleyebilir ve birkaç adımda stilize bir görsel üretebilirsiniz.

```python
from diffusers import StableDiffusionXLPipeline, UNet2DConditionModel, LCMScheduler
import torch

unet = UNet2DConditionModel.from_pretrained(
    "latent-consistency/lcm-sdxl",
    dtype=torch.float16,
    variant="fp16",
)
pipe = StableDiffusionXLPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", unet=unet, dtype=torch.float16, variant="fp16",
).to("cuda")  # or "mps", "xpu", "cpu"
pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)
pipe.load_lora_weights("TheLastBen/Papercut_SDXL", weight_name="papercut.safetensors", adapter_name="papercut")

prompt = "papercut, a cute fox"
generator = torch.manual_seed(0)
image = pipe(
    prompt=prompt, num_inference_steps=4, generator=generator, guidance_scale=8.0
).images[0]
image
```

    

Zamanlayıcıyı [LCMScheduler](/docs/diffusers/main/tr/api/schedulers/lcm#diffusers.LCMScheduler) ile değiştirin. Ardından, kullanmak istediğiniz LCM-LoRA ağırlıklarını ve stil LoRA'sını yüklemek için [load_lora_weights()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.load_lora_weights) yöntemini kullanabilirsiniz. Her iki LoRA adaptörünü de `~loaders.UNet2DConditionLoadersMixin.set_adapters` yöntemiyle birleştirin ve birkaç adımda stillendirilmiş bir görüntü oluşturun.

```py
import torch
from diffusers import DiffusionPipeline, LCMScheduler

pipe = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    variant="fp16",
    dtype=torch.float16
).to("cuda")  # or "mps", "xpu", "cpu"

pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)

pipe.load_lora_weights("latent-consistency/lcm-lora-sdxl", adapter_name="lcm")
pipe.load_lora_weights("TheLastBen/Papercut_SDXL", weight_name="papercut.safetensors", adapter_name="papercut")

pipe.set_adapters(["lcm", "papercut"], adapter_weights=[1.0, 0.8])

prompt = "papercut, a cute fox"
generator = torch.manual_seed(0)
image = pipe(prompt, num_inference_steps=4, guidance_scale=1, generator=generator).images[0]
image
```

    

### ControlNet

[ControlNet](./controlnet), canny kenar, poz tahmini veya derinlik gibi çeşitli girdiler üzerinde eğitilebilen adaptörlerdir. ControlNet, daha doğru üretim için modele ek koşullandırma ve kontrol sağlamak üzere iş akışına eklenebilir.

Diğer girdiler üzerinde eğitilmiş ek ControlNet modellerini [lllyasviel'in](https://hf.co/lllyasviel) deposunda bulabilirsiniz.

Canny görüntülerinde eğitilmiş bir ControlNet modelini yükleyin ve [ControlNetModel](/docs/diffusers/main/tr/api/models/controlnet#diffusers.ControlNetModel) sınıfına iletin. Ardından bir LCM modelini [StableDiffusionControlNetPipeline](/docs/diffusers/main/tr/api/pipelines/controlnet#diffusers.StableDiffusionControlNetPipeline) içine yükleyebilir ve zamanlayıcıyı [LCMScheduler](/docs/diffusers/main/tr/api/schedulers/lcm#diffusers.LCMScheduler) ile değiştirebilirsiniz. Şimdi canny görüntüsünü pipeline'a iletin ve bir görüntü oluşturun.

> [!TIP]
> En iyi sonuçları almak için `num_inference_steps`, `controlnet_conditioning_scale`, `cross_attention_kwargs` ve `guidance_scale` parametreleri için farklı değerlerle deneyler yapın.

```python
import torch
import cv2
import numpy as np
from PIL import Image

from diffusers import StableDiffusionControlNetPipeline, ControlNetModel, LCMScheduler
from diffusers.utils import load_image, make_image_grid

image = load_image(
    "https://hf.co/datasets/huggingface/documentation-images/resolve/main/diffusers/input_image_vermeer.png"
).resize((512, 512))

image = np.array(image)

low_threshold = 100
high_threshold = 200

image = cv2.Canny(image, low_threshold, high_threshold)
image = image[:, :, None]
image = np.concatenate([image, image, image], axis=2)
canny_image = Image.fromarray(image)

controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-canny", dtype=torch.float16)
pipe = StableDiffusionControlNetPipeline.from_pretrained(
    "SimianLuo/LCM_Dreamshaper_v7",
    controlnet=controlnet,
    dtype=torch.float16,
    safety_checker=None,
).to("cuda")  # or "mps", "xpu", "cpu"
pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)

generator = torch.manual_seed(0)
image = pipe(
    "the mona lisa",
    image=canny_image,
    num_inference_steps=4,
    generator=generator,
).images[0]
make_image_grid([canny_image, image], rows=1, cols=2)
```

    

Canny görüntülerinde eğitilmiş bir ControlNet modelini yükleyin ve [ControlNetModel](/docs/diffusers/main/tr/api/models/controlnet#diffusers.ControlNetModel) sınıfına iletin. Ardından bir Stable Diffusion v1.5 modelini [StableDiffusionControlNetPipeline](/docs/diffusers/main/tr/api/pipelines/controlnet#diffusers.StableDiffusionControlNetPipeline) içine yükleyebilir ve zamanlayıcıyı [LCMScheduler](/docs/diffusers/main/tr/api/schedulers/lcm#diffusers.LCMScheduler) ile değiştirebilirsiniz. LCM-LoRA ağırlıklarını yüklemek için [load_lora_weights()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.load_lora_weights) yöntemini kullanın, canny görüntüsünü pipeline'a iletin ve bir görüntü oluşturun.

> [!TIP]
> En iyi sonuçları almak için `num_inference_steps`, `controlnet_conditioning_scale`, `cross_attention_kwargs` ve `guidance_scale` parametreleri için farklı değerlerle deneyler yapın.

```py
import torch
import cv2
import numpy as np
from PIL import Image

from diffusers import StableDiffusionControlNetPipeline, ControlNetModel, LCMScheduler
from diffusers.utils import load_image

image = load_image(
    "https://hf.co/datasets/huggingface/documentation-images/resolve/main/diffusers/input_image_vermeer.png"
).resize((512, 512))

image = np.array(image)

low_threshold = 100
high_threshold = 200

image = cv2.Canny(image, low_threshold, high_threshold)
image = image[:, :, None]
image = np.concatenate([image, image, image], axis=2)
canny_image = Image.fromarray(image)

controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-canny", dtype=torch.float16)
pipe = StableDiffusionControlNetPipeline.from_pretrained(
    "stable-diffusion-v1-5/stable-diffusion-v1-5",
    controlnet=controlnet,
    dtype=torch.float16,
    safety_checker=None,
    variant="fp16"
).to("cuda")  # or "mps", "xpu", "cpu"

pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)

pipe.load_lora_weights("latent-consistency/lcm-lora-sdv1-5")

generator = torch.manual_seed(0)
image = pipe(
    "the mona lisa",
    image=canny_image,
    num_inference_steps=4,
    guidance_scale=1.5,
    controlnet_conditioning_scale=0.8,
    cross_attention_kwargs={"scale": 1},
    generator=generator,
).images[0]
image
```

    

### T2I-Adapter

[T2I-Adapter](../../using-diffusers/legacy_adapters#t2i-adapter), ControlNet'ten daha hafif bir adaptördür ve önceden eğitilmiş bir modele ek bir giriş sağlayarak koşullandırma imkânı sunar. ControlNet'ten daha hızlıdır ancak sonuçlar biraz daha düşük kalitede olabilir.

Diğer girdiler üzerinde eğitilmiş ek T2I-Adapter kontrol noktalarını [TencentArc'in](https://hf.co/TencentARC) deposunda bulabilirsiniz.

Canny görüntülerinde eğitilmiş bir T2IAdapter yükleyin ve [StableDiffusionXLAdapterPipeline](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/adapter#diffusers.StableDiffusionXLAdapterPipeline) nesnesine iletin. Ardından bir LCM checkpoint dosyasını [UNet2DConditionModel](/docs/diffusers/main/tr/api/models/unet2d-cond#diffusers.UNet2DConditionModel) içine yükleyin ve zamanlayıcıyı [LCMScheduler](/docs/diffusers/main/tr/api/schedulers/lcm#diffusers.LCMScheduler) ile değiştirin. Şimdi canny görüntüsünü pipeline'a iletin ve bir görüntü oluşturun.

```python
import torch
import cv2
import numpy as np
from PIL import Image

from diffusers import StableDiffusionXLAdapterPipeline, UNet2DConditionModel, T2IAdapter, LCMScheduler
from diffusers.utils import load_image, make_image_grid

# detect the canny map in low resolution to avoid high-frequency details
image = load_image(
    "https://hf.co/datasets/huggingface/documentation-images/resolve/main/diffusers/input_image_vermeer.png"
).resize((384, 384))

image = np.array(image)

low_threshold = 100
high_threshold = 200

image = cv2.Canny(image, low_threshold, high_threshold)
image = image[:, :, None]
image = np.concatenate([image, image, image], axis=2)
canny_image = Image.fromarray(image).resize((1024, 1216))

adapter = T2IAdapter.from_pretrained("TencentARC/t2i-adapter-canny-sdxl-1.0", dtype=torch.float16, variant="fp16").to("cuda")  # or "mps", "xpu", "cpu"

unet = UNet2DConditionModel.from_pretrained(
    "latent-consistency/lcm-sdxl",
    dtype=torch.float16,
    variant="fp16",
)
pipe = StableDiffusionXLAdapterPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    unet=unet,
    adapter=adapter,
    dtype=torch.float16,
    variant="fp16",
).to("cuda")

pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)

prompt = "the mona lisa, 4k picture, high quality"
negative_prompt = "extra digit, fewer digits, cropped, worst quality, low quality, glitch, deformed, mutated, ugly, disfigured"

generator = torch.manual_seed(0)
image = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    image=canny_image,
    num_inference_steps=4,
    guidance_scale=5,
    adapter_conditioning_scale=0.8,
    adapter_conditioning_factor=1,
    generator=generator,
).images[0]
```

    

Canny görüntülerinde eğitilmiş bir T2IAdapter yükleyin ve [StableDiffusionXLAdapterPipeline](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/adapter#diffusers.StableDiffusionXLAdapterPipeline) nesnesine iletin. Zamanlayıcıyı [LCMScheduler](/docs/diffusers/main/tr/api/schedulers/lcm#diffusers.LCMScheduler) ile değiştirin ve LCM-LoRA ağırlıklarını yüklemek için [load_lora_weights()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.load_lora_weights) yöntemini kullanın. Canny görüntüsünü pipeline'a iletin ve bir görüntü oluşturun.

```py
import torch
import cv2
import numpy as np
from PIL import Image

from diffusers import StableDiffusionXLAdapterPipeline, UNet2DConditionModel, T2IAdapter, LCMScheduler
from diffusers.utils import load_image, make_image_grid

# detect the canny map in low resolution to avoid high-frequency details
image = load_image(
    "https://hf.co/datasets/huggingface/documentation-images/resolve/main/diffusers/input_image_vermeer.png"
).resize((384, 384))

image = np.array(image)

low_threshold = 100
high_threshold = 200

image = cv2.Canny(image, low_threshold, high_threshold)
image = image[:, :, None]
image = np.concatenate([image, image, image], axis=2)
canny_image = Image.fromarray(image).resize((1024, 1024))

adapter = T2IAdapter.from_pretrained("TencentARC/t2i-adapter-canny-sdxl-1.0", dtype=torch.float16, variant="fp16").to("cuda")  # or "mps", "xpu", "cpu"

pipe = StableDiffusionXLAdapterPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    adapter=adapter,
    dtype=torch.float16,
    variant="fp16",
).to("cuda")

pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)

pipe.load_lora_weights("latent-consistency/lcm-lora-sdxl")

prompt = "the mona lisa, 4k picture, high quality"
negative_prompt = "extra digit, fewer digits, cropped, worst quality, low quality, glitch, deformed, mutated, ugly, disfigured"

generator = torch.manual_seed(0)
image = pipe(
    prompt=prompt,
    negative_prompt=negative_prompt,
    image=canny_image,
    num_inference_steps=4,
    guidance_scale=1.5,
    adapter_conditioning_scale=0.8,
    adapter_conditioning_factor=1,
    generator=generator,
).images[0]
```

    

### AnimateDiff

[AnimateDiff](./animatediff), bir görseli hareketlendiren bir adaptördür. Çoğu Stable Diffusion modeliyle kullanılabilir ve bu modelleri fiilen "video üretimi" modellerine dönüştürür. Bir video modeliyle iyi sonuçlar elde etmek genellikle birden fazla kare (16-24) üretmeyi gerektirir ve bu işlem, standart bir Stable Diffusion modeliyle oldukça yavaş olabilir. LCM-LoRA, her kare için yalnızca 4-8 adım alarak bu süreci hızlandırabilir.

[AnimateDiffPipeline](/docs/diffusers/main/tr/api/pipelines/animatediff#diffusers.AnimateDiffPipeline) yükleyin ve ona bir `MotionAdapter` iletin. Ardından zamanlayıcıyı [LCMScheduler](/docs/diffusers/main/tr/api/schedulers/lcm#diffusers.LCMScheduler) ile değiştirin ve her iki LoRA adaptörünü de `~loaders.UNet2DConditionLoadersMixin.set_adapters` yöntemiyle birleştirin. Artık pipeline'a bir istem (prompt) iletebilir ve animasyonlu bir görsel üretebilirsiniz.

```py
import torch
from diffusers import MotionAdapter, AnimateDiffPipeline, DDIMScheduler, LCMScheduler
from diffusers.utils import export_to_gif

adapter = MotionAdapter.from_pretrained("guoyww/animatediff-motion-adapter-v1-5")
pipe = AnimateDiffPipeline.from_pretrained(
    "frankjoshua/toonyou_beta6",
    motion_adapter=adapter,
).to("cuda")  # or "mps", "xpu", "cpu"

# set scheduler
pipe.scheduler = LCMScheduler.from_config(pipe.scheduler.config)

# load LCM-LoRA
pipe.load_lora_weights("latent-consistency/lcm-lora-sdv1-5", adapter_name="lcm")
pipe.load_lora_weights("guoyww/animatediff-motion-lora-zoom-in", weight_name="diffusion_pytorch_model.safetensors", adapter_name="motion-lora")

pipe.set_adapters(["lcm", "motion-lora"], adapter_weights=[0.55, 1.2])

prompt = "best quality, masterpiece, 1girl, looking at viewer, blurry background, upper body, contemporary, dress"
generator = torch.manual_seed(0)
frames = pipe(
    prompt=prompt,
    num_inference_steps=5,
    guidance_scale=1.25,
    cross_attention_kwargs={"scale": 1},
    num_frames=24,
    generator=generator
).frames[0]
export_to_gif(frames, "animation.gif")
```

    

## LatentConsistencyModelPipeline[[diffusers.LatentConsistencyModelPipeline]]

#### diffusers.LatentConsistencyModelPipeline[[diffusers.LatentConsistencyModelPipeline]]

```python
diffusers.LatentConsistencyModelPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: LCMScheduler, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None, requires_safety_checker: bool = True)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_text2img.py#L133)

**Parametreler:**

vae ([AutoencoderKL](/docs/diffusers/main/tr/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Görüntüleri latent temsillere kodlamak ve bu temsillerden görüntülere çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) modeli.

text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModel)) : Donmuş metin kodlayıcı ([clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14)).

tokenizer ([CLIPTokenizer](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTokenizer)) : Metni belirteçleştirmek için bir `CLIPTokenizer`.

unet ([UNet2DConditionModel](/docs/diffusers/main/tr/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : Kodlanmış görüntü latentlerini gürültüden arındırmak için kullanılan bir `UNet2DConditionModel`.

scheduler ([SchedulerMixin](/docs/diffusers/main/tr/api/schedulers/overview#diffusers.SchedulerMixin)) : Kodlanmış görüntü latentlerini gürültüden arındırmak için `unet` ile birlikte kullanılacak bir zamanlayıcı. Şu anda yalnızca [LCMScheduler](/docs/diffusers/main/tr/api/schedulers/lcm#diffusers.LCMScheduler) desteklenmektedir.

safety_checker (`StableDiffusionSafetyChecker`) : Üretilen görsellerin saldırgan veya zararlı olarak değerlendirilip değerlendirilemeyeceğini tahmin eden sınıflandırma modülü. Bir modelin potansiyel zararları hakkında daha fazla ayrıntı için [model kartına](https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5) bakın.

feature_extractor ([CLIPImageProcessor](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPImageProcessor)) : Üretilen görüntülerden özellik çıkarmak için kullanılan `CLIPImageProcessor`; `safety_checker` girdileri olarak kullanılır.

requires_safety_checker (`bool`, *isteğe bağlı*, varsayılan `True`) : Hattın bir güvenlik denetleyicisi bileşeni gerektirip gerektirmediğini belirtir.

Latent tutarlılık modeli kullanılarak metinden görüntüye üretim için pipeline.

Bu model [DiffusionPipeline](/docs/diffusers/main/tr/api/pipelines/overview#diffusers.DiffusionPipeline) sınıfından devralınmıştır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda bulabilirsiniz.

Pipeline ayrıca aşağıdaki yükleme yöntemlerini devralır:
- Metinsel tersine çevirme gömme yüklemek için [load_textual_inversion()](/docs/diffusers/main/tr/api/loaders/textual_inversion#diffusers.loaders.TextualInversionLoaderMixin.load_textual_inversion)
- LoRA ağırlıklarını yüklemek için [load_lora_weights()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.load_lora_weights)
- LoRA ağırlıklarını kaydetmek için [save_lora_weights()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.save_lora_weights)
- `.ckpt` dosyalarını yüklemek için [from_single_file()](/docs/diffusers/main/tr/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file)
- IP Adapter'ları yüklemek için [load_ip_adapter()](/docs/diffusers/main/tr/api/loaders/ip_adapter#diffusers.loaders.IPAdapterMixin.load_ip_adapter)

#### __call__[[diffusers.LatentConsistencyModelPipeline.__call__]]

```python
__call__(prompt: str | list[str] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 4, original_inference_steps: int = None, timesteps: list = None, guidance_scale: float = 8.5, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list = ['latents'], **kwargs)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_text2img.py#L640)

**Parametreler:**

prompt (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmadıysa, `prompt_embeds` parametresini iletmeniz gerekir.

height (`int`, *isteğe bağlı*, varsayılan `self.unet.config.sample_size * self.vae_scale_factor`) : Üretilen görüntünün piksel cinsinden yüksekliği.

width (`int`, *isteğe bağlı*, varsayılan `self.unet.config.sample_size * self.vae_scale_factor`) : Üretilen görüntünün piksel cinsinden genişliği.

num_inference_steps (`int`, *isteğe bağlı*, varsayılan 50) : Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar.

original_inference_steps (`int`, *isteğe bağlı*) : Doğrusal aralıklı bir zaman adımı planı oluşturmak için kullanılan orijinal çıkarım adımı sayısı; bu plandan, makaledeki Skipping-Step yöntemine (Bölüm 4.3'e bakınız) uygun olarak, son zaman adımı planımız olarak eşit aralıklı `num_inference_steps` zaman adımı seçilecektir. Ayarlanmazsa, zamanlayıcının `original_inference_steps` özniteliği varsayılan olarak kullanılır.

timesteps (`list[int]`, *isteğe bağlı*) : Gürültü azaltma süreci için kullanılacak özel zaman adımları. Tanımlanmamışsa, orijinal LCM eğitim/distilasyon zaman adımı zaman çizelgesinde eşit aralıklı `num_inference_steps` zaman adımı kullanılır. Azalan sırada olmalıdır.

guidance_scale (`float`, *opsiyonel*, varsayılan 7.5) : Daha yüksek bir guidance scale değeri, modelin metin `prompt`'u ile yakından ilişkili görseller üretmesini teşvik eder; bunun bedeli ise daha düşük görsel kalitedir. Guidance scale, `guidance_scale > 1` olduğunda etkinleşir. Orijinal latent consistency models makalesinin, guidance scale değerlerinin 1 azaltıldığı farklı bir CFG formülasyonu kullandığını (yani makale formülasyonunda CFG'nin `guidance_scale > 0` olduğunda etkinleştiğini) not ediniz.

num_images_per_prompt (`int`, *isteğe bağlı*, varsayılan 1) : Her istem için üretilecek görsel sayısı.

generator (`torch.Generator` veya `list[torch.Generator]`, *isteğe bağlı*) : Üretimi deterministik hale getirmek için bir [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html).

latents (`torch.Tensor`, *isteğe bağlı*) : Görsel üretimi için girdi olarak kullanılacak, Gauss dağılımından örneklenen önceden oluşturulmuş gürültülü latensler. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele `generator` kullanılarak örneklem yoluyla bir latens tensörü oluşturulur.

prompt_embeds (`torch.Tensor`, *isteğe bağlı*) : Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, metin gömme değerleri `prompt` girdi argümanından üretilir.

ip_adapter_image : (`PipelineImageInput`, *isteğe bağlı*): IP Adapters ile çalışmak için isteğe bağlı görüntü girişi.

ip_adapter_image_embeds (`list[torch.Tensor]`, *isteğe bağlı*) : IP-Adapter için önceden oluşturulmuş gömme vektörleri. IP-adapter sayısı ile aynı uzunlukta bir liste olmalıdır. Her öğe, `(batch_size, num_images, emb_dim)` biçiminde bir tensör olmalıdır. `do_classifier_free_guidance` `True` olarak ayarlandıysa negatif gömme vektörünü içermelidir. Sağlanmazsa, gömme vektörleri `ip_adapter_image` girdi argümanından hesaplanır.

output_type (`str`, *isteğe bağlı*, varsayılan `"pil"`) : Üretilen görüntünün çıktı biçimi. `PIL.Image` veya `np.array` arasında seçim yapın.

return_dict (`bool`, *isteğe bağlı*, varsayılan `True`) : Düz bir tuple yerine [StableDiffusionPipelineOutput](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput) döndürülüp döndürülmemesi.

cross_attention_kwargs (`dict`, *isteğe bağlı*) : Belirtilirse, [`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) içinde tanımlanan `AttentionProcessor`'ye aktarılan bir kwargs sözlüğü.

clip_skip (`int`, *isteğe bağlı*) : Prompt gömme hesaplamaları sırasında CLIP'ten atlanacak katman sayısı. 1 değeri, prompt gömme hesaplamaları için son öncesi katmanın çıktısının kullanılacağı anlamına gelir.

callback_on_step_end (`Callable`, *isteğe bağlı*) : Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan bir işlev. İşlev aşağıdaki argümanlarla çağrılır: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs`, `callback_on_step_end_tensor_inputs` tarafından belirtilen tüm tensörlerin listesini içerir.

callback_on_step_end_tensor_inputs (`list`, *isteğe bağlı*) : `callback_on_step_end` işlevi için girdi tensörlerinin listesi. Listede belirtilen tensörler, `callback_kwargs` argümanı olarak geçirilir. Yalnızca pipeline sınıfınızın `._callback_tensor_inputs` özniteliğinde listelenen değişkenleri dahil edebilirsiniz.

**Dönüş:** [StableDiffusionPipelineOutput](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput) veya `tuple`

`return_dict` `True` ise [StableDiffusionPipelineOutput](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput) döndürülür, aksi takdirde bir `tuple` döndürülür; bu yapının ilk öğesi üretilen görsellerin listesini, ikinci öğesi ise ilgili üretilen görselin "not-safe-for-work" (nsfw) içerip içermediğini gösteren `bool` değerlerinin listesini içerir.

Üretim için pipeline'ın çağrı fonksiyonu.

Örnekler:
```py
>>> from diffusers import DiffusionPipeline
>>> import torch

>>> pipe = DiffusionPipeline.from_pretrained("SimianLuo/LCM_Dreamshaper_v7")
>>> # To save GPU memory, torch.float16 can be used, but it may compromise image quality.
>>> pipe.to(torch_device="cuda", torch_dtype=torch.float32)

>>> prompt = "Self-portrait oil painting, a beautiful cyborg with golden hair, 8k"

>>> # Can be set to 1~50 steps. LCM support fast inference even <= 4 steps. Recommend: 1~8 steps.
>>> num_inference_steps = 4
>>> images = pipe(prompt=prompt, num_inference_steps=num_inference_steps, guidance_scale=8.0).images
>>> images[0].save("image.png")
```

#### enable_freeu[[diffusers.LatentConsistencyModelPipeline.enable_freeu]]

```python
enable_freeu(s1: float, s2: float, b1: float, b2: float)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2285)

**Parametreler:**

s1 (`float`) : 1. aşama için, atlanan özelliklerin katkılarını sönümlemek amacıyla kullanılan ölçekleme faktörü. Bu, geliştirilmiş gürültü azaltma sürecindeki "aşırı yumuşatma etkisini" azaltmak için yapılır.

s2 (`float`) : 2. aşama için, atlanan özelliklerin katkılarını azaltmak üzere kullanılan ölçekleme faktörü. Bu, geliştirilmiş gürültü azaltma sürecindeki "aşırı yumuşatma etkisini" (oversmoothing effect) hafifletmek için yapılır.

b1 (`float`) : Omurga özelliklerinin katkılarını artırmak için 1. aşama ölçekleme çarpanı.

b2 (`float`) : Omurga özelliklerinin katkılarını artırmak için 2. aşama ölçekleme çarpanı.

https://huggingface.co/papers/2309.11497'deki gibi FreeU mekanizmasını etkinleştirir.

Ölçekleme katsayılarının sonundaki ekler, bu katsayıların uygulandığı aşamaları temsil eder.

Stable Diffusion v1, v2 ve Stable Diffusion XL gibi farklı pipeline'lar için iyi çalıştığı bilinen değer kombinasyonları için [resmi depoya](https://github.com/ChenyangSi/FreeU) bakın.

#### disable_freeu[[diffusers.LatentConsistencyModelPipeline.disable_freeu]]

```python
disable_freeu()
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2307)

Etkinse, FreeU mekanizmasını devre dışı bırakır.

#### encode_prompt[[diffusers.LatentConsistencyModelPipeline.encode_prompt]]

```python
encode_prompt(prompt, device, num_images_per_prompt, do_classifier_free_guidance, negative_prompt = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_text2img.py#L226)

**Parametreler:**

prompt (`str` veya `list[str]`, *isteğe bağlı*) : kodlanacak istem

device : (`torch.device`): torch cihazı

num_images_per_prompt (`int`) : her istem için oluşturulacak görsel sayısı

do_classifier_free_guidance (`bool`) : sınıflandırıcı serbest yönlendirmenin (classifier free guidance) kullanılıp kullanılmayacağı

negative_prompt (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine `negative_prompt_embeds` parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani `guidance_scale` değeri `1`'den küçükse) yok sayılır.

prompt_embeds (`torch.Tensor`, *isteğe bağlı*) : Ön oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, *ör.* istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri `prompt` girdi argümanından oluşturulur.

negative_prompt_embeds (`torch.Tensor`, *isteğe bağlı*) : Ön oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, *ör.* istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds, `negative_prompt` girdi argümanından oluşturulur.

lora_scale (`float`, *isteğe bağlı*) : LoRA katmanları yüklendiyse, metin kodlayıcısının tüm LoRA katmanlarına uygulanacak bir LoRA ölçeği.

clip_skip (`int`, *isteğe bağlı*) : Prompt gömme hesaplamaları sırasında CLIP'ten atlanacak katman sayısı. 1 değeri, prompt gömme hesaplamaları için son öncesi katmanın çıktısının kullanılacağı anlamına gelir.

İsteği metin kodlayıcı gizli durumlarına kodlar.

#### get_guidance_scale_embedding[[diffusers.LatentConsistencyModelPipeline.get_guidance_scale_embedding]]

```python
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_text2img.py#L517)

**Parametreler:**

w (`torch.Tensor`) : Belirtilen bir yönlendirme ölçeğiyle gömme vektörleri üretir; bu vektörler daha sonra zaman adımları gömmelerini zenginleştirmek için kullanılır.

embedding_dim (`int`, *isteğe bağlı*, varsayılan 512) : Üretilecek gömme boyutu.

dtype (`torch.dtype`, *isteğe bağlı*, varsayılan `torch.float32`) : Üretilen gömme (embedding) verilerinin veri türü.

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

`(len(w), embedding_dim)` biçiminde gömme vektörleri.

https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298 adresine bakın

## LatentConsistencyModelImg2ImgPipeline[[diffusers.LatentConsistencyModelImg2ImgPipeline]]

#### diffusers.LatentConsistencyModelImg2ImgPipeline[[diffusers.LatentConsistencyModelImg2ImgPipeline]]

```python
diffusers.LatentConsistencyModelImg2ImgPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: LCMScheduler, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None, requires_safety_checker: bool = True)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_img2img.py#L154)

**Parametreler:**

vae ([AutoencoderKL](/docs/diffusers/main/tr/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Görüntüleri latent temsillere kodlamak ve bu temsillerden görüntülere çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) modeli.

text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModel)) : Donmuş metin kodlayıcı ([clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14)).

tokenizer ([CLIPTokenizer](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTokenizer)) : Metni belirteçleştirmek için bir `CLIPTokenizer`.

unet ([UNet2DConditionModel](/docs/diffusers/main/tr/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : Kodlanmış görüntü latentlerini gürültüden arındırmak için kullanılan bir `UNet2DConditionModel`.

scheduler ([SchedulerMixin](/docs/diffusers/main/tr/api/schedulers/overview#diffusers.SchedulerMixin)) : Kodlanmış görüntü latentlerini gürültüden arındırmak için `unet` ile birlikte kullanılacak bir zamanlayıcı. Şu anda yalnızca [LCMScheduler](/docs/diffusers/main/tr/api/schedulers/lcm#diffusers.LCMScheduler) desteklenmektedir.

safety_checker (`StableDiffusionSafetyChecker`) : Üretilen görsellerin saldırgan veya zararlı olarak değerlendirilip değerlendirilemeyeceğini tahmin eden sınıflandırma modülü. Bir modelin potansiyel zararları hakkında daha fazla ayrıntı için [model kartına](https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5) bakın.

feature_extractor ([CLIPImageProcessor](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPImageProcessor)) : Üretilen görüntülerden özellik çıkarmak için kullanılan `CLIPImageProcessor`; `safety_checker` girdileri olarak kullanılır.

requires_safety_checker (`bool`, *isteğe bağlı*, varsayılan `True`) : Hattın bir güvenlik denetleyicisi bileşeni gerektirip gerektirmediğini belirtir.

Latent tutarlılık modeli kullanılarak görüntüden görüntüye üretim için pipeline.

Bu model [DiffusionPipeline](/docs/diffusers/main/tr/api/pipelines/overview#diffusers.DiffusionPipeline) sınıfından devralınmıştır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda bulabilirsiniz.

Pipeline ayrıca aşağıdaki yükleme yöntemlerini devralır:
- Metinsel tersine çevirme gömme yüklemek için [load_textual_inversion()](/docs/diffusers/main/tr/api/loaders/textual_inversion#diffusers.loaders.TextualInversionLoaderMixin.load_textual_inversion)
- LoRA ağırlıklarını yüklemek için [load_lora_weights()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.load_lora_weights)
- LoRA ağırlıklarını kaydetmek için [save_lora_weights()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.save_lora_weights)
- `.ckpt` dosyalarını yüklemek için [from_single_file()](/docs/diffusers/main/tr/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file)
- IP Adapter'ları yüklemek için [load_ip_adapter()](/docs/diffusers/main/tr/api/loaders/ip_adapter#diffusers.loaders.IPAdapterMixin.load_ip_adapter)

#### __call__[[diffusers.LatentConsistencyModelImg2ImgPipeline.__call__]]

```python
__call__(prompt: str | list[str] = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, num_inference_steps: int = 4, strength: float = 0.8, original_inference_steps: int = None, timesteps: list = None, guidance_scale: float = 8.5, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list = ['latents'], **kwargs)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_img2img.py#L709)

**Parametreler:**

prompt (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmadıysa, `prompt_embeds` parametresini iletmeniz gerekir.

image (`torch.Tensor`, `PIL.Image.Image`, `np.ndarray`, `list[torch.Tensor]`, `list[PIL.Image.Image]` veya `list[np.ndarray]`) : Başlangıç noktası olarak kullanılacak bir görüntü partisyonunu temsil eden `Image` veya tensör. `image` olarak görüntü latentlerini de kabul edebilir, ancak latentler doğrudan geçirilirse yeniden kodlanmaz.

num_inference_steps (`int`, *isteğe bağlı*, varsayılan 50) : Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar.

strength (`float`, *opsiyonel*, varsayılan 0.8) : Referans `image`'in dönüştürülme derecesini belirtir. 0 ile 1 arasında olmalıdır. `image` bir başlangıç noktası olarak kullanılır ve `strength` değeri arttıkça daha fazla gürültü eklenir. Gürültü azaltma adımlarının sayısı, başlangıçta eklenen gürültü miktarına bağlıdır. `strength` 1 olduğunda eklenen gürültü maksimumdur ve gürültü azaltma süreci, `num_inference_steps` içinde belirtilen tam tekrar sayısı kadar çalışır. 1 değeri, `image`'ı fiilen yok sayar.

original_inference_steps (`int`, *isteğe bağlı*) : Doğrusal aralıklı bir zaman adımı planı oluşturmak için kullanılan orijinal çıkarım adımı sayısı; bu plandan, makaledeki Skipping-Step yöntemine (Bölüm 4.3'e bakınız) uygun olarak, son zaman adımı planımız olarak eşit aralıklı `num_inference_steps` zaman adımı seçilecektir. Ayarlanmazsa, zamanlayıcının `original_inference_steps` özniteliği varsayılan olarak kullanılır.

timesteps (`list[int]`, *isteğe bağlı*) : Gürültü azaltma süreci için kullanılacak özel zaman adımları. Tanımlanmamışsa, orijinal LCM eğitim/distilasyon zaman adımı zaman çizelgesinde eşit aralıklı `num_inference_steps` zaman adımı kullanılır. Azalan sırada olmalıdır.

guidance_scale (`float`, *opsiyonel*, varsayılan 7.5) : Daha yüksek bir guidance scale değeri, modelin metin `prompt`'u ile yakından ilişkili görseller üretmesini teşvik eder; bunun bedeli ise daha düşük görsel kalitedir. Guidance scale, `guidance_scale > 1` olduğunda etkinleşir. Orijinal latent consistency models makalesinin, guidance scale değerlerinin 1 azaltıldığı farklı bir CFG formülasyonu kullandığını (yani makale formülasyonunda CFG'nin `guidance_scale > 0` olduğunda etkinleştiğini) not ediniz.

num_images_per_prompt (`int`, *isteğe bağlı*, varsayılan 1) : Her istem için üretilecek görsel sayısı.

generator (`torch.Generator` veya `list[torch.Generator]`, *isteğe bağlı*) : Üretimi deterministik hale getirmek için bir [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html).

latents (`torch.Tensor`, *isteğe bağlı*) : Görsel üretimi için girdi olarak kullanılacak, Gauss dağılımından örneklenen önceden oluşturulmuş gürültülü latensler. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele `generator` kullanılarak örneklem yoluyla bir latens tensörü oluşturulur.

prompt_embeds (`torch.Tensor`, *isteğe bağlı*) : Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, metin gömme değerleri `prompt` girdi argümanından üretilir.

ip_adapter_image : (`PipelineImageInput`, *isteğe bağlı*): IP Adapters ile çalışmak için isteğe bağlı görüntü girişi.

ip_adapter_image_embeds (`list[torch.Tensor]`, *isteğe bağlı*) : IP-Adapter için önceden oluşturulmuş gömme vektörleri. IP-adapter sayısı ile aynı uzunlukta bir liste olmalıdır. Her öğe, `(batch_size, num_images, emb_dim)` biçiminde bir tensör olmalıdır. `do_classifier_free_guidance` `True` olarak ayarlandıysa negatif gömme vektörünü içermelidir. Sağlanmazsa, gömme vektörleri `ip_adapter_image` girdi argümanından hesaplanır.

output_type (`str`, *isteğe bağlı*, varsayılan `"pil"`) : Üretilen görüntünün çıktı biçimi. `PIL.Image` veya `np.array` arasında seçim yapın.

return_dict (`bool`, *isteğe bağlı*, varsayılan `True`) : Düz bir tuple yerine [StableDiffusionPipelineOutput](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput) döndürülüp döndürülmemesi.

cross_attention_kwargs (`dict`, *isteğe bağlı*) : Belirtilirse, [`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) içinde tanımlanan `AttentionProcessor`'ye aktarılan bir kwargs sözlüğü.

clip_skip (`int`, *isteğe bağlı*) : Prompt gömme hesaplamaları sırasında CLIP'ten atlanacak katman sayısı. 1 değeri, prompt gömme hesaplamaları için son öncesi katmanın çıktısının kullanılacağı anlamına gelir.

callback_on_step_end (`Callable`, *isteğe bağlı*) : Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan bir işlev. İşlev aşağıdaki argümanlarla çağrılır: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_kwargs`, `callback_on_step_end_tensor_inputs` tarafından belirtilen tüm tensörlerin listesini içerir.

callback_on_step_end_tensor_inputs (`list`, *isteğe bağlı*) : `callback_on_step_end` işlevi için girdi tensörlerinin listesi. Listede belirtilen tensörler, `callback_kwargs` argümanı olarak geçirilir. Yalnızca pipeline sınıfınızın `._callback_tensor_inputs` özniteliğinde listelenen değişkenleri dahil edebilirsiniz.

**Dönüş:** [StableDiffusionPipelineOutput](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput) veya `tuple`

`return_dict` `True` ise [StableDiffusionPipelineOutput](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/img2img#diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput) döndürülür, aksi takdirde bir `tuple` döndürülür; bu yapının ilk öğesi üretilen görsellerin listesini, ikinci öğesi ise ilgili üretilen görselin "not-safe-for-work" (nsfw) içerip içermediğini gösteren `bool` değerlerinin listesini içerir.

Üretim için pipeline'ın çağrı fonksiyonu.

Örnekler:
```py
>>> from diffusers import AutoPipelineForImage2Image
>>> import torch
>>> import PIL

>>> pipe = AutoPipelineForImage2Image.from_pretrained("SimianLuo/LCM_Dreamshaper_v7")
>>> # To save GPU memory, torch.float16 can be used, but it may compromise image quality.
>>> pipe.to(torch_device="cuda", torch_dtype=torch.float32)

>>> prompt = "High altitude snowy mountains"
>>> image = PIL.Image.open("./snowy_mountains.png")

>>> # Can be set to 1~50 steps. LCM support fast inference even <= 4 steps. Recommend: 1~8 steps.
>>> num_inference_steps = 4
>>> images = pipe(
...     prompt=prompt, image=image, num_inference_steps=num_inference_steps, guidance_scale=8.0
... ).images

>>> images[0].save("image.png")
```

#### enable_freeu[[diffusers.LatentConsistencyModelImg2ImgPipeline.enable_freeu]]

```python
enable_freeu(s1: float, s2: float, b1: float, b2: float)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2285)

**Parametreler:**

s1 (`float`) : 1. aşama için, atlanan özelliklerin katkılarını sönümlemek amacıyla kullanılan ölçekleme faktörü. Bu, geliştirilmiş gürültü azaltma sürecindeki "aşırı yumuşatma etkisini" azaltmak için yapılır.

s2 (`float`) : 2. aşama için, atlanan özelliklerin katkılarını azaltmak üzere kullanılan ölçekleme faktörü. Bu, geliştirilmiş gürültü azaltma sürecindeki "aşırı yumuşatma etkisini" (oversmoothing effect) hafifletmek için yapılır.

b1 (`float`) : Omurga özelliklerinin katkılarını artırmak için 1. aşama ölçekleme çarpanı.

b2 (`float`) : Omurga özelliklerinin katkılarını artırmak için 2. aşama ölçekleme çarpanı.

https://huggingface.co/papers/2309.11497'deki gibi FreeU mekanizmasını etkinleştirir.

Ölçekleme katsayılarının sonundaki ekler, bu katsayıların uygulandığı aşamaları temsil eder.

Stable Diffusion v1, v2 ve Stable Diffusion XL gibi farklı pipeline'lar için iyi çalıştığı bilinen değer kombinasyonları için [resmi depoya](https://github.com/ChenyangSi/FreeU) bakın.

#### disable_freeu[[diffusers.LatentConsistencyModelImg2ImgPipeline.disable_freeu]]

```python
disable_freeu()
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2307)

Etkinse, FreeU mekanizmasını devre dışı bırakır.

#### encode_prompt[[diffusers.LatentConsistencyModelImg2ImgPipeline.encode_prompt]]

```python
encode_prompt(prompt, device, num_images_per_prompt, do_classifier_free_guidance, negative_prompt = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_img2img.py#L241)

**Parametreler:**

prompt (`str` veya `list[str]`, *isteğe bağlı*) : kodlanacak istem

device : (`torch.device`): torch cihazı

num_images_per_prompt (`int`) : her istem için oluşturulacak görsel sayısı

do_classifier_free_guidance (`bool`) : sınıflandırıcı serbest yönlendirmenin (classifier free guidance) kullanılıp kullanılmayacağı

negative_prompt (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine `negative_prompt_embeds` parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani `guidance_scale` değeri `1`'den küçükse) yok sayılır.

prompt_embeds (`torch.Tensor`, *isteğe bağlı*) : Ön oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, *ör.* istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri `prompt` girdi argümanından oluşturulur.

negative_prompt_embeds (`torch.Tensor`, *isteğe bağlı*) : Ön oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, *ör.* istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds, `negative_prompt` girdi argümanından oluşturulur.

lora_scale (`float`, *isteğe bağlı*) : LoRA katmanları yüklendiyse, metin kodlayıcısının tüm LoRA katmanlarına uygulanacak bir LoRA ölçeği.

clip_skip (`int`, *isteğe bağlı*) : Prompt gömme hesaplamaları sırasında CLIP'ten atlanacak katman sayısı. 1 değeri, prompt gömme hesaplamaları için son öncesi katmanın çıktısının kullanılacağı anlamına gelir.

İsteği metin kodlayıcı gizli durumlarına kodlar.

#### get_guidance_scale_embedding[[diffusers.LatentConsistencyModelImg2ImgPipeline.get_guidance_scale_embedding]]

```python
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/latent_consistency_models/pipeline_latent_consistency_img2img.py#L576)

**Parametreler:**

w (`torch.Tensor`) : Belirtilen bir yönlendirme ölçeğiyle gömme vektörleri üretir; bu vektörler daha sonra zaman adımları gömmelerini zenginleştirmek için kullanılır.

embedding_dim (`int`, *isteğe bağlı*, varsayılan 512) : Üretilecek gömme boyutu.

dtype (`torch.dtype`, *isteğe bağlı*, varsayılan `torch.float32`) : Üretilen gömme (embedding) verilerinin veri türü.

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

`(len(w), embedding_dim)` biçiminde gömme vektörleri.

https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298 adresine bakın

## StableDiffusionPipelineOutput[[diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput]]

#### diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput[[diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput]]

```python
diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray, nsfw_content_detected: list[bool] | None)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion/pipeline_output.py#L10)

**Parametreler:**

images (`list[PIL.Image.Image]` veya `np.ndarray`) : `batch_size` uzunluğunda gürültüsü azaltılmış PIL görüntülerinin listesi veya `(batch_size, height, width, num_channels)` biçiminde NumPy dizisi.

nsfw_content_detected (`list[bool]`) : Üretilen ilgili görüntünün "iş yerinde uygun olmayan" (nsfw) içerik içerip içermediğini gösteren liste veya güvenlik kontrolü yapılamadıysa `None`.

Stable Diffusion hatları için çıktı sınıfı.

