集智书童 | DuoDiff: 提升浅层 Transformer 性能的扩散模型, 双 Backbone 件扩散模型在图像处理中的应用 !

本文来源公众号“集智书童”,仅用于学术分享,侵权删,干货满满。

原文链接:DuoDiff: 提升浅层 Transformer 性能的扩散模型, 双 Backbone 件扩散模型在图像处理中的应用 !

扩散模型在图像生成方面取得了前所未有的性能,但由于其迭代采样过程,推理速度较慢。

为了解决这个问题,最近提出了早期终止(Early-exiting)的方法,其中,去噪网络的深度根据每个采样步骤的(估计)难度进行自适应。

在这里,作者发现在当前自适应扩散模型的采样过程中存在一个有趣的“相变”:在初始采样步骤中,去噪网络始终过早地退出,直到突然切换到使用整个网络。

基于这个发现,作者提出了一种加速生成的方法:在初始采样步骤中使用较浅的去噪网络,而在后续步骤中使用较深的网络。

作者在实验中证明了作者的双骨架方法 DuoDiff 在推理速度和生成质量上都优于现有的早期终止扩散方法。

重要的是,DuoDiff 易于实现,并且与加速扩散的现有方法相辅相成。

1 Introduction

扩散模型[21]在各种模态的生成任务上近期展现了令人印象深刻的表现,包括图像[6; 3],视频[7; 8],音频[12],以及分子[9]。然而,使用扩散模型生成新样本的过程可能较慢,因为需要多次调用去噪网络[25]。为了提高采样效率[26],一些最具前景的方法关注于减少采样步骤(例如,DDIM[22]和基于蒸馏的方法[19; 15])或改变采样空间(例如,潜在扩散[18])。

为了加速扩散,AdaDiff [23] 中提出了早期终止策略。与上述静态方法不同,AdaDiff 是一种自适应方法,其中使用的去噪网络的深度可以在采样步骤之间变化。具体来说,每个采样步骤t (其中t 从总步骤数 T递减到 0)的难度是通过计算每个层去噪网络的不确定性进行估计。如果不确定性足够低,那么正向传播将在该层终止(即模型 提前终止),从而减少该步骤的计算量。

在这项工作中,作者利用早期退出模型的自适应性质来研究扩散模型中生成过程的动力学。

有趣的是,作者发现生成过程的早期(即,对于大的t),只有去噪网络的少量层处于活动状态,而当t接近0时,整个网络都被利用(如图1所示)。这表明扩散模型中的生成过程开始于一个更容易的阶段,然后是更具有挑战性的阶段。受这些发现启发,作者在每个采样步骤上都消除了动态的早期退出,并引入了一种(静态)双 Backbone 设计,即DuoDiff。

DuoDiff由两个去噪网络组成:在生成过程的初始、更容易的阶段中使用较浅的一个,而在随后的更具有挑战性的阶段中使用更深的一个(如图3所示)。

实验证明,DuoDiff 在各种标准数据集(如 ImageNet 256x256)上的采样延迟和图像生成质量均优于现有的早期退出扩散模型。此外,与早期的退出扩散模型相比,DuoDiff 更适合批处理推理,因为它不需要为每个样本分配计算路径。此外,作者还展示了 DuoDiff 能够有效地与其他流行的效率提升方法(如 [22; 18])结合使用。

2 Background

扩散模型通过逐步向数据中添加噪声并学习如何逆转这一过程,生成高质量的样本。定义为向原始数据中添加噪声的前向过程。

3 Methods

在上述早期退出趋势的基础上,作者提出了一种名为DuoDiff的新颖扩散框架,旨在通过使用双 Backbone 结构加速推理过程。在反向扩散过程的初始时间步长中,输入主要由噪声主导,任务较为简单,此时DuoDiff使用了一个浅层的三层 Backbone ,作为这些时间步中大多数样本的早期退出层,通常低于3(如图1所示)。

