Diffusers documentation
Tutarlılık Çözücü
Tutarlılık Çözücü
Consistency decoder, StableDiffusionPipeline içindeki denoising UNet'ten latentleri çözmek için kullanılabilir. Bu decoder, DALL-E 3 teknik raporunda tanıtılmıştır.
Orijinal kod tabanı openai/consistencydecoder adresinde bulunabilir.
Şu anda çıkarım yalnızca 2 yineleme için desteklenmektedir.
Bu pipeline, bu sorundan madebyollin ve mrsteyk'in yardımı olmadan katkı olarak sunulamazdı.
ConsistencyDecoderVAE
sınıf diffusers.ConsistencyDecoderVAE
< source >( scaling_factor: float = 0.18215latent_channels: int = 4sample_size: int = 32encoder_act_fn: str = 'silu'encoder_block_out_channels: tuple = (128, 256, 512, 512)encoder_double_z: bool = Trueencoder_down_block_types: tuple = ('DownEncoderBlock2D', 'DownEncoderBlock2D', 'DownEncoderBlock2D', 'DownEncoderBlock2D')encoder_in_channels: int = 3encoder_layers_per_block: int = 2encoder_norm_num_groups: int = 32encoder_out_channels: int = 4decoder_add_attention: bool = Falsedecoder_block_out_channels: tuple = (320, 640, 1024, 1024)decoder_down_block_types: tuple = ('ResnetDownsampleBlock2D', 'ResnetDownsampleBlock2D', 'ResnetDownsampleBlock2D', 'ResnetDownsampleBlock2D')decoder_downsample_padding: int = 1decoder_in_channels: int = 7decoder_layers_per_block: int = 3decoder_norm_eps: float = 1e-05decoder_norm_num_groups: int = 32decoder_num_train_timesteps: int = 1024decoder_out_channels: int = 6decoder_resnet_time_scale_shift: str = 'scale_shift'decoder_time_embedding_type: str = 'learned'decoder_up_block_types: tuple = ('ResnetUpsampleBlock2D', 'ResnetUpsampleBlock2D', 'ResnetUpsampleBlock2D', 'ResnetUpsampleBlock2D') )
DALL-E 3 ile kullanılan tutarlılık çözücü.
Örnekler:
>>> import torch
>>> from diffusers import StableDiffusionPipeline, ConsistencyDecoderVAE
>>> vae = ConsistencyDecoderVAE.from_pretrained("openai/consistency-decoder", torch_dtype=torch.float16)
>>> pipe = StableDiffusionPipeline.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5", vae=vae, torch_dtype=torch.float16
... ).to("cuda")
>>> image = pipe("horse", generator=torch.manual_seed(0)).images[0]
>>> imagedecode
< source >( z: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = Truenum_inference_steps: int = 2 ) → DecoderOutput | tuple[torch.Tensor]
Parametreler
- z (torch.Tensor) — Girdi gizil vektörü.
- generator (torch.Generator | None) — Rastgele sayı üreteci. Varsayılan değer None'dir.
- return_dict (bool) — Çıktının sözlük olarak döndürülüp döndürülmeyeceğini belirtir. Varsayılan değer True'dur.
- num_inference_steps (int) — Çıkarım adım sayısı. Varsayılan değer 2'dir.
Dönüş değeri
DecoderOutput | tuple[torch.Tensor]
Çözümlenmiş çıktı.
Girdi gizil vektörü z'yi tutarlılık çözücü VAE modeli kullanarak çözer.
encode
< source >( x: Tensorreturn_dict: bool = True )
Bir görüntü grubunu latentlere kodlayın.
forward
< source >( sample: Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None ) → DecoderOutput or tuple
Parametreler
- sample (
torch.Tensor) — Girdi örneği. - sample_posterior (
bool, isteğe bağlı, varsayılanFalse) — Posterior'dan örneklemeye alınıp alınmayacağı. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerineDecoderOutputdöndürülüp döndürülmemesi. - generator (
torch.Generator, isteğe bağlı, varsayılanNone) — Örnekleme için kullanılacak üreteç.
Dönüş değeri
DecoderOutput veya tuple
return_dict True ise DecoderOutput döndürülür, aksi takdirde düz bir tuple döndürülür.
Özel dikkat işleyicilerini devre dışı bırakır ve varsayılan dikkat uygulamasını ayarlar.
tiled_encode
< source >( x: Tensorreturn_dict: bool = True ) → ConsistencyDecoderVAEOutput or tuple
Parametreler
- x (
torch.Tensor) — Görsellerin giriş partisi. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerineConsistencyDecoderVAEOutputdöndürülüp döndürülmemesi.
Dönüş değeri
ConsistencyDecoderVAEOutput veya tuple
return_dict True ise, ConsistencyDecoderVAEOutput döndürülür, aksi takdirde düz bir tuple döndürülür.
Bir görüntü grubunu, karolalı bir kodlayıcı kullanarak kodlayın.
Bu seçenek etkinleştirildiğinde, VAE, kodlamayı birkaç adımda hesaplamak için girdi tensörünü karolara böler. Bu, bellek kullanımının görüntü boyutundan bağımsız olarak sabit kalmasını sağlamak için faydalıdır. Karolarla kodlamanın nihai sonucu, her karonun farklı bir kodlayıcı kullandığı için karolasız kodlamadan farklıdır. Karola artefaktlarını önlemek için karolar üst üste biner ve pürüzsüz bir çıktı oluşturmak üzere birleştirilir. Çıktıda hâlâ karola boyutunda değişimler görebilirsiniz, ancak bunlar çok daha az belirgin olmalıdır.