Diffusers documentation

OmniGenTransformer2DModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

OmniGenTransformer2DModel

OmniGenの画像生成に対応するマルチモーダル指示を受け取るTransformerモデルです。

論文の抄録は以下の通りです:

大規模言語モデル(LLM)の登場により、言語生成タスクが統合され、人間と機械のインタラクションは革命を起こしました。しかし、画像生成の分野では、単一のフレームワーク内で多様なタスクを処理できる統合モデルは、まだほとんど探索されていません。本稿では、統合画像生成のための新しい拡散モデルである OmniGen を紹介します。OmniGen は、以下の特性を備えています。1) 統合性: OmniGen はテキストから画像を生成する能力を示すだけでなく、画像編集、対象物駆動型生成、視覚的条件付き生成などの多様な下流タスクを本質的にサポートします。2) 簡素さ: OmniGen のアーキテクチャは高度に簡素化されており、追加のプラグインは不要です。さらに、既存の拡散モデルと比較して、よりユーザーフレンドリーであり、追加の中間ステップを必要とせずに、指示を通じて複雑なタスクをエンドツーエンドで完了でき、画像生成のワークフローを大幅に簡素化します。3) 知識の転移: 統合形式での学習の恩恵により、OmniGen は異なるタスク間で知識を効果的に転移し、未見のタスクやドメインを管理し、新しい能力を発揮します。また、モデルの推論能力と、思考連鎖(chain-of-thought)メカニズムの潜在的な応用についても検討します。本作業は、汎用画像生成モデルへの最初の試みであり、将来の発展を促進するために、リソースを https://github.com/VectorSpaceLab/OmniGen で公開します。

import torch
from diffusers import OmniGenTransformer2DModel

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

OmniGenTransformer2DModel

class 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' )

パラメータ

  • in_channels (int, デフォルトは 4) — 入力におけるチャネル数。
  • patch_size (int、デフォルトは2) — パッチ埋め込み層で使用する空間パッチのサイズです。
  • hidden_size (int、デフォルト値は3072) — モデルの隠れ層の次元数です。
  • rms_norm_eps (float、デフォルトは 1e-5) — RMSNorm レイヤーの Eps。
  • num_attention_heads (int、デフォルトは 32) — マルチヘッドアテンションで使用するヘッドの数。
  • num_key_value_heads (int、デフォルトは32) — マルチヘッドアテンションにおけるキーとバリューに使用するヘッドの数。
  • intermediate_size (int、デフォルトは8192) — FeedForward層における隠れ層の次元数。
  • num_layers (int、デフォルトは32) — 使用するtransformerブロックの層数です。
  • pad_token_id (int、デフォルトは 32000) — パディングトークンのIDです。
  • vocab_size (int, デフォルトは 32064) — 埋め込み語彙のサイズです。
  • rope_base (int、デフォルトは10000) — RoPE を作成する際に使用する theta のデフォルト値です。
  • rope_scaling (dict, 任意) — RoPE のスケーリング係数です。short_factor と long_factor を含める必要があります。
  • pos_embed_max_size (int, デフォルトは 192) — 位置埋め込みの最大サイズです。
  • time_step_dim (int、デフォルトは 256) — タイムステップ埋め込みの出力次元。
  • flip_sin_to_cos (bool、デフォルトはTrue) — タイムステップ埋め込みを準備する際に、位置埋め込みの sin と cos を反転するかどうかを指定します。
  • downscale_freq_shift (int、デフォルトは 0) — タイムステップ埋め込みをダウンスケールする際に使用する周波数シフトです。
  • timestep_activation_fn (str、デフォルトは silu) — タイムステップ埋め込みに使用する活性化関数。

OmniGen(https://huggingface.co/papers/2409.11340)で導入された Transformer モデル。

forward

< >

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

パラメータ

  • hidden_states (torch.Tensor、形状 (batch_size, in_channels, height, width)) — 入力となる hidden_states。
  • timestep (torch.LongTensor) — デノイジングステップを示すために使用されます。
  • input_ids (torch.Tensor) — 条件付けとして使用されるマルチモーダルなテキストトークンID。
  • input_img_latents (list of torch.Tensor) — 条件付けに使用される入力画像の潜変数(latents)のリスト。
  • input_image_sizes (dict of int to list of int) — サンプルのインデックスから、入力画像の埋め込みを条件付けシーケンス内のどの位置に配置すべきかを指定するマッピングです。
  • attention_mask (torch.Tensor) — ジョイントマルチモーダルシーケンス用のアテンションマスク。
  • position_ids (torch.Tensor) — 位置埋め込みを計算するために使用される位置 ID。
  • return_dict (bool、任意、デフォルトは True) — プレーンなタプルではなく ~models.transformer_2d.Transformer2DModelOutput を返すかどうか。

戻り値

~models.transformer_2d.Transformer2DModelOutput または tuple

return_dict が True の場合、~models.transformer_2d.Transformer2DModelOutput が返され、それ以外の場合は通常の tuple が返されます。

OmniGenTransformer2DModelのforwardメソッドです。

Update on GitHub