Diffusers documentation

AutoencoderKLCogVideoX

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencoderKLCogVideoX

Mô hình autoencoder biến phân 3D (VAE) với tổn thất KL được sử dụng trong CogVideoX đã được giới thiệu trong CogVideoX: Text-to-Video Diffusion Models with An Expert Transformer bởi Đại học Thanh Hoa & ZhipuAI.

Mô hình có thể được tải bằng đoạn mã sau.

from diffusers import AutoencoderKLCogVideoX

vae = AutoencoderKLCogVideoX.from_pretrained("THUDM/CogVideoX-2b", subfolder="vae", dtype=torch.float16).to("cuda")  # or "mps", "xpu", "cpu"

AutoencoderKLCogVideoX

lớp diffusers.AutoencoderKLCogVideoX

< >

( in_channels: int = 3out_channels: int = 3down_block_types: tuple[str] = ('CogVideoXDownBlock3D', 'CogVideoXDownBlock3D', 'CogVideoXDownBlock3D', 'CogVideoXDownBlock3D')up_block_types: tuple[str] = ('CogVideoXUpBlock3D', 'CogVideoXUpBlock3D', 'CogVideoXUpBlock3D', 'CogVideoXUpBlock3D')block_out_channels: tuple[int] = (128, 256, 256, 512)latent_channels: int = 16layers_per_block: int = 3act_fn: str = 'silu'norm_eps: float = 1e-06norm_num_groups: int = 32temporal_compression_ratio: float = 4sample_height: int = 480sample_width: int = 720scaling_factor: float = 1.15258426shift_factor: float | None = Nonelatents_mean: tuple[float] | None = Nonelatents_std: tuple[float] | None = Noneforce_upcast: float = Trueuse_quant_conv: bool = Falseuse_post_quant_conv: bool = Falseinvert_scale_latents: bool = False )

Tham số

  • in_channels (int, tùy chọn, mặc định là 3) — Số kênh trong ảnh đầu vào.
  • out_channels (int, tùy chọn, mặc định là 3) — Số lượng kênh trong đầu ra.
  • down_block_types (tuple[str], tùy chọn, mặc định là ("DownEncoderBlock2D",)) — tuple các kiểu khối downsample.
  • up_block_types (tuple[str], tùy chọn, mặc định là ("UpDecoderBlock2D",)) — tuple các kiểu khối upsample.
  • block_out_channels (tuple[int], tùy chọn, mặc định là (64,)) — bộ tuple các kênh đầu ra của khối.
  • act_fn (str, tùy chọn, mặc định là "silu") — Hàm kích hoạt cần sử dụng.
  • sample_size (int, tùy chọn, mặc định là 32) — Kích thước đầu vào mẫu.
  • scaling_factor (float, tùy chọn, mặc định là 1.15258426) — Độ lệch chuẩn theo từng thành phần của không gian ẩn đã được huấn luyện, được tính toán bằng cách sử dụng lô đầu tiên của tập huấn luyện. Giá trị này được dùng để điều chỉnh không gian ẩn sao cho có phương sai bằng đơn vị khi huấn luyện mô hình khuếch tán. Các ẩn được điều chỉnh theo công thức z = z * scaling_factor trước khi được truyền vào mô hình khuếch tán. Khi giải mã, các ẩn được điều chỉnh trở lại thang đo ban đầu theo công thức: z = 1 / scaling_factor * z. Để biết thêm chi tiết, hãy tham khảo các mục 4.3.2 và D.1 của bài báo High-Resolution Image Synthesis with Latent Diffusion Models.
  • force_upcast (bool, tùy chọn, mặc định là True) — Nếu được bật, tham số này sẽ buộc VAE chạy ở float32 cho các pipeline có độ phân giải ảnh cao, chẳng hạn như SD-XL. VAE có thể được tinh chỉnh / huấn luyện ở dải giá trị thấp hơn mà không mất quá nhiều độ chính xác, trong trường hợp đó force_upcast có thể được đặt thành False - xem: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix

Mô hình VAE có tổn thất KL để mã hóa ảnh thành các ẩn và giải mã các biểu diễn ẩn thành ảnh. Được sử dụng trong CogVideoX.

Mô hình này kế thừa từ ModelMixin. Hãy xem tài liệu của lớp cha để biết các phương thức chung được triển khai cho tất cả các mô hình (chẳng hạn như tải xuống hoặc lưu trữ).

decode

< >

( z: Tensorreturn_dict: bool = True ) → ~models.vae.DecoderOutput or tuple

Tham số

  • z (torch.Tensor) — Lô đầu vào của các vector ẩn.
  • return_dict (bool, tùy chọn, mặc định là True) — Có nên trả về một ~models.vae.DecoderOutput thay vì một tuple thông thường hay không.

Trả về

~models.vae.DecoderOutput hoặc tuple

Nếu return_dict là True, một ~models.vae.DecoderOutput sẽ được trả về, ngược lại một tuple thông thường sẽ được trả về.

Giải mã một lô ảnh.

encode

< >

( x: Tensorreturn_dict: bool = True )

Tham số

  • x (torch.Tensor) — Lô đầu vào của các hình ảnh.
  • return_dict (bool, tùy chọn, mặc định là True) — Có nên trả về một ~models.autoencoder_kl.AutoencoderKLOutput thay vì một tuple thông thường hay không.

