DiT论文精读Scalable Diffusion Models with Transformers CVPR2023

Scalable Diffusion Models with Transformers CVPR2023

Abstract

idea
将UNet架构用Transformer代替。并且分析其可扩展性。
并且实验证明通过增加transformer的宽度和深度,有效降低FID
我们最大的DiT-XL/2模型在classconditional ImageNet 512、512和256、256基准上的性能优于所有先前的扩散模型,在后者上实现了2.27的最先进FID。

在这里插入图片描述

Related Work

本文的相关工作,作者分别介绍了一下Transformer和Unet结构

Transformer

UNet架构

在这里插入图片描述

在评估图像生成文献中的架构复杂性时,通常的做法是使用参数计数。一般来说,参数计数不能很好地代表图像模型的复杂性,因为它们不能考虑图像分辨率等对性能有显著影响的因素。
相反,本文中的大部分分析都是通过计算的视角进行的。
这使我们与架构设计文献保持一致,在这些文献中,失败被广泛用于衡量复杂性。在实践中,黄金度量标准将取决于特定的应用程序场景。改进扩散模型的开创性工作与us-there最为相关,他们分析了U-Net架构类的可扩展性属性。在本文中,我们主要关注变压器类。

Diffusion Transformers

Diffusion formulation

前向扩散过程是将x0逐步加噪

q(xt|x0)是已知的

在这里插入图片描述

在这里插入图片描述
是一个超参数

在这里插入图片描述

根据t,x0求xt的过程也叫做采样

关于后验p也就是神经网络需要进行预测的内容

在这里插入图片描述
在这里插入图片描述

逆向过程是用x0的对数似然的变分下界来训练。

该模型可以使用预测的噪声(xt)与实际抽样的高斯噪声(Lsimple)之间的简单均方误差进行训练

在这里插入图片描述

Classifier-free guidance

条件扩散模型将额外的信息作为输入,例如类标签c

此条件下,反向网络需要学习p(xt-1|xt,xc)

LDM

3.2Diffusion Transformer Design Space

他的目的是将transformer用在潜空间中;

DiT也是在Vit基础上进行的

接下来就是描述Dit的forward部分

在这里插入图片描述

总体来说作者的模型是一种混合模型

使用现成的卷积VAE和基于Transformer的DDPMS

在这里插入图片描述

也可以说,DiT仅在DDPM方面做优化

VAE的编码器对img进行压缩后 --> Z–>Noised Latent

在这里插入图片描述

关于Dit的输入规范

在这里插入图片描述

**输入前的Z是32,32,4 I,I,C表示
patch size p,p
最终得到的序列长度为I/p * I/p ,dim dim是自己初始化随机设置即可
Patchify
img大小256,256,3
Z大小32,32,4
它将空间输入转换成T个符号的序列,每个符号都是d维的,
位置编码使用正余弦版本

关于位置编码,RetNet使用旋转空间编码能否优化?

关于patch大小设置
T为序列token长度**

在这里插入图片描述

p减半,T大四倍

对model计算效率影响巨大,改变p对下游参数计数没有任何显著影响

P设计遵从2,4,8

Gflops一种计算资源的表述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

使用标记t和c两个额外的输入到seq,最为vit的cls,

在这里插入图片描述

可以理解为cls为2 length-two

在这里插入图片描述

在这里插入图片描述

交叉注意力机制多15的Gflops

在这里插入图片描述

在这里插入图片描述

adaLN可以取代Transformer中的层归一化层
随着自适应归一化层在gan和UNet骨干扩散模型中的广泛使用,我们探索用自适应层范数(adaLN)取代变压器块中的标准层范数层。我们不是直接学习维度尺度和移位参数$和%,而是从t和c的嵌入向量的总和中回归它们。在我们探索的三个块设计中,adaLN添加的Gflops最少,因此计算效率最高。
它也是唯一一种限制于将相同函数应用于所有令牌的条件调节机制。

adaLN-Zero block

ResNets 验证:将每个残差块初始化恒等函数是有益的
例如,Goyal等人发现,在监督学习设置下,对每个块中的最终批范数尺度因子$进行零初始化可以加速大规模训练[13]。

