Buckets:

mishig's picture
|
download
raw
40.7 kB
# Metinden görüntüye
Stable Diffusion modeli, [CompVis](https://github.com/CompVis), [Stability AI](https://stability.ai/), [Runway](https://github.com/runwayml) ve [LAION](https://laion.ai/) araştırmacıları ve mühendisleri tarafından oluşturulmuştur. [StableDiffusionPipeline](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline), herhangi bir metin girdisi verildiğinde fotogerçekçi görüntüler üretebilir. Bu model, LAION-5B veri setinin bir alt kümesindeki 512x512 görüntüler üzerinde eğitilmiştir. Model, metin istemlerine göre koşullandırmak için dondurulmuş bir CLIP ViT-L/14 metin kodlayıcı kullanır. 860M parametreli UNet ve 123M parametreli metin kodlayıcısıyla model nispeten hafiftir ve tüketici GPU'larında çalıştırılabilir. Latent difüzyon, Stable Diffusion'un üzerine inşa edildiği araştırmadır. Robin Rombach, Andreas Blattmann, Dominik Lorenz, Patrick Esser ve Björn Ommer tarafından [High-Resolution Image Synthesis with Latent Diffusion Models](https://huggingface.co/papers/2112.10752) makalesinde önerilmiştir.
Makalenin özeti şudur:
*Görüntü oluşturma sürecini gürültü azaltma oto-kodlayıcılarının ardışık uygulanması olarak ayrıştırarak, difüzyon modelleri (DM) görüntü verisinde ve ötesinde son derece başarılı sentez sonuçlarına ulaşır. Ayrıca, bu modellerin formülasyonu, yeniden eğitim gerektirmeden görüntü üretim sürecini kontrol etmek için bir yönlendirme mekanizmasına olanak tanır. Ancak bu modeller genellikle doğrudan piksel uzayında çalıştığından, güçlü DM'lerin optimizasyonu genellikle yüzlerce GPU günü tüketir ve ardışık değerlendirmeler nedeniyle çıkarım maliyetlidir. Kalitelerini ve esnekliklerini koruyarak sınırlı hesaplama kaynaklarında DM eğitimi yapılabilmesi için, bunları güçlü önceden eğitilmiş oto-kodlayıcıların gizli uzayında (latent space) uygularız. Önceki çalışmalardan farklı olarak, difüzyon modellerini bu tür bir temsil üzerinde eğitmek, karmaşıklığın azaltılması ile detayın korunması arasında neredeyse optimal bir noktaya ilk kez ulaşmayı mümkün kılar ve görsel sadakati büyük ölçüde artırır. Model mimarisine çapraz dikkat (cross-attention) katmanları ekleyerek, difüzyon modellerini metin veya sınırlayıcı kutular gibi genel koşullandırma girdileri için güçlü ve esnek üreteçlere dönüştürür ve yüksek çözünürlüklü sentez, konvolüsyonel bir şekilde mümkün hale gelir. Gizli difüzyon modellerimiz (LDM), görüntü doldurma (inpainting) için yeni bir son derece başarılı sonuç (state of the art) elde ederken, koşulsuz görüntü üretimi, semantik sahne sentezi ve süper çözünürlük dahil olmak üzere çeşitli görevlerde son derece rekabetçi performans gösterir ve piksel tabanlı DM'lere kıyasla hesaplama gereksinimlerini önemli ölçüde azaltır. Kod, https://github.com/CompVis/latent-diffusion adresinde mevcuttur.*
> [!TIP]
> Scheduler hızı ve kalitesi arasındaki ödünleşimi nasıl keşfedebileceğinizi ve pipeline bileşenlerini nasıl verimli bir şekilde yeniden kullanabileceğinizi öğrenmek için Stable Diffusion [İpuçları](overview#tips) bölümünü mutlaka inceleyin!
>
> Bir görev için resmi kontrol noktalarından birini kullanmakla ilgileniyorsanız, [CompVis](https://huggingface.co/CompVis) ve [Stability AI](https://huggingface.co/stabilityai) Hub kuruluşlarını keşfedin!
## StableDiffusionPipeline[[diffusers.StableDiffusionPipeline]]
#### diffusers.StableDiffusionPipeline[[diffusers.StableDiffusionPipeline]]
```python
diffusers.StableDiffusionPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, image_encoder: CLIPVisionModelWithProjection = None, requires_safety_checker: bool = True)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.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ı. [DDIMScheduler](/docs/diffusers/main/tr/api/schedulers/ddim#diffusers.DDIMScheduler), [LMSDiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/lms_discrete#diffusers.LMSDiscreteScheduler) veya [PNDMScheduler](/docs/diffusers/main/tr/api/schedulers/pndm#diffusers.PNDMScheduler) olabilir.
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.
Stable Diffusion 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.StableDiffusionPipeline.__call__]]
```python
__call__(prompt: str | list[str] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, timesteps: list = None, sigmas: list = None, guidance_scale: float = 7.5, negative_prompt: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_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, guidance_rescale: float = 0.0, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list = ['latents'], **kwargs)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py#L778)
**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.
timesteps (`list[int]`, *isteğe bağlı*) : `set_timesteps` metodunda `timesteps` argümanını destekleyen zamanlayıcılarla gürültü azaltma süreci için kullanılacak özel zaman adımları. Tanımlanmamışsa, `num_inference_steps` geçirildiğinde varsayılan davranış kullanılacaktır. Azalan sırada olmalıdır.
sigmas (`list[float]`, *isteğe bağlı*) : `set_timesteps` metodunda `sigmas` argümanını destekleyen zamanlayıcılarla gürültü azaltma süreci için kullanılacak özel sigmalar. Tanımlanmamışsa, `num_inference_steps` geçirildiğinde varsayılan davranış kullanılacaktır.
guidance_scale (`float`, *opsiyonel*, varsayılan 7.5) : Daha yüksek bir guidance scale değeri, modelin `prompt` 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.
negative_prompt (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimde nelerin dahil edilmeyeceğini yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerine `negative_prompt_embeds` parametresini geçmeniz gerekir. Yönlendirme kullanılmadığında (`guidance_scale < 1`) yok sayılır.
num_images_per_prompt (`int`, *isteğe bağlı*, varsayılan 1) : Her istem için üretilecek görsel sayısı.
eta (`float`, *isteğe bağlı*, varsayılan 0.0) : [DDIM](https://huggingface.co/papers/2010.02502) makalesindeki eta (η) parametresine karşılık gelir. Yalnızca [DDIMScheduler](/docs/diffusers/main/tr/api/schedulers/ddim#diffusers.DDIMScheduler) için geçerlidir ve diğer zamanlayıcılarda yok sayılır.
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.
negative_prompt_embeds (`torch.Tensor`, *isteğe bağlı*) : Ön oluşturulmuş negatif metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, `negative_prompt_embeds`, `negative_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üğü.
guidance_rescale (`float`, *isteğe bağlı*, varsayılan 0.0) : [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) makalesindeki guidance rescale faktörü. Guidance rescale faktörü, sıfır terminal SNR kullanıldığında aşırı pozlamayı düzeltmelidir.
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`, `PipelineCallback`, `MultiPipelineCallbacks`, *opsiyonel*) : Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan, `PipelineCallback` veya `MultiPipelineCallbacks` alt sınıfı olan bir fonksiyon. 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 belirtildiği üzere tüm tensörlerin listesini içerecektir.
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
>>> import torch
>>> from diffusers import StableDiffusionPipeline
>>> pipe = StableDiffusionPipeline.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt).images[0]
```
#### enable_attention_slicing[[diffusers.StableDiffusionPipeline.enable_attention_slicing]]
```python
enable_attention_slicing(slice_size: str | int = 'auto')
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2048)
**Parametreler:**
slice_size (`str` veya `int`, *isteğe bağlı*, varsayılan `"auto"`) : `"auto"` olduğunda, dikkat başlarına giden girdiyi ikiye böler, böylece dikkat iki adımda hesaplanır. `"max"` ise, her seferinde yalnızca bir dilim çalıştırılarak maksimum miktarda bellek tasarrufu sağlanır. Bir sayı sağlanırsa, `attention_head_dim // slice_size` kadar dilim kullanılır. Bu durumda `attention_head_dim`, `slice_size`'ın katı olmalıdır.
Dilimlenmiş dikkat (attention) hesaplamasını etkinleştirir. Bu seçenek etkinleştirildiğinde, dikkat modülü dikkat hesaplamasını birkaç adımda gerçekleştirmek için girdi tensörünü dilimlere böler. Birden fazla dikkat başlığı (attention head) varsa, hesaplama her başlık üzerinde sırayla yapılır. Bu, küçük bir hız kaybı karşılığında bellek tasarrufu sağlamak için faydalıdır.
> [!WARNING] > ⚠️ Zaten `scaled_dot_product_attention` (SDPA) kullanıyorsanız dikkat dilimlemeyi etkinleştirmeyin
from PyTorch > 2.0 or xFormers. Bu dikkat hesaplamaları zaten çok bellek verimlidir, bu yüzden bu işlevi etkinleştirmenize gerek yoktur. SDPA veya xFormers ile dikkat dilimlemeyi etkinleştirirseniz, ciddi yavaşlamalara yol açabilir!
Örnekler:
```py
>>> import torch
>>> from diffusers import StableDiffusionPipeline
>>> pipe = StableDiffusionPipeline.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5",
... dtype=torch.float16,
... use_safetensors=True,
... )
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]
```
#### disable_attention_slicing[[diffusers.StableDiffusionPipeline.disable_attention_slicing]]
```python
disable_attention_slicing()
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2085)
Dilimlenmiş dikkat hesaplamasını devre dışı bırakır. `enable_attention_slicing` daha önce çağrıldıysa, dikkat tek adımda hesaplanır.
#### enable_xformers_memory_efficient_attention[[diffusers.StableDiffusionPipeline.enable_xformers_memory_efficient_attention]]
```python
enable_xformers_memory_efficient_attention(attention_op: typing.Optional[typing.Callable] = None)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L1993)
**Parametreler:**
attention_op (`Callable`, *isteğe bağlı*) : xFormers'in [`memory_efficient_attention()`](https://facebookresearch.github.io/xformers/components/ops.html#xformers.ops.memory_efficient_attention) fonksiyonunda `op` argümanı olarak kullanılmak üzere varsayılan `None` operatörünü geçersiz kılar.
[xFormers](https://facebookresearch.github.io/xformers/) ile bellek verimli dikkati etkinleştirin. Bu seçenek etkinleştirildiğinde, GPU bellek kullanımının daha düşük olduğunu ve çıkarım sırasında olası bir hızlanmayı gözlemlemelisiniz. Eğitim sırasında hızlanma garanti edilmemektedir.
> [!WARNING] > ⚠️ Hem memory efficient attention hem de sliced attention etkinleştirildiğinde, memory efficient
attention, > önceliğine sahiptir.
Örnekler:
```py
>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp
>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)
```
#### disable_xformers_memory_efficient_attention[[diffusers.StableDiffusionPipeline.disable_xformers_memory_efficient_attention]]
```python
disable_xformers_memory_efficient_attention()
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2024)
[xFormers](https://facebookresearch.github.io/xformers/) için bellek verimli dikkati devre dışı bırakın.
#### load_textual_inversion[[diffusers.StableDiffusionPipeline.load_textual_inversion]]
```python
load_textual_inversion(pretrained_model_name_or_path: str | list[str] | dict[str, torch.Tensor] | list[dict[str, torch.Tensor]], token: str | list[str] | None = None, tokenizer: 'PreTrainedTokenizer' | None = None, text_encoder: 'PreTrainedModel' | None = None, **kwargs)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/textual_inversion.py#L271)
**Parametreler:**
pretrained_model_name_or_path (`str` veya `os.PathLike` veya `list[str or os.PathLike]` veya `Dict` veya `list[Dict]`) : Aşağıdakilerden biri veya bunların bir listesi olabilir: - Hub'da barındırılan önceden eğitilmiş bir modelin *model kimliği* (örneğin `sd-concepts-library/low-poly-hd-logos-icons`) olan bir dize. - Metinsel tersine çevirme ağırlıklarını içeren bir *dizin* yolu (örneğin `./my_text_inversion_directory/`). - Metinsel tersine çevirme ağırlıklarını içeren bir *dosya* yolu (örneğin `./my_text_inversions.pt`). - Bir [torch state dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict).
token (`str` veya `list[str]`, *isteğe bağlı*) : Metinsel ters çevirme ağırlıkları için kullanılacak jetonu geçersiz kılar. `pretrained_model_name_or_path` bir liste ise, `token` da eşit uzunlukta bir liste olmalıdır.
text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTextModel), *isteğe bağlı*) : Donmuş metin kodlayıcı ([clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14)). Belirtilmezse, fonksiyon self.tokenizer değerini alır.
tokenizer ([CLIPTokenizer](https://huggingface.co/docs/transformers/main/en/model_doc/clip#transformers.CLIPTokenizer), *isteğe bağlı*) : Metni tokenleştirmek için bir `CLIPTokenizer`. Belirtilmezse, fonksiyon self.tokenizer değerini alır.
weight_name (`str`, *isteğe bağlı*) : Özel bir ağırlık dosyasının adı. Bu, aşağıdaki durumlarda kullanılmalıdır: - Kaydedilen metinsel ters çevirme dosyası 🤗 Diffusers biçimindeyse ancak `text_inv.bin` gibi belirli bir ağırlık adı altında kaydedildiyse. - Kaydedilen metinsel ters çevirme dosyası Automatic1111 biçimindeyse.
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.
hf_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.
subfolder (`str`, *isteğe bağlı*, varsayılan `""`) : Hub'da veya yerel olarak daha büyük bir model deposu içindeki bir model dosyasının alt klasör konumu.
mirror (`str`, *isteğe bağlı*) : Çin'de bir model indiriyorsanız erişilebilirlik sorunlarını çözmek için ayna kaynağı. Kaynağın güncelliğini veya güvenliğini garanti etmiyoruz; daha fazla bilgi için ayna sitesine başvurmalısınız.
[StableDiffusionPipeline](/docs/diffusers/main/tr/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline) metin kodlayıcısına Textual Inversion gömme değerlerini yükleyin (hem 🤗 Diffusers hem de Automatic1111 biçimleri desteklenir).
Örnek:
🤗 Diffusers biçiminde bir Textual Inversion gömme vektörü yüklemek için:
```py
from diffusers import StableDiffusionPipeline
import torch
model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")
pipe.load_textual_inversion("sd-concepts-library/cat-toy")
prompt = "A <cat-toy> backpack"
image = pipe(prompt, num_inference_steps=50).images[0]
image.save("cat-backpack.png")
```
Automatic1111 biçiminde bir Textual Inversion gömme vektörünü yüklemek için, vektörü önce indirin (örneğin [civitAI](https://civitai.com/models/3036?modelVersionId=9857) üzerinden) ve ardından vektörü yükleyin
yerel olarak:
```py
from diffusers import StableDiffusionPipeline
import torch
model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")
pipe.load_textual_inversion("./charturnerv2.pt", token="charturnerv2")
prompt = "charturnerv2, multiple views of the same character in the same outfit, a character turnaround of a woman wearing a black jacket and red shirt, best quality, intricate details."
image = pipe(prompt, num_inference_steps=50).images[0]
image.save("character.png")
```
#### from_single_file[[diffusers.StableDiffusionPipeline.from_single_file]]
```python
from_single_file(pretrained_model_link_or_path, **kwargs)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/single_file.py#L276)
**Parametreler:**
pretrained_model_link_or_path (`str` veya `os.PathLike`, *isteğe bağlı*) : Şunlardan biri olabilir: - Hub'daki `.ckpt` dosyasına bir bağlantı (örneğin `"https://huggingface.co/<repo_id>/blob/main/<path_to_file>.ckpt"`). - Tüm pipeline ağırlıklarını içeren bir *dosyanın* yolu.
dtype (`str` veya `torch.dtype`, *isteğe bağlı*) : Varsayılan `torch.dtype` değerini geçersiz kılar ve modeli başka bir dtype ile yükler.
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.
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.
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.
original_config_file (`str`, *isteğe bağlı*) : Modeli eğitmek için kullanılan orijinal yapılandırma dosyasının yolu. Sağlanmazsa, yapılandırma dosyası kontrol noktası dosyasından çıkarılır.
config (`str`, *isteğe bağlı*) : Şunlardan biri olabilir: - Hub'da barındırılan önceden eğitilmiş bir pipeline'ın *repo kimliği* (örneğin `CompVis/ldm-text2im-large-256`) olan bir dize. - Diffusers biçiminde pipeline bileşen yapılandırmalarını içeren bir *dizin* yolu (örneğin `./my_pipeline_directory/`).
disable_mmap ('bool', *isteğe bağlı*, varsayılan 'False') : Bir Safetensors modeli yüklenirken mmap'in devre dışı bırakılıp bırakılmayacağını belirtir. Model bir ağ biriminde veya sabit diskte olduğunda bu seçenek daha iyi performans gösterebilir.
kwargs (kalan anahtar kelime argümanları sözlüğü, *isteğe bağlı*) : Yüklenir ve kaydedilir değişkenleri (belirli pipeline sınıfının pipeline bileşenlerini) geçersiz kılmak için kullanılabilir. Geçersiz kılınan bileşenler doğrudan pipeline'ın `__init__` yöntemine iletilir. Daha fazla bilgi için aşağıdaki örneğe bakın.
`.ckpt` veya `.safetensors` biçiminde kaydedilmiş önceden eğitilmiş pipeline ağırlıklarından bir [DiffusionPipeline](/docs/diffusers/main/tr/api/pipelines/overview#diffusers.DiffusionPipeline) örneği oluşturun. Pipeline varsayılan olarak değerlendirme moduna ayarlanır (`model.eval()`).
Örnekler:
```py
>>> from diffusers import StableDiffusionPipeline
>>> # Download pipeline from huggingface.co and cache.
>>> pipeline = StableDiffusionPipeline.from_single_file(
... "https://huggingface.co/WarriorMama777/OrangeMixs/blob/main/Models/AbyssOrangeMix/AbyssOrangeMix.safetensors"
... )
>>> # Download pipeline from local file
>>> # file is downloaded under ./v1-5-pruned-emaonly.ckpt
>>> pipeline = StableDiffusionPipeline.from_single_file("./v1-5-pruned-emaonly.ckpt")
>>> # Enable float16 and move to GPU
>>> pipeline = StableDiffusionPipeline.from_single_file(
... "https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5/blob/main/v1-5-pruned-emaonly.ckpt",
... torch_dtype=torch.float16,
... )
>>> pipeline.to("cuda")
```
#### load_lora_weights[[diffusers.StableDiffusionPipeline.load_lora_weights]]
```python
load_lora_weights(pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor], adapter_name: str | None = None, hotswap: bool = False, **kwargs)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/lora_pipeline.py#L148)
**Parametreler:**
pretrained_model_name_or_path_or_dict (`str` veya `os.PathLike` veya `dict`) : [lora_state_dict()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.lora_state_dict) bkz.
adapter_name (`str`, *isteğe bağlı*) : Yüklenen adapter modeline atıfta bulunmak için kullanılacak adapter adı. Belirtilmezse, yüklenen adapterlerin toplam sayısını temsil eden i için `default_{i}` kullanılır.
low_cpu_mem_usage (`bool`, *isteğe bağlı*) : Rastgele ağırlıkları başlatmadan yalnızca önceden eğitilmiş LoRA ağırlıklarını yükleyerek model yükleme hızını artırır.
hotswap (`bool`, *isteğe bağlı*) : Varsayılan değeri `False`. Mevcut (LoRA) adaptörün, yerinde yeni yüklenen adaptörle değiştirilip değiştirilmeyeceğini belirtir. Bu, ek bir adaptör yüklemek yerine, mevcut adaptör ağırlıklarının yeni adaptörün ağırlıklarıyla değiştirileceği anlamına gelir. Bu işlem daha hızlı ve bellek açısından daha verimli olabilir. Ancak, hotswapping'in (sıcak değiştirme) ana avantajı, model torch.compile ile derlendiğinde, yeni adaptörün yüklenmesinin modelin yeniden derlenmesini gerektirmemesidir. Hotswapping kullanıldığında, geçirilen `adapter_name` parametresi, zaten yüklenmiş bir adaptörün adı olmalıdır. Yeni adaptör ile eski adaptörün farklı rank değerleri ve/veya LoRA alfa değerleri (yani ölçekleme) varsa, adaptörü yüklemekten önce ek bir metot çağırmanız gerekir: ```py pipeline = ... # load diffusers pipeline max_rank = ... # the highest rank among all LoRAs that you want to load # call *before* compiling and loading the LoRA adapter pipeline.enable_lora_hotswap(target_rank=max_rank) pipeline.load_lora_weights(file_name) # optionally compile the model now ``` Metin kodlayıcısının (text encoder) adaptörlerinin hotswapping ile değiştirilmesinin henüz desteklenmediğini unutmayın. Bu tekniğin bazı ek kısıtlamaları vardır ve bunlar burada belgelenmiştir: https://huggingface.co/docs/peft/main/en/package_reference/hotswap
kwargs (`dict`, *isteğe bağlı*) : [lora_state_dict()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.lora_state_dict)'e bakın.
`pretrained_model_name_or_path_or_dict` içinde belirtilen LoRA ağırlıklarını `self.unet` ve `self.text_encoder` içine yükler.
Tüm kwargs, `self.lora_state_dict`'ye iletilir.
State dict'in nasıl yüklendiğine dair daha fazla ayrıntı için [lora_state_dict()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.lora_state_dict) işlevine bakın.
`self.unet`'e durum sözlüğünün nasıl yüklendiğine dair daha fazla ayrıntı için [load_lora_into_unet()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.load_lora_into_unet) işlevine bakın.
`self.text_encoder`'e durum sözlüğünün nasıl yüklendiğine dair daha fazla ayrıntı için [load_lora_into_text_encoder()](/docs/diffusers/main/tr/api/loaders/lora#diffusers.loaders.StableDiffusionLoraLoaderMixin.load_lora_into_text_encoder) işlevine bakın.
#### save_lora_weights[[diffusers.StableDiffusionPipeline.save_lora_weights]]
```python
save_lora_weights(save_directory: str | os.PathLike, unet_lora_layers: dict = None, text_encoder_lora_layers: dict = None, is_main_process: bool = True, weight_name: str = None, save_function: typing.Callable = None, safe_serialization: bool = True, unet_lora_adapter_metadata = None, text_encoder_lora_adapter_metadata = None)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/loaders/lora_pipeline.py#L466)
**Parametreler:**
save_directory (`str` veya `os.PathLike`) : LoRA parametrelerinin kaydedileceği dizin. Var değilse oluşturulur.
unet_lora_layers (`dict[str, torch.nn.Module]` veya `dict[str, torch.Tensor]`) : `unet`'ye karşılık gelen LoRA katmanlarının state dict'i.
text_encoder_lora_layers (`dict[str, torch.nn.Module]` veya `dict[str, torch.Tensor]`) : `text_encoder`'a karşılık gelen LoRA katmanlarının durum sözlüğü. 🤗 Transformers'tan geldiği için metin kodlayıcı LoRA durum sözlüğünün açıkça geçirilmesi gerekir.
is_main_process (`bool`, *isteğe bağlı*, varsayılan `True`) : Bu işlemi çağıran sürecin ana süreç olup olmadığı. Dağıtık eğitim sırasında ve bu fonksiyonu tüm süreçlerde çağırmanız gerektiğinde kullanışlıdır. Bu durumda, yarış durumlarını (race condition) önlemek için `is_main_process=True` değerini yalnızca ana süreçte ayarlayın.
save_function (`Callable`) : Durum sözlüğünü (state dictionary) kaydetmek için kullanılacak işlev. Dağıtık eğitim sırasında `torch.save` yerine başka bir yöntem kullanmanız gerektiğinde faydalıdır. `DIFFUSERS_SAVE_MODE` ortam değişkeni ile yapılandırılabilir.
safe_serialization (`bool`, *isteğe bağlı*, varsayılan `True`) : Modelin `safetensors` ile mi yoksa geleneksel PyTorch yöntemiyle `pickle` kullanılarak mı kaydedileceğini belirtir.
unet_lora_adapter_metadata : state dict ile birlikte serialize edilecek unet ile ilişkili LoRA adapter meta verileri.
text_encoder_lora_adapter_metadata : Durum sözlüğüyle birlikte seri hale getirilecek metin kodlayıcıyla ilişkili LoRA adaptör meta verileri.
UNet ve metin kodlayıcıya karşılık gelen LoRA parametrelerini kaydedin.
#### encode_prompt[[diffusers.StableDiffusionPipeline.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/stable_diffusion/pipeline_stable_diffusion.py#L332)
**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.StableDiffusionPipeline.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/stable_diffusion/pipeline_stable_diffusion.py#L717)
**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ı.

Xet Storage Details

Size:
40.7 kB
·
Xet hash:
8ed6f610f34c365eb323f2842e7f66e756bc76be6a4c30592da6f187b7bfbac4

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.