《Diffusion Models Without Attention》CVPR2024

摘要

这篇论文探讨了在高保真图像生成领域,去噪扩散概率模型(Denoising Diffusion Probabilistic Models, DDPMs)的重要性。尽管DDPMs在捕捉复杂视觉分布方面表现出色,但在高分辨率图像生成上面临显著的计算挑战。现有的方法,如在U-Net和Transformer架构中采用patchifying(分块处理),虽然加快了处理速度,但牺牲了表示能力。为了解决这一问题,论文提出了一种新的架构——Diffusion State Space Model(DIFFUSSM),它用一个更可扩展的状态空间模型骨干网络替代了注意力机制。这种方法在不进行全局压缩的情况下有效处理更高分辨率的图像,从而在整个扩散过程中保留了详细的图像表示。论文还强调了在扩散训练中对FLOP(浮点运算次数)高效架构的关注,并在ImageNet和LSUN数据集上的评估表明,DiffuSSM在FID(Fréchet Inception Distance)和Inception Score指标上与或超过现有的带有注意力模块的扩散模型,同时显著减少了总FLOP的使用。

概述

拟解决的问题:论文旨在解决DDPMs在高分辨率图像生成中的计算挑战,特别是在不牺牲图像细节和结构完整性的情况下,减少对高成本注意力机制的依赖。

创新之处:

  • 架构创新:提出了DIFFUSSM,这是一种无需注意力机制的扩散架构,它使用状态空间模型(SSM)骨干网络来处理长序列,避免了传统注意力机制中的二次复杂度问题。
  • 效率提升:通过使用SSM和hourglass(沙漏)架构,DIFFUSSM在保持图像细节的同时,提高了计算效率。
  • 性能提升:在高分辨率图像生成任务中,DiffuSSM在FID和Inception Score等指标上达到了与或超过现有模型的性能,同时显著减少了计算资源的使用。

方法

  1. 输入序列化:将图像数据转换为序列形式,以便通过状态空间模型进行处理。
  2. 门控双向状态空间模型(Gated Bidirectional SSM):这是DIFFUSSM块的核心,用于处理序列数据并捕捉长距离依赖关系。
  3. Hourglass 架构:用于在多层感知机(MLP)层中交替扩展和收缩序列长度,以提高计算效率。
  4. 输出解码:将处理后的序列数据解码回原始图像空间,生成最终的图像输出。

状态空间模型(SSMs)

状态空间模型通过将系统的状态表示为一个向量,并通过状态转移方程和观测方程来描述系统的动态行为。SSMs通常用于描述线性动态系统,但也可以扩展到非线性情况。

 这个表达式描述了状态空间模型中的两个基本方程:状态方程和观测方程。

 

 DIFFUSSM块

Hourglass架构是一种特殊的网络结构,它通过在网络的不同层之间交替扩展和收缩序列长度,来优化计算效率。在DIFFUSSM块中,Hourglass架构的具体实现如下:

  • 扩展层(Upscaling Layer):将序列长度扩展,以捕捉更广泛的上下文信息。
  • 收缩层(Downscaling Layer):将序列长度收缩,以减少计算量并提取关键特征。
  • 重复层(Recurrent Layer):在扩展和收缩层之间交替使用,以实现对序列数据的深度处理。

门控双向SSM是DIFFUSSM块的核心,它结合了状态空间模型和门控机制,以增强模型的处理能力。具体来说:

  • 状态空间模型:使用线性或非线性动态系统来描述序列数据的转换过程。
  • 门控机制:通过引入额外的控制信号(如类别标签或时间步信息),来调节状态空间模型的行为,从而提高模型的灵活性和适应性。

结论

论文得出结论,DIFFUSSM作为一种不依赖注意力机制的扩散模型架构,能够有效地处理高分辨率图像生成任务,同时在计算效率和图像质量上都取得了显著的改进。此外,该架构的提出为未来在需要长距离扩散的其他领域的应用,如高保真音频、视频或3D建模,提供了新的可能性。尽管论文主要关注图像生成任务,但其提出的方法和架构也可能对其他类型的生成任务有启发作用。

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

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

相关文章

计算机毕业设计 《计算机基础》网上考试系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

大模型分离架构学习记录

GPU Direct GPU 网络的情况已经发生了很大变化。每个 GPU 都有自己的内部互联,例如 NVIDIA 的 A100 或 H800,它们内部的 NVLink 互联可以达到 600GB 甚至 900GB。这种内部互联与外部以太网网络集群设计之间存在耦合关系。GPU 是单机多网卡的&#xff0c…

2409wtl,网浏包装

原文 介绍 本教程帮助你用IE引擎构建一个基于WTL,并使用我编写的处理IWebBrowser2接口包装类的迷你浏览器. 因为知道代码可能很难读,因此本教程帮助你逐步开发一个迷你浏览器. 背景 大部分项都与互联网浏览有关.我常用超文本视图使用SDI. 有时,我要用真正的浏览器函数,因…

创意无限:五款AI绘画应用,让艺术创作更简单

随着人工智能技术的不断进步,AI绘画已经成为一个不可忽视的现象。在短视频平台上,用户只需轻触屏幕,就能生成风格各异的画作,这种一键生成的特效迅速吸引了大量关注。AI绘画技术的快速发展,不仅让艺术创作变得更加便捷…

