Diffusers documentation
UVit2DModel
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
< source >( 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
< source >( 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 compooled_text_emb. - cross_attention_kwargs (
dict, opcional) — Um dicionário de kwargs que, se especificado, é passado aoAttentionProcessor.
Retorna
torch.Tensor
Os logits sobre o codebook para cada token de imagem, de forma (batch_size, codebook_size, height, width).
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
< source >( in_channelsblock_out_channelsvocab_sizeelementwise_affineepsbias )
UVitBlock
classe diffusers.models.unets.uvit_2d.UVitBlock
< source >( channelsnum_res_blocks: inthidden_sizehidden_dropoutln_elementwise_affinelayer_norm_epsuse_biasblock_num_headsattention_dropoutdownsample: boolupsample: bool )
ConvNextBlock
classe diffusers.models.unets.uvit_2d.ConvNextBlock
< source >( channelslayer_norm_epsln_elementwise_affineuse_biashidden_dropouthidden_sizeres_ffn_factor = 4 )
ConvMlmLayer
classe diffusers.models.unets.uvit_2d.ConvMlmLayer
< source >( block_out_channels: intin_channels: intuse_bias: boolln_elementwise_affine: boollayer_norm_eps: floatcodebook_size: int )