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

Un modelo Transformer que acepta instrucciones multimodales para generar imágenes para OmniGen.

El resumen del artículo es:

El surgimiento de los Modelos de Lenguaje de Gran Escala (LLM) ha unificado las tareas de generación de lenguaje y ha revolucionado la interacción humano-máquina. Sin embargo, en el ámbito de la generación de imágenes, un modelo unificado capaz de manejar diversas tareas dentro de un único marco sigue siendo en gran medida inexplorado. En este trabajo, presentamos OmniGen, un nuevo modelo de difusión para la generación unificada de imágenes. OmniGen se caracteriza por las siguientes características: 1) Unificación: OmniGen no solo demuestra capacidades de generación de texto a imagen, sino que también admite de forma inherente diversas tareas descendentes, como la edición de imágenes, la generación dirigida por sujeto y la generación condicional visual. 2) Simplicidad: La arquitectura de OmniGen está altamente simplificada, eliminando la necesidad de complementos adicionales. Además, en comparación con los modelos de difusión existentes, es más fácil de usar y puede completar tareas complejas de extremo a extremo mediante instrucciones, sin la necesidad de pasos intermedios adicionales, simplificando en gran medida el flujo de trabajo de generación de imágenes. 3) Transferencia de conocimiento: Gracias al aprendizaje en un formato unificado, OmniGen transfiere de manera efectiva el conocimiento entre diferentes tareas, gestiona tareas y dominios no vistos y exhibe capacidades novedosas. También exploramos las capacidades de razonamiento del modelo y las aplicaciones potenciales del mecanismo de cadena de pensamiento. Este trabajo representa el primer intento de un modelo de generación de imágenes de uso general, y publicaremos nuestros recursos en https://github.com/VectorSpaceLab/OmniGen para fomentar avances futuros.

import torch
from diffusers import OmniGenTransformer2DModel

transformer = OmniGenTransformer2DModel.from_pretrained("Shitao/OmniGen-v1-diffusers", subfolder="transformer", dtype=torch.bfloat16)

OmniGenTransformer2DModel

clase 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, por defecto 4) — El número de canales en la entrada.
  • patch_size (int, por defecto 2) — El tamaño de los parches espaciales que se usarán en la capa de incrustación de parches.
  • hidden_size (int, por defecto 3072) — La dimensionalidad de las capas ocultas en el modelo.
  • rms_norm_eps (float, por defecto 1e-5) — Eps para la capa RMSNorm.
  • num_attention_heads (int, por defecto 32) — El número de cabezas a utilizar para la atención multi-cabeza.
  • num_key_value_heads (int, por defecto 32) — El número de cabezas a utilizar para las claves y los valores en la atención multi-cabeza.
  • intermediate_size (int, por defecto 8192) — Dimensión de la capa oculta en las capas FeedForward.
  • num_layers (int, por defecto 32) — El número de capas de bloques de transformador a utilizar.
  • pad_token_id (int, por defecto 32000) — El identificador del token de relleno.
  • vocab_size (int, por defecto 32064) — El tamaño del vocabulario de las incrustaciones.
  • rope_base (int, por defecto 10000) — El valor theta predeterminado que se utiliza al crear RoPE.
  • rope_scaling (dict, opcional) — Los factores de escalado para RoPE. Debe contener short_factor y long_factor.
  • pos_embed_max_size (int, por defecto 192) — El tamaño máximo de las incrustaciones posicionales.
  • time_step_dim (int, por defecto 256) — Dimensión de salida de las incrustaciones de paso de tiempo.
  • flip_sin_to_cos (bool, por defecto True) — Si se deben intercambiar el sin y el cos en los embeddings posicionales al preparar los embeddings de timestep.
  • downscale_freq_shift (int, por defecto 0) — El desplazamiento de frecuencia que se utiliza al reducir la escala de las incrustaciones de paso de tiempo.
  • timestep_activation_fn (str, por defecto silu) — La función de activación a utilizar para las incrustaciones de paso de tiempo.

El modelo Transformer introducido en 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)) — Entrada hidden_states.
  • timestep (torch.LongTensor) — Se utiliza para indicar el paso de desruido.
  • input_ids (torch.Tensor) — ids de tokens de texto multimodal utilizados como condición.
  • input_img_latents (list de torch.Tensor) — Lista de latentes para las imágenes de entrada utilizadas como condicionamiento.
  • input_image_sizes (dict de int a list de int) — Mapeo del índice de muestra a las posiciones donde deben colocarse los embeddings de imagen de entrada en la secuencia de condicionamiento.
  • attention_mask (torch.Tensor) — Máscara de atención para la secuencia multimodal conjunta.
  • position_ids (torch.Tensor) — Identificadores de posición utilizados para calcular los embeddings posicionales.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un ~models.transformer_2d.Transformer2DModelOutput en lugar de una tupla simple.

Devuelve

~models.transformer_2d.Transformer2DModelOutput o tuple

Si return_dict es True, se devuelve un ~models.transformer_2d.Transformer2DModelOutput, de lo contrario se devuelve una tuple simple.

El método forward de OmniGenTransformer2DModel.

Update on GitHub