Diffusers documentation
AutoencoderRAE
AutoencoderRAE
Model Representation Autoencoder (RAE) yang diperkenalkan dalam Diffusion Transformers with Representation Autoencoders oleh Boyang Zheng, Nanye Ma, Shengbang Tong, Saining Xie dari NYU VISIONx.
RAE menggabungkan encoder visual pretrained yang dibekukan (DINOv2, SigLIP2, atau MAE) dengan decoder bergaya ViT-MAE yang dapat dilatih. Dalam resep pelatihan RAE dua tahap, autoencoder dilatih pada tahap 1 (rekonstruksi), kemudian model difusi dilatih pada ruang laten yang dihasilkan pada tahap 2 (generasi).
Model-model RAE berikut telah dirilis dan didukung di Diffusers:
| Model | Encoder | Bentuk laten (input 224px) |
|---|---|---|
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 |
Memuat model terlatih
from diffusers import AutoencoderRAE
model = AutoencoderRAE.from_pretrained(
"nyu-visionx/RAE-dinov2-wReg-base-ViTXL-n08"
).to("cuda").eval() # or "mps", "xpu", "cpu"Enkoding dan dekoding gambar nyata
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")Normalisasi laten
Beberapa checkpoint pretrained menyertakan statistik latents_mean dan latents_std per-channel untuk menormalisasi ruang laten. Jika ada, encode dan decode secara otomatis menerapkan normalisasi dan denormalisasi, masing-masing.
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
kelas 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 )
Parameter
- encoder_type (
str, opsional, default"dinov2") — Jenis encoder beku yang akan digunakan. Salah satu dari"dinov2","siglip2", atau"mae". - encoder_hidden_size (
int, opsional, defaultnya768) — Ukuran tersembunyi dari model encoder. - encoder_patch_size (
int, opsional, defaultnya14) — Ukuran patch dari model encoder. - encoder_num_hidden_layers (
int, opsional, default12) — Jumlah lapisan tersembunyi dalam model encoder. - patch_size (
int, opsional, default16) — Ukuran patch decoder (digunakan untuk unpatchify dan kepala decoder). - encoder_input_size (
int, opsional, default224) — Ukuran input yang diharapkan oleh encoder. - image_size (
int, opsional) — Ukuran gambar output decoder. JikaNone, nilainya diturunkan dari jumlah token encoder danpatch_sizeseperti RAE-main:image_size = patch_size * sqrt(num_patches), di mananum_patches = (encoder_input_size // encoder_patch_size) ** 2. - num_channels (
int, opsional, default3) — Jumlah saluran input/output. - encoder_norm_mean (
list, opsional, default[0.485, 0.456, 0.406]) — Rata-rata per channel untuk normalisasi input encoder (default ImageNet). - encoder_norm_std (
list, opsional, default[0.229, 0.224, 0.225]) — Std per channel untuk normalisasi input encoder (default ImageNet). - latents_mean (
listatautuple, opsional) — Rata-rata opsional untuk normalisasi laten. Input Tensor diterima dan dikonversi menjadi daftar yang dapat diserialisasi ke config. - latents_std (
listatautuple, opsional) — Standar deviasi opsional untuk normalisasi laten. Input Tensor diterima dan dikonversi menjadi list yang dapat diserialisasi ke config. - noise_tau (
float, opsional, default0.0) — Tingkat noise untuk pelatihan (menambahkan noise ke latents selama pelatihan). - reshape_to_2d (
bool, opsional, defaultTrue) — Apakah akan mengubah bentuk latents ke format 2D (B, C, H, W). - use_encoder_loss (
bool, opsional, defaultFalse) — Apakah akan menggunakan hidden states encoder dalam loss (untuk pelatihan lanjutan).
Model Representation Autoencoder (RAE) untuk mengkodekan gambar menjadi latents dan mendekode latents menjadi gambar.
Model ini menggunakan encoder pretrained yang dibekukan (DINOv2, SigLIP2, atau MAE) dengan decoder ViT yang dapat dilatih untuk merekonstruksi gambar dari representasi yang dipelajari.
Model ini mewarisi dari ModelMixin. Periksa dokumentasi kelas induk untuk metode generiknya yang diimplementasikan untuk semua model (seperti mengunduh atau menyimpan).
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
Parameter
- sample (
torch.Tensor) — Sampel input. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikanDecoderOutputalih-alih tuple biasa. - generator (
torch.Generator, opsional) —torch.Generatoruntuk membuat sampling menjadi deterministik.
Mengembalikan
DecoderOutput atau tuple
Jika return_dict bernilai True, sebuah DecoderOutput akan dikembalikan, selain itu sebuah tuple biasa akan dikembalikan.
DecoderOutput
kelas diffusers.models.autoencoders.vae.DecoderOutput
< source >( sample: Tensorcommit_loss: typing.Optional[torch.FloatTensor] = None )
Output dari metode decoding.