Diffusers documentation

UVit2DModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

UVit2DModel

El modelo U-ViT es un UNet basado en vision transformer (ViT). Este modelo incorpora elementos de ViT (considera todas las entradas, como el tiempo, las condiciones y los parches de imagen con ruido, como tokens) y de UNet (conexiones de salto largas entre las capas superficiales y profundas). La conexión de salto es importante para predecir características a nivel de píxel. Se aplica un bloque convolucional adicional de 3x3 antes de la salida final para mejorar la calidad de la imagen.

El resumen del artículo es:

Actualmente, aplicar modelos de difusión en el espacio de píxeles de imágenes de alta resolución es difícil. En su lugar, los enfoques existentes se centran en la difusión en espacios de menor dimensión (difusión latente) o en múltiples niveles de superresolución de generación, conocidos como cascadas. La desventaja es que estos enfoques añaden complejidad adicional al marco de difusión. Este trabajo busca mejorar la difusión de desruido para imágenes de alta resolución manteniendo el modelo lo más simple posible. El artículo se centra en la pregunta de investigación: ¿Cómo se puede entrenar un modelo estándar de difusión de desruido en imágenes de alta resolución y, aun así, obtener un rendimiento comparable a estos enfoques alternativos? Los cuatro hallazgos principales son: 1) el programa de ruido debe ajustarse para imágenes de alta resolución, 2) es suficiente escalar solo una parte particular de la arquitectura, 3) se debe añadir dropout en ubicaciones específicas de la arquitectura y 4) el muestreo descendente es una estrategia efectiva para evitar mapas de características de alta resolución. Combinando estas técnicas simples pero efectivas, logramos el estado del arte en la generación de imágenes entre los modelos de difusión, sin modificadores de muestreo, en ImageNet.

UVit2DModel

clase diffusers.UVit2DModel

< >

( hidden_size: int = 1024use_bias: bool = Falsehidden_dropout: float = 0.0cond_embed_dim: int = 768micro_cond_encode_dim: int = 256micro_cond_embed_dim: int = 1280encoder_hidden_size: int = 768vocab_size: int = 8256codebook_size: int = 8192in_channels: int = 768block_out_channels: int = 768num_res_blocks: int = 3downsample: bool = Falseupsample: bool = Falseblock_num_heads: int = 12num_hidden_layers: int = 22num_attention_heads: int = 16attention_dropout: float = 0.0intermediate_size: int = 2816layer_norm_eps: float = 1e-06ln_elementwise_affine: bool = Truesample_size: int = 64 )

forward

< >

( input_idsencoder_hidden_statespooled_text_embmicro_condscross_attention_kwargs = None ) → torch.Tensor

Parámetros

  • input_ids (torch.LongTensor) — Ids de los tokens de la imagen latente enmascarada, con forma (batch_size, height, width).
  • encoder_hidden_states (torch.Tensor) — Embeddings condicionales (embeddings calculados a partir de las condiciones de entrada, como los prompts) a utilizar.
  • pooled_text_emb (torch.Tensor) — Incrustaciones de texto agrupadas utilizadas para una condición adicional.
  • micro_conds (torch.Tensor) — Valores de micro-condicionamiento que se incrustan y combinan con pooled_text_emb.
  • cross_attention_kwargs (dict, opcional) — Un diccionario de kwargs que, si se especifica, se pasa a AttentionProcessor.

Devuelve

torch.Tensor

Los logits sobre el codebook para cada token de imagen, de forma (batch_size, codebook_size, height, width).

set_default_attn_processor

< >

( )

Desactiva los procesadores de atención personalizados y establece la implementación de atención predeterminada.

UVit2DConvEmbed

clase diffusers.models.unets.uvit_2d.UVit2DConvEmbed

< >

( in_channelsblock_out_channelsvocab_sizeelementwise_affineepsbias )

UVitBlock

clase diffusers.models.unets.uvit_2d.UVitBlock

< >

( channelsnum_res_blocks: inthidden_sizehidden_dropoutln_elementwise_affinelayer_norm_epsuse_biasblock_num_headsattention_dropoutdownsample: boolupsample: bool )

ConvNextBlock

clase diffusers.models.unets.uvit_2d.ConvNextBlock

< >

( channelslayer_norm_epsln_elementwise_affineuse_biashidden_dropouthidden_sizeres_ffn_factor = 4 )

ConvMlmLayer

clase diffusers.models.unets.uvit_2d.ConvMlmLayer

< >

( block_out_channels: intin_channels: intuse_bias: boolln_elementwise_affine: boollayer_norm_eps: floatcodebook_size: int )

Update on GitHub