Diffusers documentation
VQModel
VQModel
Mô hình VQ-VAE được giới thiệu trong Neural Discrete Representation Learning của Aaron van den Oord, Oriol Vinyals và Koray Kavukcuoglu. Mô hình này được sử dụng trong 🤗 Diffusers để giải mã các biểu diễn ẩn thành hình ảnh. Khác với AutoencoderKL, VQModel hoạt động trong không gian ẩn đã được lượng tử hóa.
Tóm tắt từ bài báo là:
Việc học các biểu diễn hữu ích mà không cần giám sát vẫn là một thách thức lớn trong học máy. Trong bài báo này, chúng tôi đề xuất một mô hình sinh đơn giản nhưng mạnh mẽ, có khả năng học các biểu diễn rời rạc như vậy. Mô hình của chúng tôi, Vector Quantised-Variational AutoEncoder (VQ-VAE), khác với VAE ở hai điểm chính: mạng encoder xuất ra các mã rời rạc thay vì liên tục; và phân phối tiên nghiệm được học thay vì tĩnh. Để học một biểu diễn ẩn rời rạc, chúng tôi tích hợp các ý tưởng từ lượng tử hóa vector (VQ). Việc sử dụng phương pháp VQ cho phép mô hình tránh được vấn đề “sụp đổ hậu nghiệm” — nơi các ẩn bị bỏ qua khi được ghép với một bộ giải mã tự hồi quy mạnh mẽ — thường được quan sát thấy trong khung VAE. Khi ghép các biểu diễn này với một tiên nghiệm tự hồi quy, mô hình có thể tạo ra các hình ảnh, video và giọng nói chất lượng cao, cũng như thực hiện chuyển đổi giọng nói chất lượng cao và học không giám sát các đơn vị âm vị, cung cấp thêm bằng chứng về tính hữu dụng của các biểu diễn đã học.
VQModel
lớp diffusers.VQModel
< source >( in_channels: int = 3out_channels: int = 3down_block_types: tuple = ('DownEncoderBlock2D',)up_block_types: tuple = ('UpDecoderBlock2D',)block_out_channels: tuple = (64,)layers_per_block: int = 1act_fn: str = 'silu'latent_channels: int = 3sample_size: int = 32num_vq_embeddings: int = 256norm_num_groups: int = 32vq_embed_dim: int | None = Nonescaling_factor: float = 0.18215norm_type: str = 'group'mid_block_add_attention = Truelookup_from_codebook = Falseforce_upcast = 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. - layers_per_block (
int, tùy chọn, mặc định là1) — Số lượng lớp trong mỗi 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. - latent_channels (
int, tùy chọn, mặc định là3) — Số lượng kênh trong không gian ẩn. - sample_size (
int, tùy chọn, mặc định là32) — Kích thước đầu vào mẫu. - num_vq_embeddings (
int, tùy chọn, mặc định là256) — Số lượng vector codebook trong VQ-VAE. - norm_num_groups (
int, tùy chọn, mặc định là32) — Số lượng nhóm cho các lớp chuẩn hóa. - vq_embed_dim (
int, tùy chọn) — Kích thước ẩn của các vector trong codebook của VQ-VAE. - scaling_factor (
float, tùy chọn, mặc định là0.18215) — Độ 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 để chuẩn hóa 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 chuẩn hóa bằng công thứcz = z * scaling_factortrước khi được truyền vào mô hình khuếch tán. Khi giải mã, các ẩn được chuẩn hóa ngược lại về thang đo ban đầu bằng 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. - norm_type (
str, tùy chọn, mặc định là"group") — Loại lớp chuẩn hóa cần sử dụng. Có thể là"group"hoặc"spatial".
Một mô hình VQ-VAE để giải mã các biểu diễn ẩn.
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ữ).
forward
< source >( sample: Tensorreturn_dict: bool = True ) → VQEncoderOutput or tuple
Tham số
- sample (
torch.Tensor) — Mẫu đầu vào. - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về một models.autoencoders.vq_model.VQEncoderOutput thay vì một tuple thông thường hay không.
Trả về
VQEncoderOutput hoặc tuple
Nếu return_dict là True, một VQEncoderOutput sẽ được trả về, ngược lại một tuple thông thường sẽ được trả về.
Phương thức forward của VQModel.
VQEncoderOutput
lớp diffusers.models.autoencoders.vq_model.VQEncoderOutput
< source >( latents: Tensor )
Đầu ra của phương thức mã hóa của VQModel.