Diffusers documentation
CogView3PlusTransformer2DModel
CogView3PlusTransformer2DModel
清华大学 & 智谱 AI 在 CogView3: Finer and Faster Text-to-Image Generation via Relay Diffusion 中介绍了 CogView3Plus 的 2D 数据 Diffusion Transformer 模型。
可以使用以下代码片段加载该模型。
from diffusers import CogView3PlusTransformer2DModel
transformer = CogView3PlusTransformer2DModel.from_pretrained("THUDM/CogView3Plus-3b", subfolder="transformer", dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu"CogView3PlusTransformer2DModel
类 diffusers.CogView3PlusTransformer2DModel
< source >( patch_size: int = 2in_channels: int = 16num_layers: int = 30attention_head_dim: int = 40num_attention_heads: int = 64out_channels: int = 16text_embed_dim: int = 4096time_embed_dim: int = 512condition_dim: int = 256pos_embed_max_size: int = 128sample_size: int = 128 )
参数
- patch_size (
int,默认为2) — 用于 patch 嵌入层的 patch 大小。 - in_channels (
int,默认为16) — 输入数据的通道数。 - num_layers (
int,默认为30) — 要使用的 Transformer 块层数。 - attention_head_dim (
int,默认为40) — 每个注意力头中的通道数。 - num_attention_heads (
int,默认为64) — 多头注意力机制中使用的注意力头数量。 - out_channels (
int,默认为16) — 输出中的通道数。 - text_embed_dim (
int,默认为4096) — 来自文本编码器的文本嵌入的输入维度。 - time_embed_dim (
int,默认为512) — 时间步嵌入的输出维度。 - condition_dim (
int,默认为256) — 输入 SDXL 风格分辨率条件(original_size、target_size、crop_coords)的嵌入维度。 - pos_embed_max_size (
int,默认为128) — 位置嵌入的最大分辨率。将从中截取形状为H x W的切片,并加到输入的 patch 化潜在变量上,其中H和W分别表示潜在变量的高度和宽度。值为 128 表示图像生成支持的最大高度和宽度为128 * vae_scale_factor * patch_size => 128 * 8 * 2 => 2048。 - sample_size (
int,默认为128) — 输入潜变量的基础分辨率。如果在生成过程中未提供 height/width,则使用该值来确定分辨率,即sample_size * vae_scale_factor => 128 * 8 => 1024
CogView3:通过中继扩散实现更精细、更快速的文本到图像生成 中介绍的 Transformer 模型。
forward
< source >( hidden_states: Tensorencoder_hidden_states: Tensortimestep: LongTensororiginal_size: Tensortarget_size: Tensorcrop_coords: Tensorreturn_dict: bool = True ) → torch.Tensor or ~models.transformer_2d.Transformer2DModelOutput
参数
- hidden_states (
torch.Tensor) — 输入hidden_states,形状为(batch size, channel, height, width)。 - encoder_hidden_states (
torch.Tensor) — 条件嵌入(由输入条件(例如提示词)计算得出的嵌入),形状为(batch_size, sequence_len, text_embed_dim) - timestep (
torch.LongTensor) — 用于指示去噪步骤。 - original_size (
torch.Tensor) — CogView3 使用类似 SDXL 的微条件机制来处理原始图像尺寸,具体说明见 https://huggingface.co/papers/2307.01952 中的 2.2 节。 - target_size (
torch.Tensor) — CogView3 使用类似 SDXL 的微条件机制来处理目标图像尺寸,具体说明见 https://huggingface.co/papers/2307.01952 中的第 2.2 节。 - crop_coords (
torch.Tensor) — CogView3 使用类似 SDXL 的微条件机制来处理裁剪坐标,具体说明见 https://huggingface.co/papers/2307.01952 中的第 2.2 节。 - return_dict (
bool,可选,默认为True) — 是否返回~models.transformer_2d.Transformer2DModelOutput而不是普通的元组。
返回值
torch.Tensor 或 ~models.transformer_2d.Transformer2DModelOutput
使用提供的输入作为条件进行去噪后的潜在变量。
Transformer2DModelOutput
类 diffusers.models.modeling_outputs.Transformer2DModelOutput
< source >( sample: torch.Tensor )
参数
- sample(形状为
(batch_size, num_channels, height, width)的torch.Tensor,或者如果 Transformer2DModel 是离散的,则为(batch size, num_vector_embeds - 1, num_latent_pixels))— 以encoder_hidden_states输入为条件的隐藏状态输出。如果是离散的,则返回未加噪潜在像素的概率分布。
Transformer2DModel 的输出。