国产化数据库挑战及发展趋势

非国产数据库如Oracle、MySQL和MSSQL等在某些领域占据重要地位,但国产数据库的市场份额正在逐步提升,特别是在政策支持和市场需求的双重推动下,国产数据库的替代进程正在加速。 一、国产数据库市场规模 2024年中国数据库市场规模预计为543.1亿…

Python 数学建模——灰色关联度分析

文章目录 介绍原理代码实例 介绍 灰色关联度分析,可以反映两个序列 X ( k ) X(k) X(k) 和 Y ( k ) Y(k) Y(k) 之间的联系,用 r r r 表征。然而, r r r 的绝对大小并没有过多的意义,它的意义只在不同的 r r r 进行比较时体现。…

Java设计模式【命令模式】-行为型

1. 介绍 命令模式(Command Pattern) 是一种行为型设计模式,它将一个请求封装为一个对象,从而使我们可以用不同的请求对客户端进行参数化,并且支持请求的排队、记录日志以及撤销、重做等功能。命令模式将请求的发送者与…

微信小程序路由跳转之间的区别

navigateTo: 功能描述: navigateTo用于保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。 页面栈变化: 当使用navigateTo进行页面跳转时,当前页面会被推入页面栈中,但不会被销毁&#xff0…

掌握Go语言中的时间与日期操作

Go语言中的时间与日期操作 在编写程序时,处理时间和日期看似是一项无关紧要的任务,但在需要同步多个任务或从文本文件中读取时间时,它的重要性便凸显出来。Go语言中的time包为我们提供了丰富的时间与日期操作功能。本文将详细介绍如何在Go语…

C语言蓝桥杯:语言基础

竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_search函数,用于查找…

提升效率必备,掌握这些Shell文本处理技能!

Shell脚本是Linux系统里的一项基本功,就算它的语法看起来有点奇怪,读起来也不是特别顺畅,但在一些情况下,它仍然是最能干的解决办法。学好Shell脚本,不仅让你对Linux系统了解更深,还能让你手快地做好很多日…

python的特性,以及和Java的区别

两者各有各的魅力,像是编程语言界的两个明星选手。咱们先看看Python的几个重要特性,然后来个友好对比,看看Java和Python在哪些方面有“性格差异”吧! Python的主要特性 简洁易读: Python最出名的就是它的简洁性&#…

使用程序方式获取与处理MySQL表数据

8.1  执行多条语句获取 MySQL 表数据 8.1.1  MySQL 中的常量 8.1.2  MySQL 中的变量 1.用户变量 用户可以在表达式中使用自己定义的变量,这样的变量称为用户变量。 用户变量在使用前必须定义和初始化,如果使用没有初始化的变量&#x…

Python判断两张图片的相似度

在Python中,判断两张以numpy的ndarray格式存储的图片的相似度,通常可以通过多种方法来实现,包括但不限于直方图比较、像素差比较、结构相似性指数(SSIM)、特征匹配等。以下是一些常见方法的简要介绍和示例代码。 1. 像…

TypeScript系列:续篇 - 对象类型(含数组、元数组、函数)

在 TypeScript 中,对象类型用于定义对象的形状(shape),即对象包含哪些属性以及这些属性的类型。 对象类型可以是具体的,也可以是抽象的,用于类型检查和类型推断。 对象类型的最基本形式:接口&…

数据库视图和索引

参考链接: 数据库的视图和索引的概念和区别_索引和视图的区别-CSDN博客 MySQL 数据库--索引(理论详解及实例演示)_数据库索引-CSDN博客 1.视图 视图是从一个或多个表中导出来的表,是一种不是一种真正存在的概念。这样&#xf…

CUDA int128相乘是怎么实现的

CUDA int128相乘是怎么实现的 一.指令对应关系1.cuda C代码2.PTX代码[二个int64]3.SASS指令[多个u32] 二.复现过程 CUDA int128相乘是怎么实现的 一.指令对应关系 1.cuda C代码 clock_t t0clock64(); __prof_trigger(0); int128_t r4r2*r3; //二个int128_t相加 __prof_trig…

Android Glide:让图片加载从未如此简单

在 Android 开发中,图片加载一直是一个关键环节。无论是从网络还是本地加载图片,都需要考虑到性能、内存管理和用户体验等多个方面。而在这方面,Glide 成为了众多开发者的首选库之一。本文将带你深入了解 Glide 的强大之处,并介绍如何在项目中快速集成和使用 Glide。 为什…

外包干了三年,快要废了。。。

先简单说一下自己的情况,普通本科,在外包干了3年多的功能测试,这几年因为大环境不好,我整个人心惊胆战的,怕自己卷铺盖走人了,我感觉自己不能够在这样蹉跎下去了,长时间呆在一个舒适的环境真的会…

算法刷题:300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

300. 最长递增子序列 1.dp定义:dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度 2.递推公式:if (nums[i] > nums[j]) dp[i] max(dp[i], dp[j] 1); 注意这里不是要dp[i] 与 dp[j] 1进行比较,而是我们要取dp[j] 1的最大值…