Buckets:
| # ControlNet | |
| ControlNet, Lvmin Zhang, Anyi Rao ve Maneesh Agrawala tarafından [Adding Conditional Control to Text-to-Image Diffusion Models](https://huggingface.co/papers/2302.05543) makalesinde tanıtılmıştır. | |
| Bir ControlNet modeli ile, Stable Diffusion üretimini koşullandırmak ve kontrol etmek için ek bir kontrol görseli sağlayabilirsiniz. Örneğin, bir derinlik haritası sağlarsanız, ControlNet modeli, derinlik haritasındaki uzamsal bilgileri koruyan bir görsel üretir. Bu, görsel üretim sürecini kontrol etmenin daha esnek ve doğru bir yoludur. | |
| Makalenin özeti şudur: | |
| *ControlNet'i sunuyoruz; bu, büyük, önceden eğitilmiş metinden görüntüye difüzyon modellerine uzamsal koşullandırma kontrolleri eklemek için tasarlanmış bir sinir ağı mimarisidir. ControlNet, üretim için hazır büyük difüzyon modellerini kilitler ve milyarlarca görüntüyle önceden eğitilmiş derin ve sağlam kodlama katmanlarını, çeşitli bir koşullu kontrol seti öğrenmek için güçlü bir omurga olarak yeniden kullanır. Sinir mimarisi, parametreleri sıfırdan kademeli olarak büyüten ve finetuning'i (ince ayar) etkileyebilecek zararlı gürültünün olmasını engelleyen "sıfır konvolüsyonlar" (sıfır başlatılmış konvolüsyon katmanları) ile bağlanır. Stable Diffusion ile tekil veya birden fazla koşul kullanarak, istemlerle (prompt) veya istemsiz olarak kenarlar, derinlik, segmentasyon, insan pozu gibi çeşitli koşullandırma kontrollerini test ediyoruz. ControlNet'lerin eğitiminin küçük (<50k) ve büyük (>1m) veri setleriyle sağlam olduğunu gösteriyoruz. Kapsamlı sonuçlar, ControlNet'in görüntü difüzyon modellerini kontrol etmek için daha geniş uygulamaları kolaylaştırabileceğini göstermektedir.* | |
| Bu pipeline [ishan24](https://huggingface.co/ishan24) tarafından katkı sağlanmıştır. ❤️ Orijinal kod tabanı [NVlabs/Sana](https://github.com/NVlabs/Sana) adresinde bulunabilir ve resmi ControlNet checkpoint'leri [Efficient-Large-Model](https://huggingface.co/Efficient-Large-Model)'in Hub profilinde yer almaktadır. | |
| ## SanaControlNetPipeline[[diffusers.SanaControlNetPipeline]] | |
| #### diffusers.SanaControlNetPipeline[[diffusers.SanaControlNetPipeline]] | |
| ```python | |
| diffusers.SanaControlNetPipeline(tokenizer: GemmaTokenizer, text_encoder: Gemma2PreTrainedModel, vae: AutoencoderDC, transformer: SanaTransformer2DModel, controlnet: SanaControlNetModel, scheduler: DPMSolverMultistepScheduler) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/sana/pipeline_sana_controlnet.py#L196) | |
| [Sana](https://huggingface.co/papers/2410.10629) kullanarak metinden görüntüye üretim hattı. | |
| #### __call__[[diffusers.SanaControlNetPipeline.__call__]] | |
| ```python | |
| __call__(prompt: str | list[str] = None, negative_prompt: str = '', num_inference_steps: int = 20, timesteps: list = None, sigmas: list = None, guidance_scale: float = 4.5, control_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, controlnet_conditioning_scale: float | list[float] = 1.0, num_images_per_prompt: int | None = 1, height: int = 1024, width: int = 1024, 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, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, clean_caption: bool = False, use_resolution_binning: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list = ['latents'], max_sequence_length: int = 300, complex_human_instruction: list = ["Given a user prompt, generate an 'Enhanced prompt' that provides detailed visual descriptions suitable for image generation. Evaluate the level of detail in the user prompt:", '- If the prompt is simple, focus on adding specifics about colors, shapes, sizes, textures, and spatial relationships to create vivid and concrete scenes.', '- If the prompt is already detailed, refine and enhance the existing details slightly without overcomplicating.', 'Here are examples of how to transform or refine prompts:', '- User Prompt: A cat sleeping -> Enhanced: A small, fluffy white cat curled up in a round shape, sleeping peacefully on a warm sunny windowsill, surrounded by pots of blooming red flowers.', '- User Prompt: A busy city street -> Enhanced: A bustling city street scene at dusk, featuring glowing street lamps, a diverse crowd of people in colorful clothing, and a double-decker bus passing by towering glass skyscrapers.', 'Please generate only the enhanced description for the prompt below and avoid including any additional commentary or evaluations:', 'User Prompt: ']) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/sana/pipeline_sana_controlnet.py#L722) | |
| **Parametreler:** | |
| prompt (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmamışsa, bunun yerine `prompt_embeds` geçirilmelidir. | |
| 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. | |
| num_inference_steps (`int`, *isteğe bağlı*, varsayılan 20) : 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`, *isteğe bağlı*, varsayılan 4.5) : [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598)'de tanımlandığı gibi yönlendirme ölçeği. `guidance_scale`, [Imagen Paper](https://huggingface.co/papers/2205.11487)'deki 2. denklemindeki `w` olarak tanımlanır. Yönlendirme ölçeği, `guidance_scale > 1` olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği, genellikle daha düşük görüntü kalitesi pahasına, `prompt` ile yakından ilişkili görüntülerin üretilmesini teşvik eder. | |
| control_image (`torch.Tensor`, `PIL.Image.Image`, `np.ndarray`, `list[torch.Tensor]`, `list[PIL.Image.Image]`, `list[np.ndarray]`, : `list[list[torch.Tensor]]`, `list[list[np.ndarray]]` veya `list[list[PIL.Image.Image]]`): Üretim sırasında `unet`'e rehberlik sağlamak için sağlanacak ControlNet giriş koşulu. Tür `torch.Tensor` olarak belirtilirse, ControlNet'e olduğu gibi iletilir. `PIL.Image.Image` de bir görüntü olarak kabul edilebilir. Çıktı görüntüsünün boyutları varsayılan olarak `image`'ın boyutlarına eşittir. Yükseklik ve/veya genişlik geçirilirse, `image` buna göre yeniden boyutlandırılır. `init` içinde birden fazla ControlNet belirtilmişse, her bir ControlNet'e girdi olarak doğru şekilde toplu işlenebilmesi için görüntülerin bir liste olarak geçirilmesi gerekir. | |
| controlnet_conditioning_scale (`float` veya `list[float]`, *isteğe bağlı*, varsayılan 1.0) : ControlNet çıktıları, orijinal `unet` içindeki artıma eklenmeden önce `controlnet_conditioning_scale` ile çarpılır. `init` içinde birden fazla ControlNet belirtildiyse, ilgili ölçekleri bir liste olarak ayarlayabilirsiniz. | |
| num_images_per_prompt (`int`, *isteğe bağlı*, varsayılan 1) : Her istem için üretilecek görsel sayısı. | |
| height (`int`, *isteğe bağlı*, varsayılan: self.unet.config.sample_size) : Üretilen görüntünün piksel cinsinden yüksekliği. | |
| width (`int`, *isteğe bağlı*, varsayılan: self.unet.config.sample_size) : Üretilen görüntünün piksel cinsinden genişliği. | |
| eta (`float`, *isteğe bağlı*, varsayılan 0.0) : DDIM makalesindeki eta (η) parametresine karşılık gelir: https://huggingface.co/papers/2010.02502. Yalnızca [schedulers.DDIMScheduler](/docs/diffusers/main/tr/api/schedulers/ddim#diffusers.DDIMScheduler) için geçerlidir, diğerlerinde yok sayılır. | |
| generator (`torch.Generator` veya `list[torch.Generator]`, *isteğe bağlı*) : Üretimi deterministik hale getirmek için bir veya [torch üreteci(leri)](https://pytorch.org/docs/stable/generated/torch.Generator.html) listesi. | |
| 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ü latentler. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele `generator` kullanılarak örneklem yoluyla bir latent tensörü oluşturulur. | |
| 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. | |
| prompt_attention_mask (`torch.Tensor`, *isteğe bağlı*) : Metin gömme (embedding) için önceden oluşturulmuş dikkat maskesi (attention mask). | |
| negative_prompt_embeds (`torch.Tensor`, *isteğe bağlı*) : Önceden oluşturulmuş negatif metin gömme değerleri. PixArt-Sigma için bu negatif istem "" olmalıdır. Sağlanmazsa, negative_prompt_embeds, `negative_prompt` girdi argümanından oluşturulur. | |
| negative_prompt_attention_mask (`torch.Tensor`, *isteğe bağlı*) : Negatif metin gömme vektörleri için önceden oluşturulmuş dikkat maskesi. | |
| output_type (`str`, *isteğe bağlı*, varsayılan `"pil"`) : Üretilen görüntünün çıktı biçimi. [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.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 `~pipelines.stable_diffusion.IFPipelineOutput` döndürülecek mi? | |
| attention_kwargs : Belirtilirse, [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) içinde `self.processor` altında tanımlanan `AttentionProcessor`'a iletilen bir kwargs sözlüğü. | |
| clean_caption (`bool`, *isteğe bağlı*, varsayılan `True`) : Embedding oluşturulmadan önce başlığın temizlenip temizlenmeyeceğini belirtir. Bunun için `beautifulsoup4` ve `ftfy` paketlerinin yüklü olması gerekir. Bağımlılıklar yüklü değilse, embedding'ler ham istemden oluşturulur. | |
| use_resolution_binning (`bool` varsayılan olarak `True`) : `True` olarak ayarlanırsa, istenen yükseklik ve genişlik önce `ASPECT_RATIO_1024_BIN` kullanılarak en yakın çözünürlüklere eşlenir. Oluşturulan latentler görüntülere çözümlendikten sonra, istenen çözünürlüğe yeniden boyutlandırılır. Kare olmayan görüntüler üretmek için faydalıdır. | |
| 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. | |
| max_sequence_length (`int` varsayılan olarak `300`) : `prompt` ile kullanılacak maksimum dizi uzunluğu. | |
| complex_human_instruction (`list[str]`, *isteğe bağlı*) : Karmaşık insan dikkati için talimatlar: https://github.com/NVlabs/Sana/blob/main/configs/sana_app_config/Sana_1600M_app.yaml#L55. | |
| **Dönüş:** [SanaPipelineOutput](/docs/diffusers/main/tr/api/pipelines/sana_sprint#diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput) veya `tuple` | |
| `return_dict` `True` ise [SanaPipelineOutput](/docs/diffusers/main/tr/api/pipelines/sana_sprint#diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput) döndürülür, aksi halde ilk öğesi üretilen görsellerin listesinden oluşan bir `tuple` döndürülür | |
| Üretim için pipeline çağrıldığında tetiklenen işlev. | |
| Örnekler: | |
| ```py | |
| >>> import torch | |
| >>> from diffusers import SanaControlNetPipeline | |
| >>> from diffusers.utils import load_image | |
| >>> pipe = SanaControlNetPipeline.from_pretrained( | |
| ... "ishan24/Sana_600M_1024px_ControlNetPlus_diffusers", | |
| ... variant="fp16", | |
| ... torch_dtype={"default": torch.bfloat16, "controlnet": torch.float16, "transformer": torch.float16}, | |
| ... device_map="balanced", | |
| ... ) | |
| >>> cond_image = load_image( | |
| ... "https://huggingface.co/ishan24/Sana_600M_1024px_ControlNet_diffusers/resolve/main/hed_example.png" | |
| ... ) | |
| >>> prompt = 'a cat with a neon sign that says "Sana"' | |
| >>> image = pipe( | |
| ... prompt, | |
| ... control_image=cond_image, | |
| ... ).images[0] | |
| >>> image.save("output.png") | |
| ``` | |
| #### encode_prompt[[diffusers.SanaControlNetPipeline.encode_prompt]] | |
| ```python | |
| encode_prompt(prompt: str | list[str], do_classifier_free_guidance: bool = True, negative_prompt: str = '', num_images_per_prompt: int = 1, device: typing.Optional[torch.device] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, clean_caption: bool = False, max_sequence_length: int = 300, complex_human_instruction: list[str] | None = None, lora_scale: float | None = None) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/sana/pipeline_sana_controlnet.py#L295) | |
| **Parametreler:** | |
| prompt (`str` veya `list[str]`, *isteğe bağlı*) : kodlanacak istem | |
| negative_prompt (`str` veya `list[str]`, *isteğe bağlı*) : Görsel üretimi yönlendirmemek için kullanılan istem. Tanımlanmadıysa 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. PixArt-Alpha için bu değer "" olmalıdır. | |
| do_classifier_free_guidance (`bool`, *isteğe bağlı*, varsayılan `True`) : sınıflandırıcı serbest yönlendirmenin (classifier free guidance) kullanılıp kullanılmayacağı | |
| num_images_per_prompt (`int`, *isteğe bağlı*, varsayılan 1) : her istem için oluşturulacak görsel sayısı | |
| device : (`torch.device`, *isteğe bağlı*): Sonuç olarak elde edilen gömme vektörlerinin yerleştirileceği torch cihazı | |
| 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ı*) : Önceden oluşturulmuş negatif metin gömümlemeleri. Sana için, "" dizgisinin gömümlemeleri olmalıdır. | |
| clean_caption (`bool`, varsayılan `False`) : `True` ise, fonksiyon kodlamadan önce sağlanan başlığı ön işler ve temizler. | |
| max_sequence_length (`int`, varsayılan 300) : İstem için kullanılacak maksimum dizi uzunluğu. | |
| complex_human_instruction (`list[str]`, varsayılan `complex_human_instruction`) : `complex_human_instruction` boş değilse, işlev istem için karmaşık İnsan talimatını kullanır. | |
| İsteği metin kodlayıcı gizli durumlarına kodlar. | |
| ## SanaPipelineOutput[[diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput]] | |
| #### diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput[[diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput]] | |
| ```python | |
| diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/sana/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örselleri listesi veya `(batch_size, height, width, num_channels)` biçiminde numpy dizisi. PIL görselleri veya numpy dizisi, difüzyon hattının gürültüsü azaltılmış görsellerini temsil eder. | |
| Sana pipeline'ları için çıktı sınıfı. | |
Xet Storage Details
- Size:
- 17.5 kB
- Xet hash:
- 3afd0d1966efbb2fe6e433ebe6db4850a50802b21add6815a88eac4e76e8c618
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.