随着扩散过程的进行,输入变得更加结构化,DuoDiff将剩余、更复杂的时步切换到完整的 Backbone 。作者用t_s表示浅层模型活跃的时间步数。浅层和完整 Backbone 都从零开始在相同的数据集上使用相同的扩散训练目标进行训练。此外,两种 Backbone 都针对所有t值进行训练,训练完成后,可以根据需要自由选择t_s。

不同于AdaDiff,它依赖于基于每个样本不确定性水平的动态提前终止机制(见公式3),DuoDiff通过在两个 Backbone 之间使用固定转换点来简化此过程。虽然这牺牲了早期退出的适应性(即根据样本的难度而变化的计算),但作者认为这在这一点上是可以谅解的,因为作者在不同的样本之间观察到非常少的退出模式变化(如图1中标准偏差条的小表示)。

此外,静态方法消除了AdaDiff为不同样本设置不同退出点所导致的批处理低效问题,使批处理推理更高效且易于实现。

4 Experiments

5 Conclusion & Future Work

在本文中,作者提出了DuoDiff,它是适应扩散模型的双 Backbone 件的替代品,灵感来源于早期退出趋势的一致性。

作者证明了DuoDiff在降低每个样本推理时间的同时,还能保持图像质量。

DuoDiff还兼容其他扩散技术,包括潜在空间扩散和DDIM采样,为解决扩散模型的缓慢推理速度提供了一种高效解决方案。

未来研究将专注于探索不同的DuoDiff配置,例如增加浅层 Transformer 中的层数以增加。

此外,一个有前途的方向是研究不同扩散参数化中的早期退出趋势,例如预测原始图像而不是添加的噪声。

6 参考文献

[0]. DuoDiff: Accelerating Diffusion Models with a Dual-Backbone Approach.

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux perf 环境部署和基本测试(基于Ubuntu20.04)