其他改进,将γ,β用于回归缩放参数

模型的尺寸。我们采用一系列N个DiT块,每个块在隐藏维度大小d处运行。在ViT之后,我们使用标准变压器配置,共同缩放N, d和注意头[10,63]。具体来说,我们使用四种配置:DiT-S、DiT-B、DiT-L和DiT-XL。它们涵盖了广泛的模型大小和触发器分配,从0.3到118.6 Gflops,允许我们衡量缩放性能。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/828667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序AI智能名片S2B2C商城系统:四大主流商业模式深度解析与实战案例分享

在私域电商迅速崛起的大背景下,小程序AI智能名片S2B2C商城系统以其独特的商业模式和强大的功能,正成为品牌商们争相探索的新领域。在这一系统中,拼团模式、会员电商、社区团购和KOC营销等四种主流模式,为品牌商提供了多样化的营销…

【文章转载】Lance Martin的关于RAG的笔记

转载自微博黄建同学 从头开始学习 RAG,看Lance Martin的这篇笔记就行了,包含了十几篇论文和开源实现! —— 这是一组简短的(5-10 分钟视频)和笔记,解释了我最喜欢的十几篇 RAG 论文。我自己尝试实现每个想…

C# GetField 方法应用实例

目录 关于 C# Type 类 GetField 方法应用 应用举例 心理CT设计题 类设计 DPCT类实现代码 小结 关于 C# Type 类 Type表示类型声明:类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义,以及开放或封闭构造的泛型类型。调用 t…

WPS-EXCEL:快速删除多个线条对象

问题图 我需要将线条快速删除 方法一:使用定位对象功能 使用定位功能:按Ctrl G打开定位对话框。在对话框中,点击“定位条件”。 定位对象:在定位条件对话框中,勾选“对象”选项,然后点击“确定”。这样,…

CTF之变量1