Mã hóa một lô ảnh thành các biến ẩn.

enable_tiling

< >

( tile_sample_min_height: int | None = Nonetile_sample_min_width: int | None = Nonetile_overlap_factor_height: float | None = Nonetile_overlap_factor_width: float | None = None )

Tham số

  • tile_sample_min_height (int, tùy chọn) — Chiều cao tối thiểu cần thiết để một mẫu được tách thành các ô (tile) theo chiều cao.
  • tile_sample_min_width (int, tùy chọn) — Chiều rộng tối thiểu cần thiết để một mẫu được tách thành các ô (tile) theo chiều rộng.
  • tile_overlap_factor_height (int, tùy chọn) — Lượng chồng lấn tối thiểu giữa hai gạch dọc liên tiếp. Điều này nhằm đảm bảo không có lỗi ghép gạch nào được tạo ra dọc theo chiều cao. Giá trị phải nằm trong khoảng từ 0 đến 1. Đặt giá trị cao hơn có thể khiến nhiều gạch hơn được xử lý, dẫn đến quá trình giải mã chậm hơn.
  • tile_overlap_factor_width (int, tùy chọn) — Lượng chồng lấn tối thiểu giữa hai lát cắt ngang liên tiếp. Điều này nhằm đảm bảo không có hiện tượng lỗi lát cắt (tiling artifacts) xảy ra trên chiều rộng. Giá trị phải nằm trong khoảng từ 0 đến 1. Đặt giá trị cao hơn có thể dẫn đến việc xử lý nhiều lát cắt hơn, làm chậm quá trình giải mã.

Bật giải mã VAE dạng gạch. Khi tùy chọn này được bật, VAE sẽ chia tensor đầu vào thành các gạch để tính toán giải mã và mã hóa qua nhiều bước. Điều này hữu ích để tiết kiệm một lượng lớn bộ nhớ và cho phép xử lý các hình ảnh lớn hơn.

forward

< >

( sample: Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None ) → ~models.vae.DecoderOutput or tuple

Tham số

  • sample (torch.Tensor) — Mẫu đầu vào.
  • sample_posterior (bool, tùy chọn, mặc định là False) — Có lấy mẫu từ posterior hay không.
  • return_dict (bool, tùy chọn, mặc định là True) — Có nên trả về một DecoderOutput thay vì một tuple thông thường hay không.
  • generator (torch.Generator, tùy chọn) — Một torch.Generator để làm cho việc lấy mẫu trở nên tất định.

Trả về

~models.vae.DecoderOutput hoặc tuple

Nếu return_dict là True, một ~models.vae.DecoderOutput sẽ được trả về, ngược lại một tuple thông thường sẽ được trả về.

tiled_decode

< >

( z: Tensorreturn_dict: bool = True ) → ~models.vae.DecoderOutput or tuple

Tham số

  • z (torch.Tensor) — Lô đầu vào của các vector ẩn.
  • return_dict (bool, tùy chọn, mặc định là True) — Có nên trả về một ~models.vae.DecoderOutput thay vì một tuple thông thường hay không.

Trả về

~models.vae.DecoderOutput hoặc tuple

Nếu return_dict là True, một ~models.vae.DecoderOutput sẽ được trả về, ngược lại một tuple thông thường sẽ được trả về.

Giải mã một lô ảnh bằng trình giải mã dạng gạch.

tiled_encode

< >

( x: Tensor ) → torch.Tensor

Tham số

  • x (torch.Tensor) — Lô đầu vào các video.

Trả về

torch.Tensor

Biểu diễn ẩn của các video đã được mã hóa.

Mã hóa một lô ảnh bằng trình mã hóa dạng gạch.

Khi tùy chọn này được bật, VAE sẽ chia tensor đầu vào thành các ô (tiles) để tính toán mã hóa qua nhiều bước. Điều này hữu ích để giữ cho việc sử dụng bộ nhớ luôn ổn định bất kể kích thước hình ảnh. Kết quả cuối cùng của mã hóa theo ô khác với mã hóa không theo ô vì mỗi ô sử dụng một bộ mã hóa khác nhau. Để tránh các hiện tượng méo do chia ô, các ô sẽ chồng lấn lên nhau và được trộn lẫn để tạo ra đầu vào mượt mà. Bạn vẫn có thể thấy những thay đổi theo kích thước ô trong đầu ra, nhưng chúng sẽ ít dễ nhận thấy hơn nhiều.

AutoencoderKLOutput

lớp diffusers.models.modeling_outputs.AutoencoderKLOutput

< >

( latent_dist: DiagonalGaussianDistribution )

Tham số

  • latent_dist (DiagonalGaussianDistribution) — Đầu ra được mã hóa của Encoder, được biểu diễn dưới dạng mean và logvar của DiagonalGaussianDistribution. DiagonalGaussianDistribution cho phép lấy mẫu các latent từ phân phối này.

Đầu ra của phương pháp mã hóa của AutoencoderKL.

DecoderOutput

lớp diffusers.models.autoencoders.vae.DecoderOutput

< >

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

Tham số

  • sample (torch.Tensor có hình dạng (batch_size, num_channels, height, width)) — Mẫu đầu ra đã giải mã từ lớp cuối cùng của mô hình.

Đầu ra của phương pháp giải mã.

Update on GitHub