1,linux 安装perf sudo apt-ge install linux-tools-common sudo apt-get install linux-tools-$(uname -r) linux-tools-generic -y 2 补充安装 sudo apt-get install python3-q-text-as-data 3,perf常用命令 larkubuntu:~$ perf usage: perf [--version] [--hel…

PHP露营地管理平台小程序系统源码

⛺️【露营新风尚】露营地管理平台系统全攻略⛺️ 🏕️一、露营热潮下的管理难题:如何高效运营露营地?🤔 随着露营文化的兴起,越来越多的人选择在大自然中享受宁静与自由。然而,露营地的管理却面临着诸多…

信息安全工程师(83)Windows操作系统安全分析与防护

一、Windows操作系统安全分析 系统漏洞: Windows操作系统由于其复杂性和广泛使用,可能存在一些已知或未知的漏洞。这些漏洞可能会被黑客利用,进行恶意攻击。微软会定期发布系统更新和补丁,以修复这些漏洞,提高系统的安…

软件测试—功能测试详解

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、测试项目启动与研读需求文档 (一) 组建测试团队 1、测试团队中的角色 2、测试团队的基本责任 尽早地发现软件程序、系统或产…

【1个月速成Java】基于Android平台开发个人记账app学习日记——第7天,申请阿里云SMS短信服务SDK

系列专栏链接如下,方便跟进: https://blog.csdn.net/weixin_62588253/category_12821860.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12821860&sharereferPC&sharesourceweixin_62588253&sharefromfrom_link 同时篇幅…

安装和运行开发微信小程序

下载HBuilder uniapp官网 uni-app官网 微信开发者工具 安装 微信小程序 微信小程序 官网 微信小程序 配置 运行 注意:运行前需要开启服务端口 如果运行看不到效果,设置下基础库选别的版本 配置

如何用pycharm连接sagemath?

#世纪难题在我逃避刷CTF的这两天解决了# 1. 在本地linux上部署最新版的sagemath 推荐WSLdocker直接pull sagemath 2. pycharm中创建jupyter脚本,远程连接jupyter服务器 3. 运行cell并配置kernel 缺点:pycharm用自带的python编译器预处理代码&#xff0…

JNPF V5.1版本震撼上线,更多功能等你解锁!

亲爱的用户们: 随着季节的更迭,引迈也在不断进步和创新。经过数月的精心打磨和无数次的测试,我们非常兴奋地宣布,JNPF快速开发平台迎来了激动人心的V5.1版本更新!这次更新不仅带来了全新的功能和改进,还进…

Dependency: androidx.webkit:webkit:1.11.0-alpha02. 问题

android studio 打包后出现这个问题 1.步骤更新topOn sdk 添加 //Admob api “com.anythink.sdk:adapter-admob:6.4.18” api “com.google.android.gms:play-services-ads:23.4.0” api "com.google.android.gms:play-services-ads:23.4.0"sdk 中会出现打包编译报错…

express 使用JWT认证

1、JWT的理解 JWT 的组成部分: 分别是 Header(头部)、Payload(有效荷载)、Signature(签名) 三者之间使用英文的"."分隔, Pyload 部分才是真正的用户信息,他是用户信息经过加密之后生成的字符串 Header 和 Signature 是 安全性相关的部分,只是为了保证 Tok…

【数据结构】LRUCache和跳表{简单讲解+模拟实现}

文章目录 LRUCacheSkipList LRUCache LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的…

第一个纯血鸿蒙应用(Napi开发-ArtTS调用C/C++)

1.行业背景 纯血鸿蒙,即鸿蒙Next版已于2014年1月正式发版,鸿蒙生态设备数量已经突破10亿台,已经有超过15000个应用和元服务上架。鸿蒙生态不只是移动设备这么简单,他打造的是一个18n的全场景战略,真正做到了“万物互联…

【从零开始的LeetCode-算法】3255. 长度为 K 的子数组的能量值 II

给你一个长度为 n 的整数数组 nums 和一个正整数 k 。 一个数组的 能量值 定义为: 如果 所有 元素都是依次 连续 且 上升 的,那么能量值为 最大 的元素。否则为 -1 。 你需要求出 nums 中所有长度为 k 的 子数组 的能量值。 请你返回一个长度为 n - …

【Linux】进程创建/等待/替换相关知识详细梳理

1. 进程创建 1.1 fork函数 概念&#xff1a;fork函数为系统调用接口&#xff0c;用于从已存在的进程中&#xff0c;创建一个新的进程。新进程为子进程&#xff0c;原来的进程为父进程。 用法&#xff1a; #include <unistd.h> pid_t fork(void); // 返回值&…

CSS例子: 横向排列的格子

效果 HTML <view class"content"><view class"item" v-for"item of 5">{{item}}</view></view> CSS .content {height: 100vh;display: flex;flex-direction: row; flex-wrap: wrap;align-content: flex-start;backgro…

【机器学习】决定系数(R²:Coefficient of Determination)

决定系数&#xff0c;也称为 R 平方&#xff0c;是一种用于衡量回归模型预测效果的统计指标。它表示了模型解释目标变量总变异的程度&#xff0c;数值介于 0 和 1 之间&#xff0c;数值越接近 1 表明模型的解释力越强。 1. 的定义和公式 的公式如下&#xff1a; 其中&#xf…

[免费]SpringBoot+Vue(高校)学籍管理系统【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue(高校)学籍管理系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue(高校)学籍管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 对在线学籍管理的流程进行科学整理、归纳和…

<项目代码>YOLOv7 草莓叶片病害识别<目标检测>

YOLOv7是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv7具有更高的…

Pinia小菠萝(状态管理器)

Pinia 是一个专为 Vue 3 设计的状态管理库&#xff0c;它借鉴了 Vuex 的一些概念&#xff0c;但更加轻量灵活。下面将详细介绍如何使用 Pinia 状态管理库&#xff1a; 安装 Pinia 使用 npm&#xff1a;在项目目录下运行npm install pinia。使用 yarn&#xff1a;在项目目录下运…

【深度学习】多分类任务评估指标sklearn和torchmetrics对比

【深度学习】多分类任务评估指标sklearn和torchmetrics对比 说明sklearn代码torchmetrics代码两个MultiClassReport类的对比分析1. 代码结构与实现方式2. 数据处理与内存使用3. 性能与效率 二分类任务评估指标1. 准确率&#xff08;Accuracy&#xff09;2. 精确率&#xff08;P…