拿到题目发现是一个php代码,意思是用get方式获取args参数。 至于下面那个正则表达式怎么绕过暂且不知,但是题目最上面告诉我们lag In the variable ! (意思是flag就在变量中)。 那我们就传入全局变量globals(&#xf…

spring引入外部属性文件

spring引入外部属性文件 有时候我们并不想把所有的配置信息都放到spring的配置文件中&#xff0c;这样的话也不太好维护&#xff0c;比如说数据库的信息 <bean name"dataSource" class"com.alibaba.druid.pool.DruidDataSource" init-method"init&…

vue调用post方法并且后端代码需要接收ids

首先在ts文件里接收一个参数 data&#xff0c;类型为对象。该函数通过调用 post 函数向指定的路径接口 发送数据 export function calculateScore(data: object) {return post(写你的接口, data) }//以上为举例&#xff0c;calculateScore等会会在vue页面去调用然后我这里做处…

【构建|Gradle】Gradle常见使用问题集锦

文章目录 1. 更新Gradle仓库或者迁移本地Maven仓库后报错2. Gradle配置使用mavenLocal()后,假如添加新的依赖,在Maven仓库中不可见3. 取消使用idea+Gradle创建项目时自动生成.main结尾的子module文章持续更新中。。。 1. 更新Gradle仓库或者迁移本地Maven仓库后报错 错误信息…

【Python】模拟windows文件名排序

实现了一种模拟windows排序的python方法&#xff0c;其排序规则为&#xff1a; 不处理浮点数特殊字符&#xff08;如&#xff1a;&、$、# 等&#xff09;排在数字和字母之前&#xff1b;数字优先于字母排序&#xff1b;数字是连着的整数&#xff0c;应该按照整数进行排序&…

Linux 三剑客之AWK

1. 命令 awk [参数] [处理内容] [操作对象] 1.1. 参数 -F参数:这个参数用于指定输入字段的分隔符。例如,awk -F: {print $1} file.txt 会将文件file.txt中以冒号分隔的第一个字段打印出来。如果不指定-F参数,awk默认使用空格或制表符作为字段分隔符。 -v参数:该参数用于在…

人机协同中的墨菲定律

墨菲定律&#xff1a;如果有两种或两种以上的方式去做某件事情&#xff0c;而其中一种选择方式将导致灾难&#xff0c;则必定有人会做出这种选择。人机协同中的墨菲定律如何呢&#xff1f;下面我们将对此进行简单讨论。 人机协同中的墨菲定律可以理解为&#xff1a;如果在人与机…

户外指南——时代产物

分类 一级分类&#xff1a; 衣&#xff1a;除了上述提到的&#xff0c;还包括衣物的材质、款式多样性、与身份地位的关联等。 食&#xff1a;还包括饮食的文化内涵、地域特色、对特殊饮食需求的满足等。 住&#xff1a;还包括居住空间的合理布局、智能家居的应用、与自然环境…

不定期会议对团队开发的影响(项目管理篇)

不定期会议&#xff0c;即没有固定周期或事先规划的临时召集的会议&#xff0c;对于团队开发可能产生多种影响&#xff0c;既有积极的一面&#xff0c;也有潜在的挑战。以下是具体分析&#xff1a; 积极影响&#xff1a; 应对突发情况&#xff1a; 不定期会议能够迅速响应项…

C# 异步编程模式详解

在软件开发中&#xff0c;异步编程是一种重要的编程范式&#xff0c;它允许代码在等待操作完成时继续执行。特别是在处理耗时的I/O操作&#xff08;如文件读写、网络请求和数据库操作&#xff09;时&#xff0c;异步编程可以显著提高应用程序的响应性和性能。C# 语言提供了丰富…

微信小程序中前端 授权登录获取用户的openid

序言&#xff1a; 集百家之所长&#xff0c;方成此篇&#xff0c;废话少说&#xff0c;上代码&#xff1b;找好你的小程序APPID,AppSecret(小程序密钥)&#xff0c;进行配置&#xff0c;然后复制粘贴代码&#xff0c;就可以了。 //微信小程序授权登录获取用户的openidwx.getUse…

B2B企业如何做好谷歌Google广告推广营销布局?

当今全球化的商业环境中&#xff0c;B2B企业要想在激烈的市场竞争中脱颖而出&#xff0c;拓展海外市场成为了必经之路。而谷歌Google广告&#xff0c;作为全球最大的在线广告平台&#xff0c;无疑是企业触达全球潜在客户的黄金钥匙。云衔科技通过专业服务助力企业轻松开户与高效…

ASAN

文章目录 ASAN 简介实例一&#xff0c;检测内存泄漏实例二&#xff0c;检测悬空指针访问实例三&#xff0c;检测堆溢出实例四&#xff0c;检测栈溢出ASAN 原理使用技巧KASAN ASAN 简介 ASAN 是 Address Sanitizer 的简称&#xff0c;是 GCC 自带的内存问题检查工具&#xff0c…

Java苍穹外卖01-开发环境搭建(Git、nginx)-Swagger-员工管理

一、开发环境搭建 1.项目架构 2.Git版本管理 在IDEA中可以一键搭建并commit&#xff0c;当Git远程仓库搭建后就可以push 3.前后端联调 Builder注解&#xff1a; 加了注解后就可以通过这样的方式创建对象 接收传入的是dto对象&#xff0c;传出去的对象为vo对象 4.nginx反向…

JavaScript 前端枚举库 js-enumerate

JavaScript 前端枚举库js-enumerate 1. 安装1.1 NodeJS1.2 Bower 2 使用2.1 constructor构造函数2.2 register全局注册2.3 用法示例2.4 前端组件中使用2.5 其他扩展用法2.6 内置属性2.7 Enum object API2.8 其他注意事项 3. 推荐 Enum is a javascript enumeration module. It …

4.18.2 EfficientViT:具有级联组注意力的内存高效Vision Transformer

现有Transformer模型的速度通常受到内存低效操作的限制&#xff0c;尤其是MHSA&#xff08;多头自注意力&#xff09;中的张量整形和逐元素函数。 设计了一种具有三明治布局的新构建块&#xff0c;即在高效FFN&#xff08;前馈&#xff09;层之间使用单个内存绑定的MHSA&#x…