Buckets:
| # AutoencoderDC | |
| MIT HAN Lab'dan Junyu Chen\*, Han Cai\*, Junsong Chen, Enze Xie, Shang Yang, Haotian Tang, Muyang Li, Yao Lu ve Song Han tarafından [DCAE](https://huggingface.co/papers/2410.10733)'de tanıtılan ve [SANA](https://huggingface.co/papers/2410.10629)'da kullanılan 2B Otomatik Kodlayıcı modeli. | |
| Makalenin özeti şudur: | |
| *Yüksek çözünürlüklü difüzyon modellerini hızlandırmak için yeni bir otoenkoder modeli ailesi olan Deep Compression Autoencoder (DC-AE)'yi sunuyoruz. Mevcut otoenkoder modelleri, orta düzey uzamsal sıkıştırma oranlarında (ör. 8x) etkileyici sonuçlar gösterse de, yüksek uzamsal sıkıştırma oranlarında (ör. 64x) tatmin edici bir yeniden yapılandırma doğruluğunu korumakta başarısız olmaktadır. Bu zorluğu, iki temel teknik tanıtarak ele alıyoruz: (1) Kalıntı Otoenkodlama (Residual Autoencoding), burada modellerimizi, yüksek uzamsal sıkıştırma oranına sahip otoenkoderların optimizasyon zorluğunu hafifletmek amacıyla, uzaydan kanala dönüştürülmüş özelliklere dayalı kalıntıları öğrenmeye yönelik tasarlıyoruz; (2) Ayrıştırılmış Yüksek Çözünürlük Uyumlandırması (Decoupled High-Resolution Adaptation), yüksek uzamsal sıkıştırma oranına sahip otoenkoderların genelleme cezasını azaltmak için verimli, ayrıştırılmış üç aşamalı bir eğitim stratejisi. Bu tasarımlarla, yeniden yapılandırma kalitesini koruyarak otoenkoderın uzamsal sıkıştırma oranını 128'e kadar artırıyoruz. DC-AE'mizi latent difüzyon modellerine uyguladığımızda, doğruluk düşüşü olmadan önemli bir hızlanma elde ediyoruz. Örneğin, ImageNet 512x512 üzerinde, yaygın olarak kullanılan SD-VAE-f8 otoenkoderına kıyasla, UViT-H için H100 GPU üzerinde 19.1x çıkarım hızlanması ve 17.9x eğitim hızlanması sağlarken daha iyi bir FID değeri elde ediyoruz. Kodumuz [bu https URL](https://github.com/mit-han-lab/efficientvit) adresinde mevcuttur.* | |
| Aşağıdaki DCAE modelleri Diffusers'ta yayınlanmış ve desteklenmektedir. | |
| | Diffusers biçimi | Orijinal biçim | | |
| |:----------------:|:---------------:| | |
| | [`mit-han-lab/dc-ae-f32c32-sana-1.0-diffusers`](https://huggingface.co/mit-han-lab/dc-ae-f32c32-sana-1.0-diffusers) | [`mit-han-lab/dc-ae-f32c32-sana-1.0`](https://huggingface.co/mit-han-lab/dc-ae-f32c32-sana-1.0) | |
| | [`mit-han-lab/dc-ae-f32c32-in-1.0-diffusers`](https://huggingface.co/mit-han-lab/dc-ae-f32c32-in-1.0-diffusers) | [`mit-han-lab/dc-ae-f32c32-in-1.0`](https://huggingface.co/mit-han-lab/dc-ae-f32c32-in-1.0) | |
| | [`mit-han-lab/dc-ae-f32c32-mix-1.0-diffusers`](https://huggingface.co/mit-han-lab/dc-ae-f32c32-mix-1.0-diffusers) | [`mit-han-lab/dc-ae-f32c32-mix-1.0`](https://huggingface.co/mit-han-lab/dc-ae-f32c32-mix-1.0) | |
| | [`mit-han-lab/dc-ae-f64c128-in-1.0-diffusers`](https://huggingface.co/mit-han-lab/dc-ae-f64c128-in-1.0-diffusers) | [`mit-han-lab/dc-ae-f64c128-in-1.0`](https://huggingface.co/mit-han-lab/dc-ae-f64c128-in-1.0) | |
| | [`mit-han-lab/dc-ae-f64c128-mix-1.0-diffusers`](https://huggingface.co/mit-han-lab/dc-ae-f64c128-mix-1.0-diffusers) | [`mit-han-lab/dc-ae-f64c128-mix-1.0`](https://huggingface.co/mit-han-lab/dc-ae-f64c128-mix-1.0) | |
| | [`mit-han-lab/dc-ae-f128c512-in-1.0-diffusers`](https://huggingface.co/mit-han-lab/dc-ae-f128c512-in-1.0-diffusers) | [`mit-han-lab/dc-ae-f128c512-in-1.0`](https://huggingface.co/mit-han-lab/dc-ae-f128c512-in-1.0) | |
| | [`mit-han-lab/dc-ae-f128c512-mix-1.0-diffusers`](https://huggingface.co/mit-han-lab/dc-ae-f128c512-mix-1.0-diffusers) | [`mit-han-lab/dc-ae-f128c512-mix-1.0`](https://huggingface.co/mit-han-lab/dc-ae-f128c512-mix-1.0) | |
| Bu model [lawrence-cj](https://github.com/lawrence-cj) tarafından katkıda bulunmuştur. | |
| Modeli Diffusers biçiminde [from_pretrained()](/docs/diffusers/main/tr/api/models/overview#diffusers.ModelMixin.from_pretrained) ile yükleyin. | |
| ```python | |
| from diffusers import AutoencoderDC | |
| ae = AutoencoderDC.from_pretrained("mit-han-lab/dc-ae-f32c32-sana-1.0-diffusers", dtype=torch.float32).to("cuda") # or "mps", "xpu", "cpu" | |
| ``` | |
| ## Diffusers'da bir modeli `from_single_file` ile yükleyin | |
| ```python | |
| from difusers import AutoencoderDC | |
| ckpt_path = "https://huggingface.co/mit-han-lab/dc-ae-f32c32-sana-1.0/blob/main/model.safetensors" | |
| model = AutoencoderDC.from_single_file(ckpt_path) | |
| ``` | |
| `AutoencoderDC` modelinin, eşleşen checkpoint anahtarlarına sahip ancak farklı ölçekleme faktörleri kullanan `in` ve `mix` tek dosya checkpoint varyantları vardır. Diffusers'ın yalnızca checkpoint'e dayanarak modelle kullanılacak doğru config dosyasını otomatik olarak çıkarabilmesi mümkün değildir ve model, varsayılan olarak `mix` varyantı config dosyası kullanılarak yapılandırılır. Otomatik olarak belirlenen config'i geçersiz kılmak için, `in` varyantı checkpoint'leriyle tek dosya yükleme kullanırken `config` argümanını kullanın. | |
| ```python | |
| from diffusers import AutoencoderDC | |
| ckpt_path = "https://huggingface.co/mit-han-lab/dc-ae-f128c512-in-1.0/blob/main/model.safetensors" | |
| model = AutoencoderDC.from_single_file(ckpt_path, config="mit-han-lab/dc-ae-f128c512-in-1.0-diffusers") | |
| ``` | |
| ## AutoencoderDC[[diffusers.AutoencoderDC]] | |
| #### diffusers.AutoencoderDC[[diffusers.AutoencoderDC]] | |
| ```python | |
| diffusers.AutoencoderDC(in_channels: int = 3, latent_channels: int = 32, attention_head_dim: int = 32, encoder_block_types: str | tuple[str] = 'ResBlock', decoder_block_types: str | tuple[str] = 'ResBlock', encoder_block_out_channels: tuple = (128, 256, 512, 512, 1024, 1024), decoder_block_out_channels: tuple = (128, 256, 512, 512, 1024, 1024), encoder_layers_per_block: tuple = (2, 2, 2, 3, 3, 3), decoder_layers_per_block: tuple = (3, 3, 3, 3, 3, 3), encoder_qkv_multiscales: tuple = ((), (), (), (5,), (5,), (5,)), decoder_qkv_multiscales: tuple = ((), (), (), (5,), (5,), (5,)), upsample_block_type: str = 'pixel_shuffle', downsample_block_type: str = 'pixel_unshuffle', decoder_norm_types: str | tuple[str] = 'rms_norm', decoder_act_fns: str | tuple[str] = 'silu', encoder_out_shortcut: bool = True, decoder_in_shortcut: bool = True, decoder_conv_act_fn: str = 'relu', scaling_factor: float = 1.0) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_dc.py#L380) | |
| **Parametreler:** | |
| in_channels (`int`, varsayılan `3`) : Örneklerdeki giriş kanal sayısı. | |
| latent_channels (`int`, varsayılan `32`) : Gizli uzay temsilindeki kanal sayısı. | |
| encoder_block_types (`str | tuple[str]`, varsayılan `"ResBlock"`) : Kodlayıcıda kullanılacak blok tür(ü/leri). | |
| decoder_block_types (`str | tuple[str]`, varsayılan `"ResBlock"`) : Dekoderde kullanılacak blok tür(ü/leri). | |
| encoder_block_out_channels (`tuple[int, ...]`, varsayılan `(128, 256, 512, 512, 1024, 1024)`) : Kodlayıcıdaki her blok için çıktı kanalı sayısı. | |
| decoder_block_out_channels (`tuple[int, ...]`, varsayılan `(128, 256, 512, 512, 1024, 1024)`) : Çözücüdeki her blok için çıktı kanalı sayısı. | |
| encoder_layers_per_block (`tuple[int]`, varsayılan `(2, 2, 2, 3, 3, 3)`) : Kodlayıcıdaki blok başına katman sayısı. | |
| decoder_layers_per_block (`tuple[int]`, varsayılan `(3, 3, 3, 3, 3, 3)`) : Çözücüdeki blok başına katman sayısı. | |
| encoder_qkv_multiscales (`tuple[tuple[int, ...], ...]`, varsayılan `((), (), (), (5,), (5,), (5,))`) : Kodlayıcının QKV (query-key-value) dönüşümleri için çok ölçekli yapılandırmalar. | |
| decoder_qkv_multiscales (`tuple[tuple[int, ...], ...]`, varsayılan `((), (), (), (5,), (5,), (5,))`) : Dekoderin QKV (query-key-value) dönüşümleri için çok ölçekli yapılandırmalar. | |
| upsample_block_type (`str`, varsayılan `"pixel_shuffle"`) : Dekoderde yukarı örneklemeye (upsampling) kullanılacak blok türü. | |
| downsample_block_type (`str`, varsayılan `"pixel_unshuffle"`) : Kodlayıcıda indirgeme için kullanılacak blok türü. | |
| decoder_norm_types (`str | tuple[str]`, varsayılan `"rms_norm"`) : Dekoderde kullanılacak normalizasyon tür(ü/leri). | |
| decoder_act_fns (`str | tuple[str]`, varsayılan `"silu"`) : Dekoderde kullanılacak aktivasyon fonksiyonu(ları). | |
| encoder_out_shortcut (`bool`, varsayılan `True`) : Encoder'ın sonunda kısayol kullanılıp kullanılmayacağı. | |
| decoder_in_shortcut (`bool`, varsayılan `True`) : Dekoderin başlangıcında kısayolun kullanılıp kullanılmayacağı. | |
| decoder_conv_act_fn (`str`, varsayılan `"relu"`) : Dekoderin sonunda kullanılacak aktivasyon fonksiyonu. | |
| scaling_factor (`float`, varsayılan `1.0`) : Gizli özelliklerin karekök ortalama karesinin çarpımsal tersidir. Bu, difüzyon modelinin eğitimi sırasında gizli uzayın birim varyansa sahip olacak şekilde ö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 çözme sırasında gizli değişkenler, orijinal ölçeğe şu formülle geri ölçeklenir: `z = 1 / scaling_factor * z`. | |
| [DCAE](https://huggingface.co/papers/2410.10733)'de tanıtılan ve [SANA](https://huggingface.co/papers/2410.10629)'da kullanılan bir Autoencoder 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. | |
| #### encode[[diffusers.AutoencoderDC.encode]] | |
| ```python | |
| encode(x: Tensor, return_dict: bool = True) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_dc.py#L548) | |
| **Parametreler:** | |
| x (`torch.Tensor`) : Giriş görüntü partisi. | |
| return_dict (`bool`, varsayılan `True`) : Düz bir tuple yerine `~models.vae.EncoderOutput` döndürülüp döndürülmemesi. | |
| **Dönüş:** | |
| Kodlanmış videoların gizil (latent) temsilleri. `return_dict` True ise bir `~models.vae.EncoderOutput` döndürülür, aksi halde düz bir `tuple` döndürülür. | |
| Bir görüntü grubunu latentlere kodlayın. | |
| #### decode[[diffusers.AutoencoderDC.decode]] | |
| ```python | |
| decode(z: Tensor, return_dict: bool = True) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_dc.py#L582) | |
| **Parametreler:** | |
| z (`torch.Tensor`) : Gizil vektörlerin giriş partisi. | |
| return_dict (`bool`, varsayılan `True`) : Düz bir tuple yerine `~models.vae.DecoderOutput` döndürülüp döndürülmemesi. | |
| **Dönüş:** `~models.vae.DecoderOutput` veya `tuple` | |
| return_dict True ise, `~models.vae.DecoderOutput` döndürülür, aksi takdirde düz bir `tuple` döndürülür. | |
| Bir görüntü grubunu çözümlen. | |
| #### enable_tiling[[diffusers.AutoencoderDC.enable_tiling]] | |
| ```python | |
| enable_tiling(tile_sample_min_height: int | None = None, tile_sample_min_width: int | None = None, tile_sample_stride_height: float | None = None, tile_sample_stride_width: float | None = None) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_dc.py#L506) | |
| **Parametreler:** | |
| tile_sample_min_height (`int`, *isteğe bağlı*) : Bir örneğin yükseklik boyutu boyunca karolalara ayrılabilmesi için gereken minimum yükseklik. | |
| tile_sample_min_width (`int`, *isteğe bağlı*) : Bir örneğin genişlik boyutu boyunca karolalara ayrılabilmesi için gereken minimum genişlik. | |
| tile_sample_stride_height (`int`, *isteğe bağlı*) : İki ardışık dikey karoyu arasındaki minimum örtüşme miktarı. Bu, yükseklik boyutu boyunca karo artefaktlarının oluşmamasını sağlamak içindir. | |
| tile_sample_stride_width (`int`, *isteğe bağlı*) : İki ardışık yatay karoyu arasındaki adım. Bu, genişlik boyutu boyunca karo artefaktlarının oluşmamasını sağlamak içindir. | |
| Döşemeli AE çözümlenmesini etkinleştirir. Bu seçenek etkinleştirildiğinde, AE girdi tensörünü döşemelere böler ve çözümlenme ile kodlamayı birden fazla adımda hesaplar. Bu, büyük miktarda bellek tasarrufu sağlamak ve daha büyük görüntülerin işlenmesine olanak tanımak için kullanışlıdır. | |
| #### forward[[diffusers.AutoencoderDC.forward]] | |
| ```python | |
| forward(sample: Tensor, return_dict: bool = True) | |
| ``` | |
| [Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_dc.py#L708) | |
| **Parametreler:** | |
| sample (`torch.Tensor`) : Girdi örneği. | |
| 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. | |
| **Dönüş:** `~models.vae.DecoderOutput` veya `tuple` | |
| `return_dict` True ise, `~models.vae.DecoderOutput` döndürülür; aksi halde düz bir `tuple` döndürülür. | |
| ## 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:
- 13.3 kB
- Xet hash:
- 4f66709e766ee1024d6b740844c3e4d292d6ad6ebae9977f09b44c5e69b717ab
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.