Diffusers documentation

OmniGenTransformer2DModel

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

OmniGenTransformer2DModel

Một mô hình Transformer nhận các chỉ thị đa phương thức để tạo hình ảnh cho OmniGen.

Tóm tắt từ bài báo là:

Sự ra đời của các Mô hình Ngôn ngữ Lớn (LLM) đã thống nhất các tác vụ tạo ngôn ngữ và cách mạng hóa tương tác giữa con người và máy móc. Tuy nhiên, trong lĩnh vực tạo ảnh, một mô hình thống nhất có khả năng xử lý nhiều tác vụ khác nhau trong cùng một khung kiến trúc vẫn chưa được khám phá nhiều. Trong công trình này, chúng tôi giới thiệu OmniGen, một mô hình khuếch tán mới cho tạo ảnh thống nhất. OmniGen có các đặc điểm sau: 1) Thống nhất: OmniGen không chỉ thể hiện khả năng tạo ảnh từ văn bản mà còn hỗ trợ nội tại nhiều tác vụ hạ nguồn khác nhau, chẳng hạn như chỉnh sửa ảnh, tạo ảnh theo chủ thể và tạo ảnh có điều kiện thị giác. 2) Đơn giản: Kiến trúc của OmniGen được đơn giản hóa cao, loại bỏ nhu cầu về các plugin bổ sung. Hơn nữa, so với các mô hình khuếch tán hiện có, nó thân thiện hơn với người dùng và có thể hoàn thành các tác vụ phức tạp theo hướng dẫn một cách end-to-end mà không cần các bước trung gian bổ sung, từ đó đơn giản hóa đáng kể quy trình tạo ảnh. 3) Chuyển giao kiến thức: Nhờ học tập theo định dạng thống nhất, OmniGen chuyển giao kiến thức hiệu quả giữa các tác vụ khác nhau, quản lý các tác vụ và miền chưa từng thấy, và thể hiện các khả năng mới. Chúng tôi cũng khám phá khả năng suy luận của mô hình và các ứng dụng tiềm năng của cơ chế chain-of-thought. Công trình này đại diện cho nỗ lực đầu tiên về một mô hình tạo ảnh đa dụng, và chúng tôi sẽ phát hành tài nguyên của mình tại https://github.com/VectorSpaceLab/OmniGen để thúc đẩy các tiến bộ trong tương lai.

import torch
from diffusers import OmniGenTransformer2DModel

transformer = OmniGenTransformer2DModel.from_pretrained("Shitao/OmniGen-v1-diffusers", subfolder="transformer", dtype=torch.bfloat16)

OmniGenTransformer2DModel

lớp diffusers.OmniGenTransformer2DModel

< >

( in_channels: int = 4patch_size: int = 2hidden_size: int = 3072rms_norm_eps: float = 1e-05num_attention_heads: int = 32num_key_value_heads: int = 32intermediate_size: int = 8192num_layers: int = 32pad_token_id: int = 32000vocab_size: int = 32064max_position_embeddings: int = 131072original_max_position_embeddings: int = 4096rope_base: int = 10000rope_scaling: dict = Nonepos_embed_max_size: int = 192time_step_dim: int = 256flip_sin_to_cos: bool = Truedownscale_freq_shift: int = 0timestep_activation_fn: str = 'silu' )

Tham số

  • in_channels (int, mặc định là 4) — Số lượng kênh trong đầu vào.
  • patch_size (int, mặc định là 2) — Kích thước của các patch không gian được sử dụng trong lớp nhúng patch.
  • hidden_size (int, mặc định là 3072) — Kích thước của các lớp ẩn trong mô hình.
  • rms_norm_eps (float, mặc định là 1e-5) — Eps cho lớp RMSNorm.
  • num_attention_heads (int, mặc định là 32) — Số lượng đầu (heads) được sử dụng cho cơ chế chú ý đa đầu (multi-head attention).
  • num_key_value_heads (int, mặc định là 32) — Số lượng đầu (heads) được sử dụng cho các key và value trong cơ chế chú ý đa đầu (multi-head attention).
  • intermediate_size (int, mặc định là 8192) — Kích thước của lớp ẩn trong các lớp FeedForward.
  • num_layers (int, mặc định là 32) — Số lượng lớp của các khối transformer cần sử dụng.
  • pad_token_id (int, mặc định là 32000) — ID của token đệm.
  • vocab_size (int, mặc định là 32064) — Kích thước của bảng từ vựng cho embedding.
  • rope_base (int, mặc định là 10000) — Giá trị theta mặc định được sử dụng khi tạo RoPE.
  • rope_scaling (dict, tùy chọn) — Các hệ số tỷ lệ cho RoPE. Phải chứa short_factor và long_factor.
  • pos_embed_max_size (int, mặc định là 192) — Kích thước tối đa của các embedding vị trí.
  • time_step_dim (int, mặc định là 256) — Kích thước đầu ra của các embedding bước thời gian.
  • flip_sin_to_cos (bool, mặc định là True) — Có nên đảo sin và cos trong các nhúng vị trí khi chuẩn bị các nhúng bước thời gian hay không.
  • downscale_freq_shift (int, mặc định là 0) — Giá trị dịch tần số được sử dụng khi thu nhỏ các nhúng bước thời gian (timestep embeddings).
  • timestep_activation_fn (str, mặc định là silu) — Hàm kích hoạt được sử dụng cho các nhúng bước thời gian (timestep embeddings).

Mô hình Transformer được giới thiệu trong OmniGen (https://huggingface.co/papers/2409.11340).

forward

< >

( hidden_states: Tensortimestep: typing.Union[int, float, torch.FloatTensor]input_ids: Tensorinput_img_latents: listinput_image_sizes: dictattention_mask: Tensorposition_ids: Tensorreturn_dict: bool = True ) → ~models.transformer_2d.Transformer2DModelOutput or tuple

Tham số

  • hidden_states (torch.Tensor có hình dạng (batch_size, in_channels, height, width)) — hidden_states đầu vào.
  • timestep (torch.LongTensor) — Dùng để chỉ bước khử nhiễu.
  • input_ids (torch.Tensor) — Các id token văn bản đa phương thức được sử dụng làm điều kiện.
  • input_img_latents (list của torch.Tensor) — Danh sách các latent của hình ảnh đầu vào được sử dụng làm điều kiện.
  • input_image_sizes (dict của int tới list của int) — Bản ánh từ chỉ số mẫu tới các vị trí mà các embedding ảnh đầu vào nên được đặt trong chuỗi điều kiện.
  • attention_mask (torch.Tensor) — Mặt nạ chú ý cho chuỗi đa phương thức kết hợp.
  • position_ids (torch.Tensor) — Các id vị trí được sử dụng để tính các nhúng vị trí.
  • return_dict (bool, tùy chọn, mặc định là True) — Có nên trả về một ~models.transformer_2d.Transformer2DModelOutput thay vì một tuple thông thường hay không.

Trả về

~models.transformer_2d.Transformer2DModelOutput hoặc tuple

Nếu return_dict là True, một ~models.transformer_2d.Transformer2DModelOutput 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 OmniGenTransformer2DModel.

Update on GitHub