Buckets:
OmniGenTransformer2DModel
Um modelo Transformer que aceita instruções multimodais para gerar imagens para o OmniGen.
O resumo do artigo é:
O surgimento dos Large Language Models (LLMs) unificou as tarefas de geração de linguagem e revolucionou a interação humano-máquina. No entanto, no campo da geração de imagens, um modelo unificado capaz de lidar com diversas tarefas dentro de um único framework permanece em grande parte inexplorado. Neste trabalho, apresentamos o OmniGen, um novo modelo de difusão para geração unificada de imagens. O OmniGen é caracterizado pelas seguintes funcionalidades: 1) Unificação: o OmniGen não apenas demonstra capacidades de geração de texto para imagem, mas também suporta inerentemente diversas tarefas downstream, como edição de imagem, geração dirigida por sujeito e geração condicional visual. 2) Simplicidade: a arquitetura do OmniGen é altamente simplificada, eliminando a necessidade de plugins adicionais. Além disso, em comparação com modelos de difusão existentes, ele é mais amigável ao usuário e pode concluir tarefas complexas de ponta a ponta por meio de instruções, sem a necessidade de etapas intermediárias extras, simplificando enormemente o fluxo de trabalho de geração de imagens. 3) Transferência de conhecimento: beneficiando-se do aprendizado em um formato unificado, o OmniGen transfere efetivamente conhecimento entre diferentes tarefas, gerencia tarefas e domínios não vistos e exibe capacidades novas. Também exploramos as capacidades de raciocínio do modelo e as aplicações potenciais do mecanismo de chain-of-thought. Este trabalho representa a primeira tentativa de um modelo de geração de imagens de uso geral, e disponibilizaremos nossos recursos em https://github.com/VectorSpaceLab/OmniGen para fomentar avanços futuros.
import torch
from diffusers import OmniGenTransformer2DModel
transformer = OmniGenTransformer2DModel.from_pretrained("Shitao/OmniGen-v1-diffusers", subfolder="transformer", dtype=torch.bfloat16)
OmniGenTransformer2DModel[[diffusers.OmniGenTransformer2DModel]]
diffusers.OmniGenTransformer2DModel[[diffusers.OmniGenTransformer2DModel]]
diffusers.OmniGenTransformer2DModel(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: 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')
Parâmetros:
in_channels (int, padrão 4) : O número de canais na entrada.
patch_size (int, padrão 2) : O tamanho dos patches espaciais a serem usados na camada de incorporação de patches.
hidden_size (int, padrão 3072) : A dimensionalidade das camadas ocultas no modelo.
rms_norm_eps (float, padrão 1e-5) : Eps para a camada RMSNorm.
num_attention_heads (int, padrão 32) : O número de cabeças a serem usadas para a atenção multi-cabeça.
num_key_value_heads (int, padrão 32) : O número de cabeças a serem usadas para chaves e valores na atenção multi-cabeça.
intermediate_size (int, padrão 8192) : Dimensão da camada oculta nas camadas FeedForward.
num_layers (int, padrão 32) : O número de blocos de transformadores a serem usados.
pad_token_id (int, padrão 32000) : O id do token de padding.
vocab_size (int, padrão 32064) : O tamanho do vocabulário do vocabulário de incorporação.
rope_base (int, padrão 10000) : O valor padrão de theta a ser usado ao criar o RoPE.
rope_scaling (dict, opcional) : Os fatores de escala para o RoPE. Deve conter short_factor e long_factor.
pos_embed_max_size (int, padrão 192) : O tamanho máximo dos embeddings posicionais.
time_step_dim (int, padrão 256) : Dimensão de saída dos embeddings de timestep.
flip_sin_to_cos (bool, padrão True) : Se deve inverter o sin e o cos nos embeddings posicionais ao preparar os embeddings de timestep.
downscale_freq_shift (int, padrão 0) : O deslocamento de frequência a ser usado ao reduzir a escala dos embeddings de timestep.
timestep_activation_fn (str, padrão silu) : A função de ativação a ser usada para os embeddings de timestep.
O modelo Transformer introduzido em OmniGen (https://huggingface.co/papers/2409.11340).
forward[[diffusers.OmniGenTransformer2DModel.forward]]
forward(hidden_states: Tensor, timestep: typing.Union[int, float, torch.FloatTensor], input_ids: Tensor, input_img_latents: list[torch.Tensor], input_image_sizes: dict[int, list[int]], attention_mask: Tensor, position_ids: Tensor, return_dict: bool = True)
Parâmetros:
hidden_states (torch.Tensor de forma (batch_size, in_channels, height, width)) : hidden_states de entrada.
timestep (torch.LongTensor) : Usado para indicar o passo de desruidamento.
input_ids (torch.Tensor) : IDs de tokens de texto multimodal usados como condicionamento.
input_img_latents (list de torch.Tensor) : Lista de latentes para as imagens de entrada usadas como condicionamento.
input_image_sizes (dict de int para list de int) : Mapeamento do índice da amostra para as posições onde os embeddings da imagem de entrada devem ser colocados na sequência de condicionamento.
attention_mask (torch.Tensor) : Máscara de atenção para a sequência multimodal conjunta.
position_ids (torch.Tensor) : ids de posição usados para calcular os embeddings posicionais.
return_dict (bool, opcional, padrão True) : Indica se deve retornar um ~models.transformer_2d.Transformer2DModelOutput em vez de uma tupla simples.
Retorna: ~models.transformer_2d.Transformer2DModelOutput ou tuple
Se return_dict for True, um ~models.transformer_2d.Transformer2DModelOutput é retornado; caso contrário, uma tuple simples é retornada.
O método forward do OmniGenTransformer2DModel.
Xet Storage Details
- Size:
- 6.63 kB
- Xet hash:
- bebb6b7892ed8f688558508a788bab1222ad882b5ab1f509808f7fcc41de32cb
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.