DiffusionGAN ——最快的小波扩散模型应用研究

news2024/11/23 10:59:08

介绍

扩散模型最近出现并迅速发展,吸引了许多研究人员的兴趣。这些模型能从随机的噪声输入生成高质量的图像。在图像生成任务中,它们的表现尤其优于最先进的生成模型(GANs)。扩散模型可以灵活地处理各种条件输入,从而实现广泛的应用,如文本到图像的生成、图像到图像的转换和图像复原。这在基于人工智能的数字艺术和其他领域有着潜在的应用前景。

扩散模型具有巨大的潜力,但其非常缓慢的估算速度使其无法像 GAN 那样被广泛采用。基本的扩散模型需要几分钟才能获得所需的输出质量。为了缩短估算时间,人们进行了许多研究,但即使是最快的算法也需要数秒才能生成一幅 32 x 32 的图像;通过将扩散模型与 GAN 相结合,DiffusionGAN 极大地改善了估算时间,但它仍然不适合大型或复杂的应用。不适合实时应用。

为了用于实时应用,本评论文章提出了一种名为小波扩散(WaveletDiffusion)的新扩散方法。它使用离散小波变换将输入转换为低频和高频分量,从而将输入压缩了四倍,大大缩短了推理时间。此外,还提出了一种小波专用生成器,以更有效地利用小波特征并保持输出质量。实验结果证实,小波扩散在扩散模型中速度最快,同时还能保持较高的图像质量。
论文地址:https://arxiv.org/abs/2211.16152
源码地址:https://github.com/vinairesearch/wavediff

建议方法

基于小波的扩散方案

在这里插入图片描述

图 1.小波扩散方案。

在本文中,输入图像被分解成四个小波子带,并将其作为单一对象串联到扩散过程中(如图 1 所示)。这种模型在小波频谱而非原始图像空间上运行。因此,该模型可以利用高频信息为生成的图像添加更多细节。另一方面,小波子带比原始图像小四倍,这大大降低了采样过程的计算复杂度。

本文的方法基于 DDGAN 模型,输入是小波变换的四个小波子带。给定一个输入图像 x∈R 3 × H × W,将其分解为低子带和高子带,然后进一步串联形成矩阵 y∈R 12 × H 2 × W 2。该输入通过第一线性层投射到基础通道 D 上,与 DDGAN 相比,不会改变网络的宽度。因此,大多数网络的空间维度减少了四个,从而大大减少了计算量。

学习的损失函数

敌对损失

与 DDGAN 类似,它也是通过对抗性损失来优化生成器和判别器:

・重建损失和总体损失函数

除了上述敌对损失外,还增加了一个重建项,以防止频率信息的损失,并保持小波子带的一致性。这就是生成的图像与其地面实况之间的 L1 损失。

生成器的总体目标是对抗损失和重建损失的下一个线性组合:

其中,λ 是加权超参数。经过一定数量的采样步骤后,就能得到估计的去噪子带 y’0。最终图像可通过小波逆变换恢复:x’0 = IWT(y’0)。

包含小波的发电机

图 2:包含小波的发生器概览。

图 2 显示了拟议的小波嵌入生成器的结构。拟议的生成器采用 UNet 结构,包含 M 个下采样块和 M 个上采样块。相同分辨率的块之间也有跳转连接。不过,使用的是频率敏感块,而不是通常的下采样和上采样运算符。最低分辨率采用频率瓶颈块,以更好地关注低频和高频成分。

最后,利用小波下采样层引入频率残差连接,将原始信号 Y 纳入编码器的不同特征金字塔中。这里,Y 代表输入图像,Fi 代表 Y 的第 i 个中间特征图。

频率感知下采样和上采样模块

传统方法在下采样和上采样过程中使用模糊核来减少混叠伪影。本文则利用小波变换的固有特性,更好地进行上采样和下采样(如图 3 所示)。

这增强了这些操作对高频信息的识别能力。具体来说,下采样块接收输入特征 Fi、电位 z 和时间嵌入 t 的元组,并通过一系列层处理,返回下采样特征和高频子带。这些返回的子带可作为额外的输入,在上采样块中根据频率线索对特征进行上采样。

图 3. 频率感知下采样和上采样模块概览。

试验

数据集

实验在 32 x 32 CIFAR-10、64 x 64 STL-10 和 256 x 256 CelebA-HQ 及 LSUN-Church 数据集上进行。此外,还在 CelebA-HQ (512 和 1024) 高分辨率图像上进行了实验,以验证天安方法在高分辨率下的有效性。

估值指数

图像质量以弗雷谢特起始距离(FID)衡量,样本多样性以召回率(Recall)衡量;与 DDGAN 一样,FID 和召回率以 50 000 个生成样本计算。估算速度通过 300 次试验的平均推理时间来衡量,批量大小为 100。高分辨率图像(如 CelebA-HQ 512 x 512)的推理时间也是根据 25 个样本的批次计算得出的。

