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

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 âmbito da geração de imagens, um modelo unificado capaz de lidar com diversas tarefas em 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 intrinsicamente 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 conhecimento de forma eficaz 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

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

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 preenchimento.
  • 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

< >

( 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

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 desruido.
  • input_ids (torch.Tensor) — IDs de tokens de texto multimodal usados como condicionamento.
  • input_img_latents (list de torch.Tensor) — Lista de latentes para 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 de 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) — Se deve ou não 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.

Update on GitHub