Diffusers documentation
Tiny AutoEncoder
Tiny AutoEncoder
Tiny AutoEncoder for Stable Diffusion (TAESD) được giới thiệu trong madebyollin/taesd bởi Ollin Boer Bohan. Đây là phiên bản VAE thu nhỏ, được chưng cất từ Stable Diffusion, có khả năng giải mã các latent trong StableDiffusionPipeline hoặc StableDiffusionXLPipeline gần như tức thì.
Để sử dụng với Stable Diffusion v-2.1:
import torch
from diffusers import DiffusionPipeline, AutoencoderTiny
pipe = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-2-1-base", dtype=torch.float16
)
pipe.vae = AutoencoderTiny.from_pretrained("madebyollin/taesd", dtype=torch.float16)
pipe = pipe.to("cuda") # or "mps", "xpu", "cpu"
prompt = "slice of delicious New York-style berry cheesecake"
image = pipe(prompt, num_inference_steps=25).images[0]
imageĐể sử dụng với Stable Diffusion XL 1.0
import torch
from diffusers import DiffusionPipeline, AutoencoderTiny
pipe = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16
)
pipe.vae = AutoencoderTiny.from_pretrained("madebyollin/taesdxl", dtype=torch.float16)
pipe = pipe.to("cuda") # or "mps", "xpu", "cpu"
prompt = "slice of delicious New York-style berry cheesecake"
image = pipe(prompt, num_inference_steps=25).images[0]
imageAutoencoderTiny
lớp diffusers.AutoencoderTiny
< source >( in_channels: int = 3out_channels: int = 3encoder_block_out_channels: tuple = (64, 64, 64, 64)decoder_block_out_channels: tuple = (64, 64, 64, 64)act_fn: str = 'relu'upsample_fn: str = 'nearest'latent_channels: int = 4upsampling_scaling_factor: int = 2num_encoder_blocks: tuple = (1, 3, 3, 3)num_decoder_blocks: tuple = (3, 3, 3, 1)latent_magnitude: int = 3latent_shift: float = 0.5force_upcast: bool = Falsescaling_factor: float = 1.0shift_factor: float = 0.0 )
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. - encoder_block_out_channels (
tuple[int], tùy chọn, mặc định là(64, 64, 64, 64)) — bộ tuple các số nguyên đại diện cho số lượng kênh đầu ra của mỗi khối encoder. Độ dài của bộ tuple phải bằng với số lượng các khối encoder. - decoder_block_out_channels (
tuple[int], tùy chọn, mặc định là(64, 64, 64, 64)) — bộ tuple các số nguyên đại diện cho số lượng kênh đầu ra của mỗi khối decoder. Độ dài của bộ tuple phải bằng với số lượng khối decoder. - act_fn (
str, tùy chọn, mặc định là"relu") — Hàm kích hoạt được sử dụng xuyên suốt mô hình. - latent_channels (
int, tùy chọn, mặc định là 4) — Số lượng kênh trong biểu diễn ẩn. Không gian ẩn đóng vai trò là biểu diễn nén của ảnh đầu vào. - upsampling_scaling_factor (
int, tùy chọn, mặc định là 2) — Hệ số mở rộng cho quá trình upsampling trong bộ giải mã. Nó xác định kích thước của ảnh đầu ra trong quá trình upsampling. - num_encoder_blocks (
tuple[int], tuỳ chọn, mặc định là(1, 3, 3, 3)) — bộ tuple các số nguyên đại diện cho số lượng khối encoder ở mỗi giai đoạn của quá trình mã hóa. Độ dài của tuple phải bằng với số giai đoạn trong encoder. Mỗi giai đoạn có một số lượng khối encoder khác nhau. - num_decoder_blocks (
tuple[int], tuỳ chọn, mặc định là(3, 3, 3, 1)) — bộ tuple các số nguyên đại diện cho số lượng khối decoder ở mỗi giai đoạn của quá trình giải mã. Độ dài của tuple phải bằng với số giai đoạn trong decoder. Mỗi giai đoạn có một số lượng khối decoder khác nhau. - latent_magnitude (
float, tùy chọn, mặc định là 3.0) — Độ lớn của biểu diễn ẩn. Tham số này điều chỉnh các giá trị của biểu diễn ẩn để kiểm soát mức độ bảo toàn thông tin. - latent_shift (float, tùy chọn, mặc định là 0.5) — Lượng dịch chuyển áp dụng cho biểu diễn ẩn. Tham số này kiểm soát tâm của không gian ẩn.
- scaling_factor (
float, tùy chọn, mặc định là 1.0) — Độ 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 dữ liệu 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 (latents) đượ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 đưa về thang đo gốc 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. Tuy nhiên, đối với Autoencoder này, không có hệ số chuẩn hóa nào được sử dụng, do đó giá trị mặc định là 1.0. - force_upcast (
bool, tùy chọn, mặc định làFalse) — 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_upcastcó thể được đặt thànhFalse(xem AutoEncoder thân thiện với fp16 này).
Một mô hình VAE được chưng cất nhỏ gọn để mã hóa ảnh thành các biến ẩn và giải mã các biểu diễn ẩn thành ảnh.
AutoencoderTiny là một lớp bọc quanh bản triển khai gốc của TAESD.
Mô hình này kế thừa từ ModelMixin. 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).
forward
< source >( sample: Tensorreturn_dict: bool = True ) → DecoderOutput 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ộtDecoderOutputthay vì một tuple thông thường hay không.
Trả về
DecoderOutput hoặc tuple
Nếu return_dict là True, một DecoderOutput sẽ được trả về, ngược lại một tuple thông thường sẽ được trả về.
raw latents -> [0, 1]
[0, 1] -> latents thô
AutoencoderTinyOutput
lớp diffusers.models.autoencoders.autoencoder_tiny.AutoencoderTinyOutput
< source >( latents: Tensor )
Đầu ra của phương pháp mã hóa của AutoencoderTiny.