实验结果

图 4:Celeba 总部的发电实例

图 5:LSUN 中的生成示例。

在这里插入图片描述

表 1.CIFAR 的比较10

表 2. Celeba 总部的比较

表 3.LSUN 的比较

表 1、表 2 和表 3 列出了针对每个数据集与典型生成模型(如 VAE、GAN 和扩散模型)的比较结果。与VAESOTA或最强模型相比,所提出的方法在所有评价指标上都明显优于VAESOTA。特别是,图像质量的 FID 比VAE高出四倍多。

与GAN 的SOTA 相比,估计速度基本持平,图像质量也更高。在多样性方面,它在所有情况下都比GAN高 10%。

与 Diffusion模型和 DDGAN 相比,所提出的方法是Diffusion模型中估计速度最快的。特别是,它比 Diffusion的 SOTA快 500 多倍。图像质量和多样性也是最高的,在某些情况下比扩散模型的 SOTA高出1~2 个百分点。在所有评估指标上,它也都优于早期的DDGAN研究。

包含小波的发电机的有效性

我们在 CelebA-HQ 256×256 上测试了所提议的生成器每个单独组件的有效性。在这里,完整模型包括残差连接、上采样、下采样块和瓶颈块。如表 4 所示,每个部分都对模型的性能产生了积极影响。通过应用所有三个建议的组件,达到了 5.94 的最佳性能。然而,性能的提高在估算速度方面付出了较小的代价。

表 4.包含小波的发电机的有效性

生成一张图像的运行时间

此外,正如在实际应用中所预期的那样,所提出的方法在单幅图像中显示出极佳的速度。表 5 显示了时间和关键参数。所提出的方法能够在短短 0.1 秒内生成最大 1024 x 1024 的图像,这是第一个达到接近实时性能的扩散模型。

图 5.使用我们的完整模型对每个基准集生成的单幅图像进行估计所需的时间

结论

本研究引入了一种名为小波扩散的新扩散模型,该模型在图像质量和采样率方面都表现出色。通过将小波变换纳入图像和特征空间,所提出的方法达到了扩散模型中最先进的执行速度,缩小了与 GAN 中 SOTA 的差距,并获得了与 StyleGAN2 和其他扩散模型几乎相当的图像生成质量。此外,与基线 DDGAN 相比,所提方法的收敛速度更快,从而证实了所提框架的高效性。

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

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

相关文章

蓝桥杯练习系统(算法训练)ALGO-949 勇士和地雷阵

