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

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: listinput_image_sizes: dictattention_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