(2024,DiS,扩散,状态空间主干,Mamba)具有状态空间主干的可扩展扩散模型

Scalable Diffusion Models with State Space Backbone

公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群)

目录

0. 摘要

2. 方法

2.1 基础

2.2 模型结构设计

3. 实验


0. 摘要

这篇论文提出了一种建立在状态空间架构之上的扩散模型的新探索。我们努力训练用于图像数据的扩散模型,其中传统的 U-Net 骨干被状态空间(state space)骨干替代,该骨干可在原始补丁或潜在空间上运行。由于其在容纳长距离依赖性方面的显著效力,扩散状态空间模型(Diffusion State Space,DiS)通过将所有输入,包括时间、条件和嘈杂的图像补丁,视为标记而得以区分。我们对 DiS 的评估涵盖了无条件和类别条件图像生成场景,揭示了 DiS 在与同等规模的基于 CNN 或 Transformer 的 U-Net 架构相比,表现相当或更为优越。此外,我们分析了 DiS 的可伸缩性,通过在 Gflops 中量化的前向传递复杂性来衡量。通过增加深度/宽度或增加输入标记实现更高Gflops 的 DiS 模型一致显示出更低的 FID。除了展示令人钦佩的可伸缩性特征外,位于潜在空间的 DiS-H/2 模型在 256×256 和 512×512 分辨率下在类条件 ImageNet 基准上达到了与先前扩散模型相当的性能水平,同时显著减轻了计算负担。

代码:https://github.com/feizc/DiS

2. 方法

2.1 基础

扩散。

状态空间骨干。

2.2 模型结构设计

我们引入扩散状态空间模型,简称为 DiS,这是一种用于图像生成中的扩散模型的简单而通用的架构。具体而言,DiS 对噪声预测网络 ϵθ(xt, t, c) 进行参数化,该网络以时间步 t、条件 c 和带噪图像 xt 为输入,并预测注入到 xt 中的噪声。我们的目标是密切遵循先进的状态空间架构以保持其可伸缩性特征,因此 DiS 基于双向 Mamba [16,72] 架构,该架构对标记序列进行操作。图 1 提供了完整 DiS 架构的概述。在本节中,我们详细说明了 DiS 的前向传递,以及 DiS 类别的设计空间的组件。

图像 patch 化(patchnify)。DiS 的第一层对输入图像 I ∈ R^(H×W×C) 进行变换,将其转换为展平的 2D patch X ∈ R^(J×(p^2·C))。随后,通过线性嵌入输入中的每个 patch,将其转换为维度为 D 的 J 个标记的序列。与 [11] 一致,我们对所有输入标记应用可学习的位置嵌入。由 patchnify 创建的标记数 J 由超参数 patch 大小 p 决定,为 H×W / p^2。patchnify 支持原始像素和潜在空间。我们将 p 设置为 2、4、8。 

SSM 块。在嵌入层之后,输入标记经过一系列 SSM 块的处理。除了带噪声的图像输入,扩散模型有时会处理额外的条件信息,如噪声时间步 t、条件 c(如类别标签或自然语言)。鉴于原始的Mamba 块是为 1-D 序列设计的,我们求助于 [72],该论文融入了针对视觉任务的双向序列建模。这些设计对标准 SSM 块设计引入了微妙但关键的修改。如图 1 的右侧所示,SSM 块的前向传递结合了正向和反向方向。

跳跃连接。给定一系列 L 个 SSM 块,我们将堆叠的 SSM 块分为前半部分 ⌊L/2⌋ 浅层组、一个中间层和后半部分 ⌊L/2 ⌋ 深层组。令 h_shallow、h_deep ∈ R^(J×D) 分别为主分支和长跳跃分支的隐藏状态。我们考虑直接将它们连接并进行线性投影,即 Linear(Concat(h_shallow, h_deep)),然后将它们馈送到下一个 SSM 块之前。

线性解码器。在最终的 SSM 块之后,我们需要将隐藏状态序列解码为输出噪声预测和对角协方差预测。这两个输出保留与原始空间输入相同的形状。我们使用标准的线性解码器,即应用最终层的归一化和线性解码每个标记为 p^2 ·C 张量。最后,我们重新排列解码后的标记以获得预测的噪声和协方差。

条件整合。为了有效地整合额外的条件,我们采用了一种简单的策略,即将时间步 t 和条件 c 的向量嵌入作为输入序列中的两个补充标记追加。这些标记被等同对待于图像标记,类似于 Vision Transformers [11] 中的 cls 标记的方法。这种方法使得可以利用 SSM 块而无需进行任何修改。在最终块之后,将条件标记从序列中移除。我们还探索了自适应归一化层,其中将标准归一化层替换为自适应归一化层。也就是说,我们不是直接学习维度方向的比例和偏移参数,而是从 t 和 c 的嵌入向量的和中回归它们,这将在实验部分讨论。

3. 实验

 

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

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

相关文章

超详细的介绍Python语句

一、 常用命令 在介绍Python语句之前,先介绍一下几个有用的Python命令。 dir(模块名或类名或变量名或表达式名):获得当前模块、变量对应类型、表达式计算值对应类的属性列表 type(变量名或表达式名):获取变量或表达式计算值的对…

Java学习第十四节之冒泡排序

冒泡排序 package array;import java.util.Arrays;//冒泡排序 //1.比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置 //2.每一次比较,都会产生出一个最大,或者最小的数字 //3.下一轮则可以少…

进程状态

