Diffusers documentation
PriorTransformer
PriorTransformer
Prior Transformer ban đầu được giới thiệu trong Hierarchical Text-Conditional Image Generation with CLIP Latents của Ramesh và cộng sự. Nó được sử dụng để dự đoán các embedding ảnh CLIP từ các embedding văn bản CLIP; các embedding ảnh được dự đoán thông qua một quá trình khuếch tán khử nhiễu.
Tóm tắt từ bài báo là:
Các mô hình tương phản như CLIP đã được chứng minh là có khả năng học các biểu diễn hình ảnh mạnh mẽ, nắm bắt được cả ngữ nghĩa lẫn phong cách. Để tận dụng các biểu diễn này cho việc tạo hình ảnh, chúng tôi đề xuất một mô hình hai giai đoạn: một mô hình tiên nghiệm (prior) tạo ra vector nhúng (embedding) hình ảnh CLIP dựa trên mô tả văn bản, và một bộ giải mã (decoder) tạo ra hình ảnh có điều kiện dựa trên vector nhúng hình ảnh đó. Chúng tôi cho thấy việc tạo ra các biểu diễn hình ảnh một cách tường minh giúp cải thiện tính đa dạng của hình ảnh với mức giảm thiểu về độ chân thực và độ tương đồng với mô tả. Các bộ giải mã của chúng tôi, có điều kiện dựa trên các biểu diễn hình ảnh, cũng có thể tạo ra các biến thể của một hình ảnh, giữ nguyên cả ngữ nghĩa lẫn phong cách của nó, trong khi thay đổi các chi tiết không thiết yếu không có trong biểu diễn hình ảnh. Hơn nữa, không gian nhúng chung của CLIP cho phép thao tác hình ảnh theo hướng dẫn ngôn ngữ theo cách zero-shot. Chúng tôi sử dụng mô hình khuếch tán (diffusion model) cho bộ giải mã và thử nghiệm cả mô hình tự hồi quy (autoregressive) lẫn mô hình khuếch tán cho mô hình tiên nghiệm, và nhận thấy rằng nhóm mô hình khuếch tán hiệu quả hơn về mặt tính toán và tạo ra các mẫu có chất lượng cao hơn.
PriorTransformer
lớp diffusers.PriorTransformer
< source >( num_attention_heads: int = 32attention_head_dim: int = 64num_layers: int = 20embedding_dim: int = 768num_embeddings = 77additional_embeddings = 4dropout: float = 0.0time_embed_act_fn: str = 'silu'norm_in_type: str | None = Noneembedding_proj_norm_type: str | None = Noneencoder_hid_proj_type: str | None = 'linear'added_emb_type: str | None = 'prd'time_embed_dim: int | None = Noneembedding_proj_dim: int | None = Noneclip_embed_dim: int | None = None )
Tham số
- num_attention_heads (
int, tùy chọn, mặc định là 32) — Số lượng đầu (heads) được sử dụng cho chú ý đa đầu (multi-head attention). - attention_head_dim (
int, tùy chọn, mặc định là 64) — Số lượng kênh trong mỗi head. - num_layers (
int, tùy chọn, mặc định là 20) — Số lượng lớp khối Transformer cần sử dụng. - embedding_dim (
int, tùy chọn, mặc định là 768) — Kích thước của đầu vào mô hìnhhidden_states - num_embeddings (
int, tùy chọn, mặc định là 77) — Số lượng embedding của đầu vào mô hìnhhidden_states - additional_embeddings (
int, tùy chọn, mặc định là 4) — Số lượng token bổ sung được thêm vàohidden_statesđã được chiếu. Độ dài thực tế củahidden_statesđược sử dụng lànum_embeddings + additional_embeddings. - dropout (
float, tùy chọn, mặc định là 0.0) — Xác suất dropout cần sử dụng. - time_embed_act_fn (
str, không bắt buộc, mặc định là ‘silu’) — Hàm kích hoạt được sử dụng để tạo nhúng bước thời gian. - norm_in_type (
str, tùy chọn, mặc định là None) — Lớp chuẩn hóa cần áp dụng lên các trạng thái ẩn trước khi truyền vào các khối Transformer. Đặt thànhNonenếu không cần chuẩn hóa. - embedding_proj_norm_type (
str, tùy chọn, mặc định là None) — Lớp chuẩn hóa cần áp dụng cho đầu vàoproj_embedding. Đặt thànhNonenếu không cần chuẩn hóa. - encoder_hid_proj_type (
str, tùy chọn, mặc định làlinear) — Lớp chiếu (projection layer) được áp dụng lên đầu vàoencoder_hidden_states. Đặt giá trị này thànhNonenếuencoder_hidden_stateslàNone. - added_emb_type (
str, tùy chọn, mặc định làprd) — Các embedding bổ sung để điều kiện hóa mô hình. Chọn từprdhoặcNone. Nếu chọnprd, một token chỉ thị tích vô hướng (đã lượng tử hóa) giữa embedding văn bản và embedding hình ảnh sẽ được thêm vào phía trước, như đề xuất trong bài báo unclip https://huggingface.co/papers/2204.06125 Nếu làNone, sẽ không có embedding bổ sung nào được thêm vào phía trước. - time_embed_dim (
int, *optional*, defaults to None) -- The dimension of timestep embeddings. If None, will be set tonum_attention_heads * attention_head_dim` - embedding_proj_dim (
int, tùy chọn, mặc định là None) — Kích thước củaproj_embedding. Nếu là None, sẽ được đặt thànhembedding_dim. - clip_embed_dim (
int, tùy chọn, mặc định là None) — Kích thước của đầu ra. Nếu là None, sẽ được đặt thànhembedding_dim.
Mô hình Transformer A Prior.
forward
< source >( hidden_statestimestep: typing.Union[torch.Tensor, float, int]proj_embedding: Tensorencoder_hidden_states: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.BoolTensor] = Nonereturn_dict: bool = True ) → PriorTransformerOutput or tuple
Tham số
- hidden_states (
torch.Tensorcó hình dạng(batch_size, embedding_dim)) — Các embedding ảnh được dự đoán hiện tại. - timestep (
torch.LongTensor) — Bước khử nhiễu hiện tại. - proj_embedding (
torch.Tensorcó hình dạng(batch_size, embedding_dim)) — Vector embedding đã được chiếu mà quá trình khử nhiễu được điều kiện dựa trên. - encoder_hidden_states (
torch.Tensorcó hình dạng(batch_size, num_embeddings, embedding_dim)) — Trạng thái ẩn của các nhúng văn bản mà quá trình khử nhiễu được điều kiện hóa dựa trên. - attention_mask (
torch.BoolTensorcó hình dạng(batch_size, num_embeddings)) — Mặt nạ cho các nhúng văn bản. - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về một PriorTransformerOutput thay vì một tuple thông thường hay không.
Trả về
PriorTransformerOutput hoặc tuple
If return_dict is True, a PriorTransformerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.
Phương thức forward của PriorTransformer.
Tắt các bộ xử lý chú ý tùy chỉnh và đặt cài đặt chú ý mặc định.
PriorTransformerOutput
lớp diffusers.models.transformers.prior_transformer.PriorTransformerOutput
< source >( predicted_image_embedding: Tensor )
Đầu ra của PriorTransformer.