[基础] DiT: Scalable Diffusion Models with Transformers
名称
DiT: Scalable Diffusion Models with Transformers
时间:23/03
机构:UC Berkeley && NYU
TL;DR
提出首个基于Transformer的Diffusion Model,效果打败SD,并且DiT在图像生成任务上随着Flops增加效果会降低,比较符合scaling law。后续sora的DM也使用该网络架构。
Method
网络结构整体参考LDM,只不过将latent diffusion中的UNet替换为ViT,image与latent space之间编解码复用现成的基于卷积的VAE。DiT网络结构如下图所示,作者尝试了多种DiT blocks来编码condition信息,比如,cross-attention, in-context conditioning(直接concat with embeding tokens),最终发现adaLN-Zero block效果最好。
adaLN-Zero block
adaLN的全称是adaptive layer norm。layer norm是"逐样本"将均值方差替换为可学习参数beta/gamma的方法,而这里adaptive指得是额外学习一个逐channel的参数alpha。Zero指得是将residual连接的前一层MLP的norm中alpha初始值设定为0,起到Identity的作用,个人理解,这么做相当于在网络学习前期去掉了一些层,降低了前期学习复杂度加速收敛。更详细的解释参考论文
Patchify
类似于ViT中的图片切块出embedding的操作,只不过这里专门起了一个名字。如下图所示,DiT的输入尺寸是一个I x I的保留spatial shape的noise latent feature,被切成大小为pxp的patch,再将patch抽成embedding,把所有embedding组成一个序列的tokens。
网络架构
Q: UNet的上采样如何使用Vit实现?
Transformer的Decoder输出序列的长度为I x I x 2,被reshape成为I x I的噪声以及方差。
Experiment
总结与发散
属于LDM上改进工作,将UNet替换为transformer,由于实验结果符合scaling law,比较适合大力出奇迹。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律