广义概念: 从广义上来讲,进程分为新建、运行、阻塞、挂起、退出五个状态,其中新建和退出两个状态可以直接理解字面意思。 运行状态: 这里涉及到运行队列的概念,CPU在读取数据的时候,需要把内存中的进程放入…

Word docx文件重命名为zip文件,解压后直接查看和编辑

一个不知道算不算冷的知识[doge]: docx格式的文件本质上是一个ZIP文件 当把一个.docx文件重命名为.zip文件并解压后,你会发现里面包含了一些XML文件和媒体文件,它们共同构成了Word文档的内容和格式。 例如,word/document.xml文件…

C++ STL string详解

1. string简介 C语言中,可以用字符数组来存储字符串,如: char ch[] "hello world"; C中,可以使用string类对象来存储字符串,使用起来比C语言中的字符数组要方便得多,而且不用考虑容量的问题。…

Leetcode-103. 二叉树的锯齿形层序遍历

这个年和树过不去啦啦啦! 题目: 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1&…

Linux设置jar包开机自启动

步骤 1、新建jar包自启文件 sudo vi /etc/init.d/jarSysInit.sh 按i键进入编辑模式输入以下内容: export JAVA_HOME/home/jdk/jdk-11.0.22 export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar export PATH$PATH:$JAVA_…

跟着pink老师前端入门教程-day26

一、计算机编程基础 (一)编程语言 1、编程 编程:就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 计算机程序:就是计算机所执行的一系列的指令集合,而程序全部…

二叉搜索树题目:递增顺序搜索树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 后记 题目 标题和出处 标题:递增顺序搜索树 出处:897. 递增顺序搜索树 难度 3 级 题目描述…

P1498 南蛮图腾题解

题目 给定一个正整数n,参考输出样例,输出图形。 输入输出格式 输入格式 每个数据输入一个正整数n,表示图腾的大小(此大小非彼大小) 输出格式 这个大小的图腾 输入输出样例 输入样例 2 输出样例 /\/__\/\ /\…

HTTP缓存技术

大家好我是苏麟 , 今天说说HTTP缓存技术 . 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP缓存技术 HTTP 缓存有哪些实现方式? 对于一些具有重复性的 HTTP 请求,比如每次请求得到的数据都一样的,我们可以把这对「请求-响…

【mysql】数据约束

一、数据约束: 什么是约束? 为了确保表中的数据的完整性(准确性、正确性),为表添加一些限制。是数据库中表设计的一个最基本规则。使用约束可以使数据更加准确,从而减少冗余数据(脏数据)。 数据库完整性约…

84 CTF夺旗-PHP弱类型异或取反序列化RCE

目录 案例1:PHP-相关总结知识点-后期复现案例2:PHP-弱类型对比绕过测试-常考点案例3:PHP-正则preg_match绕过-常考点案例4:PHP-命令执行RCE变异绕过-常考点案例5:PHP-反序列化考题分析构造复现-常考点涉及资源&#xf…

【HTML】过年不能放烟花,那就放电子烟花

闲谈 大家回家过年可能都多多少少放过些🧨,但是有些在城市上过年的小伙伴可能就没有机会放鞭炮了。不过没关系,我们懂技术,我们用技术自娱自乐,放电子烟花,总不可能被警长叔叔敲门问候吧。 开干 首先&…

Redis篇----第一篇

系列文章目录 文章目录 系列文章目录前言一、什么是 Redis?二、Redis 与其他 key-value 存储有什么不同?三、Redis 的数据类型?四、使用 Redis 有哪些好处?五、Redis 相比 Memcached 有哪些优势?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住…

Spring 用法学习总结(四)之 JdbcTemplate 连接数据库

🐉目录 9 JdbcTemplate 9 JdbcTemplate Spring 框架对 JDBC 进行了封装,使用 JdbcTemplate 方便实现对数据库操作 相关包: 百度网盘链接https://pan.baidu.com/s/1Gw1l6VKc-p4gdqDyD626cg?pwd6666 创建properties配置文件 💥注意…

分布式文件系统 SpringBoot+FastDFS+Vue.js【二】

分布式文件系统 SpringBootFastDFSVue.js【二】 六、实现上传功能并展示数据6.1.创建数据库6.2.创建spring boot项目fastDFS-java6.3.引入依赖6.3.fastdfs-client配置文件6.4.跨域配置GlobalCrosConfig.java6.5.创建模型--实体类6.5.1.FastDfsFile.java6.5.2.FastDfsFileType.j…

vscode 和 keil协同使用开发stm32程序,超详细教程

vscode 和 keil协同使用开发stm32程序 文章目录 vscode 和 keil协同使用开发stm32程序1. 安装vscode拓展安装chinese插件 2 .安装Mingw3.配置环境变量4. 打开Keil项目 VSCODE 是一款广受好评的代码编辑器, KEIL 是常用的嵌入式开发工具但编程界面简陋。 将两个工具…

npm使用国内淘宝镜像(最新地址)

目录 前言 一、命令配置 二、使用cnpm安装 三、常见包地址 四、总结 往期回顾 前言 我们前端程序员在使用国外的镜像源速度很慢并且容易下载失败,有时候需要尝试多次才有可能下载成功,很麻烦,但是可以切换为国内镜像源,下…

BigDecimal的常用API

BigDecimal用于解决浮点型运算时结果出现失真的问题。 这里0.20.1等于0.3就出现了失真 import java.math.BigDecimal; import java.math.RoundingMode;public class Test {public static void main(String[] args) {//BigDeciaml的使用:解决小数运算失真的问题doub…