Diffusers documentation

UVit2DModel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

UVit2DModel

O modelo U-ViT é um UNet baseado em vision transformer (ViT). Este modelo incorpora elementos do ViT (considera todas as entradas, como tempo, condições e patches de imagem com ruído, como tokens) e do UNet (conexões de salto longas entre as camadas rasas e profundas). A conexão de salto é importante para prever características em nível de pixel. Um bloco convolucional adicional de 3x3 é aplicado antes da saída final para melhorar a qualidade da imagem.

O resumo do artigo é:

Atualmente, aplicar modelos de difusão no espaço de pixels de imagens de alta resolução é difícil. Em vez disso, as abordagens existentes focam na difusão em espaços de dimensão inferior (difusão latente) ou possuem múltiplos níveis de super-resolução de geração, referidos como cascatas. A desvantagem é que essas abordagens adicionam complexidade adicional ao framework de difusão. Este artigo visa melhorar a difusão de desruidamento para imagens de alta resolução, mantendo o modelo o mais simples possível. O artigo é centrado na pergunta de pesquisa: Como treinar modelos padrão de difusão de desruidamento em imagens de alta resolução e ainda assim obter desempenho comparável a essas abordagens alternativas? As quatro principais descobertas são: 1) o agendamento de ruído deve ser ajustado para imagens de alta resolução, 2) é suficiente escalar apenas uma parte específica da arquitetura, 3) o dropout deve ser adicionado em localizações específicas na arquitetura e 4) o downsampling é uma estratégia eficaz para evitar mapas de recursos de alta resolução. Combinando essas técnicas simples, porém eficazes, alcançamos o estado da arte na geração de imagens entre os modelos de difusão, sem modificadores de amostragem, no ImageNet.

UVit2DModel

classe 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 dos tokens da imagem latente mascarada, com forma (batch_size, height, width).
  • encoder_hidden_states (torch.Tensor) — Incorporações condicionais (incorporações calculadas a partir das condições de entrada, como prompts) a serem usadas.
  • pooled_text_emb (torch.Tensor) — Incorporações de texto agregadas usadas para condicionamento adicional.
  • micro_conds (torch.Tensor) — Valores de micro-condicionamento que são incorporados e combinados com pooled_text_emb.
  • cross_attention_kwargs (dict, opcional) — Um dicionário de kwargs que, se especificado, é passado ao AttentionProcessor.

Retorna

torch.Tensor

Os logits sobre o codebook para cada token de imagem, de forma (batch_size, codebook_size, height, width).

set_default_attn_processor

< >

( )

Desativa os processadores de atenção personalizados e define a implementação padrão de atenção.

UVit2DConvEmbed

classe diffusers.models.unets.uvit_2d.UVit2DConvEmbed

< >

( in_channelsblock_out_channelsvocab_sizeelementwise_affineepsbias )

UVitBlock

classe diffusers.models.unets.uvit_2d.UVitBlock

< >

( channelsnum_res_blocks: inthidden_sizehidden_dropoutln_elementwise_affinelayer_norm_epsuse_biasblock_num_headsattention_dropoutdownsample: boolupsample: bool )

ConvNextBlock

classe diffusers.models.unets.uvit_2d.ConvNextBlock

< >

( channelslayer_norm_epsln_elementwise_affineuse_biashidden_dropouthidden_sizeres_ffn_factor = 4 )

ConvMlmLayer

classe 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