# UVit2DModel

[U-ViT](https://hf.co/papers/2301.11093) 模型是一种基于视觉 Transformer（ViT）的 UNet。该模型融合了 ViT 的元素（将时间、条件以及含噪图像块等所有输入视为 token）和 UNet 的元素（在浅层与深层之间建立长跳跃连接）。跳跃连接对于预测像素级特征至关重要。在最终输出之前，还会应用一个额外的 3x3 卷积块以提升图像质量。

该论文的摘要如下：

*目前，在高分辨率图像的像素空间中应用扩散模型颇具挑战。现有的方法通常专注于在低维空间（潜在扩散）中进行扩散，或者采用被称为级联的多级超分辨率生成策略。这些方法的缺点在于它们为扩散框架引入了额外的复杂性。本文旨在改进高分辨率图像的降噪扩散，同时尽可能保持模型的简洁性。本文围绕以下研究问题展开：如何对标准降噪扩散模型进行训练，使其在高分辨率图像上仍能取得与上述替代方法相当的性能？本文的四个主要发现是：1）噪声调度应针对高分辨率图像进行调整；2）只需扩展架构的特定部分即可；3）应在架构的特定位置添加 dropout；4）下采样是避免高分辨率特征图的有效策略。结合这些简单而有效的技术，我们在 ImageNet 上实现了扩散模型中图像生成的最先进性能，且未使用采样修正器。*

## UVit2DModel[[diffusers.UVit2DModel]]

#### diffusers.UVit2DModel[[diffusers.UVit2DModel]]

```python
diffusers.UVit2DModel(hidden_size: int = 1024, use_bias: bool = False, hidden_dropout: float = 0.0, cond_embed_dim: int = 768, micro_cond_encode_dim: int = 256, micro_cond_embed_dim: int = 1280, encoder_hidden_size: int = 768, vocab_size: int = 8256, codebook_size: int = 8192, in_channels: int = 768, block_out_channels: int = 768, num_res_blocks: int = 3, downsample: bool = False, upsample: bool = False, block_num_heads: int = 12, num_hidden_layers: int = 22, num_attention_heads: int = 16, attention_dropout: float = 0.0, intermediate_size: int = 2816, layer_norm_eps: float = 1e-06, ln_elementwise_affine: bool = True, sample_size: int = 64)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/unets/uvit_2d.py#L38)

#### forward[[diffusers.UVit2DModel.forward]]

```python
forward(input_ids, encoder_hidden_states, pooled_text_emb, micro_conds, cross_attention_kwargs = None)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/unets/uvit_2d.py#L150)

**参数：**

input_ids (`torch.LongTensor`) : 被掩码的潜在图像令牌的 Token ID，形状为 `(batch_size, height, width)`。

encoder_hidden_states (`torch.Tensor`) : 要使用的条件嵌入（根据输入条件（例如提示词）计算得出的嵌入）。

pooled_text_emb (`torch.Tensor`) : 用于额外条件控制的池化文本嵌入。

micro_conds (`torch.Tensor`) : 微条件值，会被嵌入并与 `pooled_text_emb` 进行组合。

cross_attention_kwargs (`dict`，*可选*)：一个 kwargs 字典，如果指定，将传递给 `AttentionProcessor`。

**返回：** `torch.Tensor`

每个图像 token 在码本上的 logits，形状为 `(batch_size, codebook_size, height, width)`。

#### set_default_attn_processor[[diffusers.UVit2DModel.set_default_attn_processor]]

```python
set_default_attn_processor()
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/unets/uvit_2d.py#L232)

禁用自定义注意力处理器并设置默认的注意力实现。

## UVit2DConvEmbed[[diffusers.models.unets.uvit_2d.UVit2DConvEmbed]]

#### diffusers.models.unets.uvit_2d.UVit2DConvEmbed[[diffusers.models.unets.uvit_2d.UVit2DConvEmbed]]

```python
diffusers.models.unets.uvit_2d.UVit2DConvEmbed(in_channels, block_out_channels, vocab_size, elementwise_affine, eps, bias)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/unets/uvit_2d.py#L248)

## UVitBlock[[diffusers.models.unets.uvit_2d.UVitBlock]]

#### diffusers.models.unets.uvit_2d.UVitBlock[[diffusers.models.unets.uvit_2d.UVitBlock]]

```python
diffusers.models.unets.uvit_2d.UVitBlock(channels, num_res_blocks: int, hidden_size, hidden_dropout, ln_elementwise_affine, layer_norm_eps, use_bias, block_num_heads, attention_dropout, downsample: bool, upsample: bool)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/unets/uvit_2d.py#L263)

## ConvNextBlock[[diffusers.models.unets.uvit_2d.ConvNextBlock]]

#### diffusers.models.unets.uvit_2d.ConvNextBlock[[diffusers.models.unets.uvit_2d.ConvNextBlock]]

```python
diffusers.models.unets.uvit_2d.ConvNextBlock(channels, layer_norm_eps, ln_elementwise_affine, use_bias, hidden_dropout, hidden_size, res_ffn_factor = 4)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/unets/uvit_2d.py#L362)

## ConvMlmLayer[[diffusers.models.unets.uvit_2d.ConvMlmLayer]]

#### diffusers.models.unets.uvit_2d.ConvMlmLayer[[diffusers.models.unets.uvit_2d.ConvMlmLayer]]

```python
diffusers.models.unets.uvit_2d.ConvMlmLayer(block_out_channels: int, in_channels: int, use_bias: bool, ln_elementwise_affine: bool, layer_norm_eps: float, codebook_size: int)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/models/unets/uvit_2d.py#L407)

