Diffusers 文档
OmniGenTransformer2D模型
并获得增强的文档体验
开始使用
OmniGenTransformer2D模型
一个 Transformer 模型,接受多模态指令以生成用于 OmniGen 的图像。
论文摘要如下:
大型语言模型 (LLM) 的出现统一了语言生成任务,并彻底改变了人机交互。然而,在图像生成领域,一个能够在一个框架内处理各种任务的统一模型在很大程度上仍未被探索。在这项工作中,我们引入了 OmniGen,一个用于统一图像生成的新扩散模型。OmniGen 具有以下特点:1) 统一性:OmniGen 不仅展示了文本到图像的生成能力,还固有地支持各种下游任务,例如图像编辑、主体驱动生成和视觉条件生成。2) 简单性:OmniGen 的架构高度简化,无需额外插件。此外,与现有扩散模型相比,它更用户友好,可以通过指令端到端地完成复杂任务,无需额外的中间步骤,极大地简化了图像生成工作流程。3) 知识迁移:得益于统一格式的学习,OmniGen 有效地在不同任务之间迁移知识,管理未见任务和领域,并展现出新颖的能力。我们还探索了模型的推理能力和思维链机制的潜在应用。这项工作代表了通用图像生成模型的首次尝试,我们将在 https://github.com/VectorSpaceLab/OmniGen 发布我们的资源,以促进未来的发展。
import torch
from diffusers import OmniGenTransformer2DModel
transformer = OmniGenTransformer2DModel.from_pretrained("Shitao/OmniGen-v1-diffusers", subfolder="transformer", torch_dtype=torch.bfloat16)
OmniGenTransformer2D模型
class diffusers.OmniGenTransformer2D模型
< 源代码 >( in_channels: int = 4 patch_size: int = 2 hidden_size: int = 3072 rms_norm_eps: float = 1e-05 num_attention_heads: int = 32 num_key_value_heads: int = 32 intermediate_size: int = 8192 num_layers: int = 32 pad_token_id: int = 32000 vocab_size: int = 32064 max_position_embeddings: int = 131072 original_max_position_embeddings: int = 4096 rope_base: int = 10000 rope_scaling: typing.Dict = None pos_embed_max_size: int = 192 time_step_dim: int = 256 flip_sin_to_cos: bool = True downscale_freq_shift: int = 0 timestep_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 中引入的 Transformer 模型(https://huggingface.co/papers/2409.11340)。