Buckets:

hf-doc-build/doc / diffusers /main /tr /api /models /asymmetricautoencoderkl.md
mishig's picture
|
download
raw
9.28 kB
# AsymmetricAutoencoderKL
KL kaybı ile inpainting görevi için geliştirilmiş daha büyük varyasyonel otoenkoder (VAE) modeli: Zixin Zhu, Xuelu Feng, Dongdong Chen, Jianmin Bao, Le Wang, Yinpeng Chen, Lu Yuan, Gang Hua tarafından [Designing a Better Asymmetric VQGAN for StableDiffusion](https://huggingface.co/papers/2306.04632).
Makalenin özeti şudur:
*StableDiffusion, görüntü üretimi ve düzenleme dünyasında büyük yankı uyandıran devrim niteliğinde bir metinden görüntüye üretici modelidir. Piksel uzayında difüzyon modeli öğrenen geleneksel yöntemlerin aksine StableDiffusion, bir VQGAN aracılığıyla latent uzayda difüzyon modeli öğrenerek hem verimliliği hem de kaliteyi garanti altına alır. Sadece görüntü üretimi görevlerini desteklemekle kalmaz, aynı zamanda görüntü doldurma (inpainting) ve yerel düzenleme gibi gerçek görüntüler üzerinde görüntü düzenlemeye de olanak tanır. Ancak StableDiffusion'da kullanılan standart VQGAN'ın önemli miktarda bilgi kaybına yol açtığını ve düzenlenmemiş görüntü bölgelerinde bile bozulma artefaktlarına neden olduğunu gözlemledik. Bu amaçla, iki basit tasarıma sahip yeni bir asimetrik VQGAN öneriyoruz. Öncelikle, kodlayıcıdan gelen girdinin yanı sıra, doldurma (inpainting) gibi görevlere özgü önceliklerden (priors) bilgi birleştiren bir koşullu dal içeren çözücü (decoder) bulunmaktadır. İkincisi, çözücü, kodlayıcıdan çok daha ağırdır; bu da toplam çıkarım maliyetini yalnızca hafifçe artırarak daha ayrıntılı bir geri kazanıma olanak tanır. Asimetrik VQGAN'ımızın eğitim maliyeti düşüktür ve standart VQGAN kodlayıcısı ile StableDiffusion'ı değiştirmeden yalnızca yeni bir asimetrik çözücü yeniden eğitmek yeterlidir. Asimetrik VQGAN'ımız, StableDiffusion tabanlı doldurma (inpainting) ve yerel düzenleme yöntemlerinde yaygın olarak kullanılabilir. Kapsamlı deneyler, orijinal metinden görüntüye yeteneğini korurken doldurma ve düzenleme performansını önemli ölçüde iyileştirebildiğini göstermektedir. Kod, https://github.com/buxiangzhiren/Asymmetric_VQGAN adresinde mevcuttur.*
Değerlendirme sonuçları, orijinal makalenin 4.1 bölümünde bulunabilir.
## Mevcut denetim noktaları
* [https://huggingface.co/cross-attention/asymmetric-autoencoder-kl-x-1-5](https://huggingface.co/cross-attention/asymmetric-autoencoder-kl-x-1-5)
* [https://huggingface.co/cross-attention/asymmetric-autoencoder-kl-x-2](https://huggingface.co/cross-attention/asymmetric-autoencoder-kl-x-2)
## Örnek Kullanım
```python
from diffusers import AsymmetricAutoencoderKL, StableDiffusionInpaintPipeline
from diffusers.utils import load_image, make_image_grid
prompt = "a photo of a person with beard"
img_url = "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/repaint/celeba_hq_256.png"
mask_url = "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/repaint/mask_256.png"
original_image = load_image(img_url).resize((512, 512))
mask_image = load_image(mask_url).resize((512, 512))
pipe = StableDiffusionInpaintPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-inpainting")
pipe.vae = AsymmetricAutoencoderKL.from_pretrained("cross-attention/asymmetric-autoencoder-kl-x-1-5")
pipe.to("cuda") # or "mps", "xpu", "cpu"
image = pipe(prompt=prompt, image=original_image, mask_image=mask_image).images[0]
make_image_grid([original_image, mask_image, image], rows=1, cols=3)
```
## AsymmetricAutoencoderKL[[diffusers.AsymmetricAutoencoderKL]]
#### diffusers.AsymmetricAutoencoderKL[[diffusers.AsymmetricAutoencoderKL]]
```python
diffusers.AsymmetricAutoencoderKL(in_channels: int = 3, out_channels: int = 3, down_block_types: tuple = ('DownEncoderBlock2D',), down_block_out_channels: tuple = (64,), layers_per_down_block: int = 1, up_block_types: tuple = ('UpDecoderBlock2D',), up_block_out_channels: tuple = (64,), layers_per_up_block: int = 1, act_fn: str = 'silu', latent_channels: int = 4, norm_num_groups: int = 32, sample_size: int = 32, scaling_factor: float = 0.18215)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_asym_kl.py#L24)
**Parametreler:**
in_channels (int, *isteğe bağlı*, varsayılan 3) : Girdi görüntüsündeki kanal sayısı.
out_channels (int, *isteğe bağlı*, varsayılan 3) : Çıktıdaki kanal sayısı.
down_block_types (`tuple[str]`, *isteğe bağlı*, varsayılan `("DownEncoderBlock2D",)`) : aşağı örneklem bloğu türlerinin tuple'ı.
down_block_out_channels (`tuple[int]`, *isteğe bağlı*, varsayılan `(64,)`) : aşağı blok çıktı kanallarının tuple'ı.
layers_per_down_block (`int`, *isteğe bağlı*, varsayılan `1`) : Down block için katman sayısı.
up_block_types (`tuple[str]`, *isteğe bağlı*, varsayılan `("UpDecoderBlock2D",)`) : örnekleme bloğu türlerinin tuple'ı.
up_block_out_channels (`tuple[int]`, *isteğe bağlı*, varsayılan `(64,)`) : up blok çıktı kanallarının tuple'ı.
layers_per_up_block (`int`, *isteğe bağlı*, varsayılan `1`) : Yukarı blok için katman sayısı.
act_fn (`str`, *isteğe bağlı*, varsayılan `"silu"`) : Kullanılacak aktivasyon fonksiyonu.
latent_channels (`int`, *isteğe bağlı*, varsayılan 4) : Gizli uzaydaki kanal sayısı.
sample_size (`int`, *isteğe bağlı*, varsayılan `32`) : Örnek giriş boyutu.
norm_num_groups (`int`, *isteğe bağlı*, varsayılan `32`) : ResNet bloklarındaki ilk normalizasyon katmanında kullanılacak grup sayısı.
scaling_factor (`float`, *opsiyonel*, varsayılan 0.18215) : Eğitim setinin ilk partisi kullanılarak hesaplanan, eğitilmiş gizli uzayın bileşen bazlı standart sapması. Bu değer, difüzyon modeli eğitilirken gizli uzayın birim varyansa ölçeklenmesi için kullanılır. Gizli değişkenler, difüzyon modeline aktarılmadan önce `z = z * scaling_factor` formülüyle ölçeklenir. Kod çözülürken, gizli değişkenler şu formülle orijinal ölçeğe geri döndürülür: `z = 1 / scaling_factor * z`. Daha fazla ayrıntı için [High-Resolution Image Synthesis with Latent Diffusion Models](https://huggingface.co/papers/2112.10752) makalesinin 4.3.2 ve D.1 bölümlerine bakınız.
StableDiffusion için Daha İyi Asimetrik VQGAN Tasarımı https://huggingface.co/papers/2306.04632 . Görselleri latentlere kodlamak ve latent temsilleri görsellere çözmek için KL kaybı kullanan bir VAE modeli.
Bu model [ModelMixin](/docs/diffusers/main/tr/api/models/overview#diffusers.ModelMixin) sınıfından devralır. Tüm modeller için uygulanan genel yöntemlerini (indirme veya kaydetme gibi) görmek için üst sınıfın belgelendirmesine bakın.
#### forward[[diffusers.AsymmetricAutoencoderKL.forward]]
```python
forward(sample: Tensor, mask: typing.Optional[torch.Tensor] = None, sample_posterior: bool = False, return_dict: bool = True, generator: typing.Optional[torch.Generator] = None)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_asym_kl.py#L153)
**Parametreler:**
sample (`torch.Tensor`) : Girdi örneği.
mask (`torch.Tensor`, *isteğe bağlı*, varsayılan `None`) : İsteğe bağlı inpainting maskesi.
sample_posterior (`bool`, *isteğe bağlı*, varsayılan `False`) : Posterior'dan örneklemeye alınıp alınmayacağı.
return_dict (`bool`, *isteğe bağlı*, varsayılan `True`) : Düz bir tuple yerine `DecoderOutput` döndürülüp döndürülmemesi.
generator (`torch.Generator`, *isteğe bağlı*) : Örnekleme işlemini deterministik hale getirmek için kullanılan bir [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html).
**Dönüş:** `DecoderOutput` veya `tuple`
`return_dict` True ise, `DecoderOutput` döndürülür; aksi halde düz bir `tuple` döndürülür.
## AutoencoderKLOutput[[diffusers.models.modeling_outputs.AutoencoderKLOutput]]
#### diffusers.models.modeling_outputs.AutoencoderKLOutput[[diffusers.models.modeling_outputs.AutoencoderKLOutput]]
```python
diffusers.models.modeling_outputs.AutoencoderKLOutput(latent_dist: DiagonalGaussianDistribution)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/modeling_outputs.py#L7)
**Parametreler:**
latent_dist (`DiagonalGaussianDistribution`) : `Encoder`'ın `DiagonalGaussianDistribution` ortalama ve logvar olarak temsil edilen kodlanmış çıktıları. `DiagonalGaussianDistribution`, dağılımdan latent örneklemeye olanak tanır.
AutoencoderKL kodlama yönteminin çıktısı.
## DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]]
#### diffusers.models.autoencoders.vae.DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]]
```python
diffusers.models.autoencoders.vae.DecoderOutput(sample: Tensor, commit_loss: typing.Optional[torch.FloatTensor] = None)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/vae.py#L49)
**Parametreler:**
sample (`torch.Tensor`, şekli `(batch_size, num_channels, height, width)`) : Modelin son katmanından çözümlenmiş çıktı örneği.
Çözümleme yönteminin çıktısı.

Xet Storage Details

Size:
9.28 kB
·
Xet hash:
0e6261b57d146520a0622e53afe5c9f2f53f5c002285adea9fac4dd5dae20b4e

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