Diffusers documentation
AutoencoderRAE
AutoencoderRAE
NYU VISIONx'ten Boyang Zheng, Nanye Ma, Shengbang Tong ve Saining Xie'nin Diffusion Transformers with Representation Autoencoders makalesinde tanıttığı Representation Autoencoder (RAE) modeli.
RAE, dondurulmuş önceden eğitilmiş bir görme kodlayıcıyı (DINOv2, SigLIP2 veya MAE) eğitilebilir bir ViT-MAE tarzı çözücüyle birleştirir. İki aşamalı RAE eğitim sürecinde, oto-kodlayıcı 1. aşamada (yeniden yapılandırma) eğitilir ve ardından bir difüzyon modeli, 2. aşamada (üretim) elde edilen gizli uzay üzerinde eğitilir.
Diffusers'ta yayınlanan ve desteklenen RAE modelleri şunlardır:
| Model | Encoder | Gizli şekil (224px giriş) |
|---|---|---|
nyu-visionx/RAE-dinov2-wReg-base-ViTXL-n08 | DINOv2-base | 768 x 16 x 16 |
nyu-visionx/RAE-dinov2-wReg-base-ViTXL-n08-i512 | DINOv2-base (512px) | 768 x 32 x 32 |
nyu-visionx/RAE-dinov2-wReg-small-ViTXL-n08 | DINOv2-small | 384 x 16 x 16 |
nyu-visionx/RAE-dinov2-wReg-large-ViTXL-n08 | DINOv2-large | 1024 x 16 x 16 |
nyu-visionx/RAE-siglip2-base-p16-i256-ViTXL-n08 | SigLIP2-base | 768 x 16 x 16 |
nyu-visionx/RAE-mae-base-p16-ViTXL-n08 | MAE-base | 768 x 16 x 16 |
Önceden eğitilmiş bir modelin yüklenmesi
from diffusers import AutoencoderRAE
model = AutoencoderRAE.from_pretrained(
"nyu-visionx/RAE-dinov2-wReg-base-ViTXL-n08"
).to("cuda").eval() # or "mps", "xpu", "cpu"Gerçek bir görüntünün kodlanması ve çözümlenmesi
import torch
from diffusers import AutoencoderRAE
from diffusers.utils import load_image
from torchvision.transforms.functional import to_tensor, to_pil_image
model = AutoencoderRAE.from_pretrained(
"nyu-visionx/RAE-dinov2-wReg-base-ViTXL-n08"
).to("cuda").eval() # or "mps", "xpu", "cpu"
image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png")
image = image.convert("RGB").resize((224, 224))
x = to_tensor(image).unsqueeze(0).to("cuda") # (1, 3, 224, 224), values in [0, 1]
with torch.no_grad():
latents = model.encode(x).latent # (1, 768, 16, 16)
recon = model.decode(latents).sample # (1, 3, 256, 256)
recon_image = to_pil_image(recon[0].clamp(0, 1).cpu())
recon_image.save("recon.png")Gizillemeli normalizasyon
Bazı önceden eğitilmiş kontrol noktaları, gizli uzayı normalize etmek için kanal başına latents_mean ve latents_std istatistiklerini içerir. Bu istatistikler mevcut olduğunda, encode ve decode sırasıyla normalizasyonu ve normalizasyonun tersini otomatik olarak uygular.
model = AutoencoderRAE.from_pretrained(
"nyu-visionx/RAE-dinov2-wReg-base-ViTXL-n08"
).to("cuda").eval() # or "mps", "xpu", "cpu"
# Latent normalization is handled automatically inside encode/decode
# when the checkpoint config includes latents_mean/latents_std.
with torch.no_grad():
latents = model.encode(x).latent # normalized latents
recon = model.decode(latents).sampleAutoencoderRAE
sınıf diffusers.AutoencoderRAE
< source >( encoder_type: str = 'dinov2'encoder_hidden_size: int = 768encoder_patch_size: int = 14encoder_num_hidden_layers: int = 12decoder_hidden_size: int = 512decoder_num_hidden_layers: int = 8decoder_num_attention_heads: int = 16decoder_intermediate_size: int = 2048patch_size: int = 16encoder_input_size: int = 224image_size: int | None = Nonenum_channels: int = 3encoder_norm_mean: list | None = Noneencoder_norm_std: list | None = Nonelatents_mean: typing.Union[list, tuple, torch.Tensor, NoneType] = Nonelatents_std: typing.Union[list, tuple, torch.Tensor, NoneType] = Nonenoise_tau: float = 0.0reshape_to_2d: bool = Trueuse_encoder_loss: bool = Falsescaling_factor: float = 1.0 )
Parametreler
- encoder_type (
str, isteğe bağlı, varsayılan"dinov2") — Kullanılacak donmuş kodlayıcının türü."dinov2","siglip2"veya"mae"değerlerinden biri. - encoder_hidden_size (
int, isteğe bağlı, varsayılan768) — Kodlayıcı modelinin gizli boyutu. - encoder_patch_size (
int, isteğe bağlı, varsayılan14) — Encoder modelinin yama boyutu. - encoder_num_hidden_layers (
int, isteğe bağlı, varsayılan12) — Encoder modelindeki gizli katman sayısı. - patch_size (
int, isteğe bağlı, varsayılan16) — Çözücü yama boyutu (unpatchify ve çözücü başlığı için kullanılır). - encoder_input_size (
int, isteğe bağlı, varsayılan224) — Kodlayıcının beklediği giriş boyutu. - image_size (
int, isteğe bağlı) — Çözücü çıktı görüntü boyutu.Noneise, RAE-main'de olduğu gibi kodlayıcı jeton sayısı vepatch_sizedeğerinden türetilir:image_size = patch_size * sqrt(num_patches), buradanum_patches = (encoder_input_size // encoder_patch_size) ** 2. - num_channels (
int, isteğe bağlı, varsayılan3) — Giriş/çıkış kanal sayısı. - encoder_norm_mean (
list, isteğe bağlı, varsayılan[0.485, 0.456, 0.406]) — Kodlayıcı girdi normalizasyonu için kanal bazlı ortalama (ImageNet varsayılanları). - encoder_norm_std (
list, isteğe bağlı, varsayılan[0.229, 0.224, 0.225]) — Kodlayıcı girdi normalizasyonu için kanal bazlı standart sapma (ImageNet varsayılanları). - latents_mean (
listveyatuple, isteğe bağlı) — Gizli (latent) normalizasyon için isteğe bağlı ortalama. Tensor girdileri kabul edilir ve yapılandırma-serializable listelere dönüştürülür. - latents_std (
listveyatuple, isteğe bağlı) — Gizli (latent) normalizasyon için isteğe bağlı standart sapma. Tensor girdileri kabul edilir ve yapılandırma-serializable listelere dönüştürülür. - noise_tau (
float, isteğe bağlı, varsayılan0.0) — Eğitim için gürültü seviyesi (eğitim sırasında latentlere gürültü ekler). - reshape_to_2d (
bool, isteğe bağlı, varsayılanTrue) — Latentlerin 2D (B, C, H, W) biçimine yeniden şekillendirilip şekillendirilmeyeceği. - use_encoder_loss (
bool, isteğe bağlı, varsayılanFalse) — Kayıp fonksiyonunda (ileri düzey eğitim için) kodlayıcı gizli durumlarının kullanılıp kullanılmayacağı.
Görselleri latentlere kodlamak ve latentleri görsellere çözmek için kullanılan Representation Autoencoder (RAE) modeli.
Bu model, öğrenilmiş temsillerden görüntüleri yeniden oluşturmak için dondurulmuş önceden eğitilmiş bir kodlayıcıyı (DINOv2, SigLIP2 veya MAE) ve eğitilebilir bir ViT çözücüsünü kullanır.
Bu model 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 belgelerine bakın.
encode
< source >( x: Tensorreturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None )
forward
< source >( sample: Tensorreturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None ) → DecoderOutput or tuple
Parametreler
- sample (
torch.Tensor) — Girdi örneği. - 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ı) — Örnekleme işlemini deterministik hale getirmek için kullanılan birtorch.Generator.
Dönüş değeri
DecoderOutput veya tuple
return_dict True ise, DecoderOutput döndürülür; aksi halde düz bir tuple döndürülür.
DecoderOutput
sınıf diffusers.models.autoencoders.vae.DecoderOutput
< source >( sample: Tensorcommit_loss: typing.Optional[torch.FloatTensor] = None )
Çözümleme yönteminin çıktısı.