- Meta
- https://github.com/facebookresearch/DiT/tree/main?tab=readme-ov-file
- 问题引入
- transformer架构的latent diffusion model,有较好的延展性并是sota;
- methods
- patchify:原图片 I ∈ R H × W × 3 I\in\mathbb{R}^{H\times W\times 3} I∈RH×W×3经过autoencoder之后得到 z ∈ R H 8 × W 8 × 4 z\in\mathbb{R}^{\frac{H}{8}\times \frac{W}{8}\times 4} z∈R8H×8W×4,之后经过patchify,得到 T × d T\times d T×d的sequence,其中 d d d是每一个patch的embedding的维度, T T T由patch的大小 p p p来决定,之后会有position encoding(frequency-based positional embeddings (the sine-cosine version)),之后就是一系列transformer sequence;
- 除noisy latents以外额外的输入:timesteps t, class labels c, natural language, etc,分别尝试了四种变种:
- In-context conditioning:对t和c进行embedding之后将其作为输入额外的token,和image token同等看待,类似与vit的cls tokens;
- Cross-attention block:将t和c的embedding进行concat,之后再transformer block中的self attention之后添加cross attention,在这部分参与计算;
- Adaptive layer norm (adaLN) block:用adaLN替换transfromer block中的layernorm layer,不是直接学习dimensionwise scale and shift parameters γ , β \gamma,\beta γ,β,而是将t和c的embedding进行相加之后经过mlp回归得到;
- adaLN-Zero block:除了回归 γ , β \gamma,\beta γ,β,还回归dimensionwise scaling parameters α \alpha α,在residual connection之前使用,初始化mlp使得初始输入 α \alpha α为0vector,该操作相当于将dit block初始化为identity矩阵;
- 最后dit block的输出为noise和diagonal covariance prediction;
- 实验
- 数据:imagenet
- B, S, L and XL + patch size p = 2, 4, 8