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

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:

ModelEncoderGizli şekil (224px giriş)
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

Ö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).sample

AutoencoderRAE

sınıf 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 )

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ılan 768) — Kodlayıcı modelinin gizli boyutu.
  • encoder_patch_size (int, isteğe bağlı, varsayılan 14) — Encoder modelinin yama boyutu.
  • encoder_num_hidden_layers (int, isteğe bağlı, varsayılan 12) — Encoder modelindeki gizli katman sayısı.
  • patch_size (int, isteğe bağlı, varsayılan 16) — Çözücü yama boyutu (unpatchify ve çözücü başlığı için kullanılır).
  • encoder_input_size (int, isteğe bağlı, varsayılan 224) — Kodlayıcının beklediği giriş boyutu.
  • image_size (int, isteğe bağlı) — Çözücü çıktı görüntü boyutu. None ise, RAE-main'de olduğu gibi kodlayıcı jeton sayısı ve patch_size değerinden türetilir: image_size = patch_size * sqrt(num_patches), burada num_patches = (encoder_input_size // encoder_patch_size) ** 2.
  • num_channels (int, isteğe bağlı, varsayılan 3) — 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 (list veya tuple, 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 (list veya tuple, 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ılan 0.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ılan True) — Latentlerin 2D (B, C, H, W) biçimine yeniden şekillendirilip şekillendirilmeyeceği.
  • use_encoder_loss (bool, isteğe bağlı, varsayılan False) — 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

< >

( 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

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.
  • generator (torch.Generator, isteğe bağlı) — Örnekleme işlemini deterministik hale getirmek için kullanılan bir torch.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

< >

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

Parametreler

  • sample (torch.Tensor, şekli (batch_size, num_channels, height, width)) — Modelin son katmanından gelen çözümlenmiş çıktı örneği.

Çözümleme yönteminin çıktısı.

Update on GitHub