资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 勇士们不小心进入了敌人的地雷阵(用n行n列的矩阵表示,*表示某个位置埋有地雷,-表示某个…

ASP.NET图书馆管理信息系统

摘  要 本文首先阐述了基于.NET Framework平台的图书馆管理信息系统的开发背景以及其实践意义,其次说明了图书馆管理信息系统的功能以及相比同类软件的创新之处。然后就图书馆管理系统开发中所使用的一些的技术进行研究探讨。主要针对数据库的设计技术、存储过程…

2024五一杯数学建模竞赛A题完整成品论文和代码分析:建立钢板切割的工艺路径动态规划、贪心与分层优化模型

2024五一杯数学建模竞赛A题:建立钢板切割的工艺路径动态规划、贪心与分层优化模型 2024五一数学建模A题完整代码和成品论文获取↓↓↓↓↓ https://www.yuque.com/u42168770/qv6z0d/gyoz9ou5upvkv6nx?singleDoc# 本文文章较长,建议先目录。经过不懈的…

基于深度学习检测恶意流量识别框架(80+特征/99%识别率)

基于深度学习检测恶意流量识别框架 目录 基于深度学习检测恶意流量识别框架简要示例a.检测攻击类别b.模型训练结果输出参数c.前端检测页面d.前端训练界面e.前端审计界面(后续更新了)f.前端自学习界面(自学习模式转换)f1.自学习模式…

vue3 element-plus 让el-container占满屏幕

在刚开始用element-plus的布局时&#xff0c;发现无法占满屏幕&#xff1a; 在App.vue中添加如下css代码&#xff1a; <style>html, body, #app {margin: 0;padding: 0;height: 100%;} </style>同时布局代码所在的component如下所示&#xff1a; <template&g…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-8.1--C语言LED驱动程序

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

对stm32F103RCT6原理图解析(详细)

最近想了解一下原理图为什么这样设计&#xff0c;又发现网上虽然有相关的解析&#xff0c;但是不全面&#xff0c;所以唉还是自己动手&#xff0c;丰衣足食吧。 MCU部分 核心芯片STM32F103RCT6 (8条消息) stm32命名规则_BachelorTse的博客-CSDN博客 这里有芯片相关的命名规则…

在Windows中,matplotlibcpp的使用

0 前言 本篇文章记录一个c库的使用&#xff1a;matplotlib-cpp&#xff0c;其作用是在c中调用python的matplotlib&#xff0c;实现绘图操作。 对于Windows环境下使用该库的文章&#xff0c;发现文章依然存在一些问题&#xff0c;总是存在报错不能解决&#xff0c;花费了较多的…

QT的TcpServer

Server服务器端 QT版本5.6.1 界面设计 工程文件&#xff1a; 添加 network 模块 头文件引入TcpServer类和TcpSocket&#xff1a;QTcpServer和QTcpSocket #include <QTcpServer> #include <QTcpSocket>创建server对象并实例化&#xff1a; /*h文件中*/QTcpServer…

Python根据预设txt生成“你画我猜”题目PPT(素拓活动小工具)

Python根据预设txt生成“你画我猜”题目PPT&#xff08;素拓活动小工具&#xff09; 场景来源 去年单位内部的一次素拓活动&#xff0c;分工负责策划设置其中的“你画我猜”环节&#xff0c;网络上搜集到题目文字后&#xff0c;想着如何快速做成对应一页一页的PPT。第一时间想…

观察者模式实战:解密最热门的设计模式之一

文章目录 前言一、什么是观察者模式二、Java实现观察者模式2.1 观察者接口2.2 具体观察者2.3 基础发布者2.4 具体发布者2.5 消息发送 三、Spring实现观察者模式3.1 定义事件类3.2 具体观察者3.3 具体发布者3.4 消息发送 总结 前言 随着系统的复杂度变高&#xff0c;我们就会采…

Google 发布 CodeGemma 7B,8K上下文,性能超CodeLlama 13B

CodeGemma简介 CodeGemma模型是谷歌的社区开放编程模型&#xff0c;专门针对代码领域进行优化。一系列功能强大的轻量级模型&#xff0c;能够执行多种编程任务&#xff0c;如中间代码填充、代码生成、自然语言理解、数学推理和指令遵循。CodeGemma模型是在大约500B个主要为英语…

【算法入门教育赛1D】环形密码 - 字符串 | C++题解与代码

题目链接&#xff1a;https://www.starrycoding.com/problem/161 题目描述 小 e e e有一个宝箱&#xff0c;这个宝箱有一个长度为 n n n的密码&#xff0c;但是这个密码校验器是一个环形&#xff0c;意思是只要密码从任意一位开始读&#xff08;读到最后一位回到第一位继续&a…

每日OJ题_贪心算法二⑤_力扣870. 优势洗牌(田忌赛马)

目录 力扣870. 优势洗牌&#xff08;田忌赛马&#xff09; 解析代码 力扣870. 优势洗牌&#xff08;田忌赛马&#xff09; 870. 优势洗牌 难度 中等 给定两个长度相等的数组 nums1 和 nums2&#xff0c;nums1 相对于 nums2 的优势可以用满足 nums1[i] > nums2[i] 的索引…

Redis - Zset 有序集合

前言 它保留了集合不能有重复成员的特点&#xff0c;但与集合不同的是&#xff0c;有序集合中的每个元素都有⼀个唯⼀的浮点类型的分数&#xff08;score&#xff09;与之关联&#xff0c;有序集合中的元素是可以维护有序性的&#xff0c;但这个有序不是⽤下标作为排序依据⽽是…

笔记13-OSError: [Errno 24] Too many open files

文章目录 参考文献失败尝试系列查看发现&#xff0c;似乎是因为线程数有限制 修改配置先查查看 增加文件数限制&#xff0c;然后使用命令运行&#xff08;成功&#xff09; 参考文献 Linux 最大可以打开多少文件描述符&#xff1f; OSError: [Errno 24] Too many open files错…

Redis-单机安装

试图从官网注册不了我也不知道什么情况。 网盘自取吧&#xff0c;链接&#xff1a;https://pan.baidu.com/s/1KERBQaH9gCT10AGt9z0_jg?pwdyjen 安装比较简单&#xff0c;照着敲就完了每一步都试过了&#xff0c;先单机安装&#xff0c;后面搭建集群。 1.将安装包放到/usr/…

一文带你了解MySQL的索引分类

文章目录 ☃️分类☃️演示图☃️思考☃️总结 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与空间的平衡&#xff0c;0与1的延伸的后端开…

C++之set/map相关实现

看着上面的图片&#xff0c;你可能对set和map的多样变化产生疑惑&#xff0c;下面我们就来详细讲解他们的区别以及实现 一.set/map 首先&#xff0c;在这里我们要声明&#xff0c;如果你对二叉搜索树一点都不了解的话&#xff0c;建议你先去将搜索二叉树学会再来学习这里的内…

MFC 列表控件删除实例(源码下载)

1、本程序基于前期我的博客文章《MFC下拉菜单打钩图标存取实例&#xff08;源码下载) 》 2、程序功能选中列表控件某一项&#xff0c;删除按钮由禁止变为可用&#xff0c;点击删除按钮&#xff0c;选中的项将删除。 3、首先在主界面添加一个删除参数按钮。 4、在myDlg.cpp 文件…