Diffusers documentation

AutoencoderRAE

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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:

ModelEncoderBentuk laten (input 224px)
nyu-visionx/RAE-dinov2-wReg-base-ViTXL-n08DINOv2-base768 x 16 x 16
nyu-visionx/RAE-dinov2-wReg-base-ViTXL-n08-i512DINOv2-base (512px)768 x 32 x 32
nyu-visionx/RAE-dinov2-wReg-small-ViTXL-n08DINOv2-small384 x 16 x 16
nyu-visionx/RAE-dinov2-wReg-large-ViTXL-n08DINOv2-large1024 x 16 x 16
nyu-visionx/RAE-siglip2-base-p16-i256-ViTXL-n08SigLIP2-base768 x 16 x 16
nyu-visionx/RAE-mae-base-p16-ViTXL-n08MAE-base768 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).sample

AutoencoderRAE

kelas diffusers.AutoencoderRAE

< >

( 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, defaultnya 768) — Ukuran tersembunyi dari model encoder.
  • encoder_patch_size (int, opsional, defaultnya 14) — Ukuran patch dari model encoder.
  • encoder_num_hidden_layers (int, opsional, default 12) — Jumlah lapisan tersembunyi dalam model encoder.
  • patch_size (int, opsional, default 16) — Ukuran patch decoder (digunakan untuk unpatchify dan kepala decoder).
  • encoder_input_size (int, opsional, default 224) — Ukuran input yang diharapkan oleh encoder.
  • image_size (int, opsional) — Ukuran gambar output decoder. Jika None, nilainya diturunkan dari jumlah token encoder dan patch_size seperti RAE-main: image_size = patch_size * sqrt(num_patches), di mana num_patches = (encoder_input_size // encoder_patch_size) ** 2.
  • num_channels (int, opsional, default 3) — 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 (list atau tuple, opsional) — Rata-rata opsional untuk normalisasi laten. Input Tensor diterima dan dikonversi menjadi daftar yang dapat diserialisasi ke config.
  • latents_std (list atau tuple, opsional) — Standar deviasi opsional untuk normalisasi laten. Input Tensor diterima dan dikonversi menjadi list yang dapat diserialisasi ke config.
  • noise_tau (float, opsional, default 0.0) — Tingkat noise untuk pelatihan (menambahkan noise ke latents selama pelatihan).
  • reshape_to_2d (bool, opsional, default True) — Apakah akan mengubah bentuk latents ke format 2D (B, C, H, W).
  • use_encoder_loss (bool, opsional, default False) — 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

< >

( x: Tensorreturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None )

decode

< >

( z: Tensorreturn_dict: bool = True )

forward

< >

( sample: Tensorreturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None ) → DecoderOutput or tuple

Parameter

  • sample (torch.Tensor) — Sampel input.
  • return_dict (bool, opsional, default True) — Apakah akan mengembalikan DecoderOutput alih-alih tuple biasa.
  • generator (torch.Generator, opsional) — torch.Generator untuk 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

< >

( sample: Tensorcommit_loss: typing.Optional[torch.FloatTensor] = None )

Parameter

  • sample (torch.Tensor dengan bentuk (batch_size, num_channels, height, width)) — Contoh output hasil dekoding dari lapisan terakhir model.

Output dari metode decoding.

Update on GitHub