(2024,仅高频分量的蓝噪声与高斯噪声线性插值,时变噪声)扩散模型的蓝噪声

Blue noise for diffusion models

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

目录

0. 摘要

1. 简介

2. 相关工作

3. 方法

3.1 相关噪声

3.2 具有时变噪声的扩散模型

3.3 利用矫正映射的数据样本相关性

4. 实验

5. 结论


0. 摘要

大多数现有的扩散模型在训练和所有时间步骤的采样中使用高斯噪声,这可能无法最优地考虑去噪网络重建的频率内容。尽管相关噪声在计算机图形学中有各种应用,但其在改进训练过程方面的潜力尚未得到充分探索。在本文中,我们引入了一种新颖且通用的扩散模型类别,考虑了图像内部和图像之间的相关噪声。更具体地说,我们提出了一个时变噪声模型,将相关噪声纳入训练过程,以及一种快速生成相关噪声掩码的方法。我们的模型建立在确定性(deterministic)扩散模型基础上,并利用蓝噪声(blue noise),相对于仅使用高斯白噪声(随机噪声),有助于提高生成质量。此外,我们的框架允许在单个小批次中引入图像之间的相关性以改善梯度流。我们使用我们的方法在各种数据集上进行了定性和定量评估,在 FID 指标方面相对于现有的确定性扩散模型实现了不同任务的改进。在接受后,我们将发布代码和已训练模型。

1. 简介

在这篇论文中,我们提出了一种支持具有时变噪声扩散过程的新型扩散模型。我们的目标是利用相关噪声(correlated noise),例如蓝噪声(blue noise)([Ulichney 1987]),以增强生成过程。蓝噪声的特点是其功率谱在低频区域没有能量。我们的关注点是蓝噪声掩码(blue noise mask)([Ulichney 1999]),它们提供具有蓝噪声特性的噪声轮廓。我们建议使用这些蓝噪声掩码来设计基于扩散的生成建模的时变噪声。为扩散生成这样的相关噪声掩码是一个耗时的过程,因为它可能需要实时生成数千到数百万个掩码。为了解决这个问题,我们提出了一种有效的方法,可以实时生成适用于低维和高维图像的高斯蓝噪声掩码。

2. 相关工作

蓝噪声(blue noise)。蓝噪声是一种以高频信号和缺失低频信号为特征的噪声类型。它在计算机图形学中有许多应用。

  • 其中一种应用是蓝噪声掩码的使用,如 Ulichney [1993] 介绍的,用于扰动(dithering)以通过蓝噪声掩码增强感知质量。
  • 蓝噪声掩码也被用于渲染中,以改善错误的分布,如 Georgiev 和 Fajardo [2016] 以及 Heitz 和 Belcour [2019] 的研究所示。
  • 关于渲染中蓝噪声与去噪之间的关系已经由 Chizhov 等人 [2022] 和Salaün等人 [2022] 进一步探讨,揭示了将蓝噪声与低通滤波器结合可以减少感知错误。

为了利用蓝噪声掩码的有利去噪特性,我们建议将它们用作扩散式生成建模中数据的加性噪声。

3. 方法

基于扩散的生成模型包括两个关键过程:正向过程和反向过程。在正向过程中,引入了噪声,表示为 𝝐,以通过乘以由离散时间参数 𝑡 确定的因子来损坏初始图像 x_0。这里,x_0 表示从训练数据分布(表示为 𝑝_0)中采样的实际图像。时间步 𝑡 的范围从 0 到 𝑇 - 1,其中 𝑇 是离散时间步的总数。损坏的图像以及相应的时间步 𝑡 随后被用作训练神经网络 𝑓_𝜽 (x_𝑡 , 𝑡) 的输入。

在反向过程中,训练好的网络用于去噪纯噪声并生成新图像。图 2 说明了这个过程。从高斯噪声(蓝色分布)开始,图像通过网络迭代传递,最终产生一个完全去噪的图像,与目标分布(红色分布)一致。过程的中间步骤涉及噪声和图像的混合。图中可见三个示例。随着执行更多时间步骤(𝑡 接近 0),图像质量提高,更多细节出现。在这个例子中,中间噪声从高斯噪声过渡到高斯蓝噪声,遵循第 3.2 节的时变时间表。

本节探讨了两个不同轴上的相关性:噪声中像素之间的相关性,以及一个小批次内图像之间的相关性。为了展示噪声掩码和图像之间的相关性的影响,我们构建了一个具有时变噪声的确定性扩散过程,按照 Heitz 等人 [2023] 的工作,即 IADB 方法。出于简单和公平的一对一比较,我们的方法是在保留其特征和超参数(除了我们方法中描述的新参数)的基础上构建的 IADB。但我们的方法足够通用,可以在其他现有的生成扩散过程的基础上进行探索。对于 IADB,正向和反向过程以及目标函数的定义如下: 

其中,𝑥_0 是目标图像,𝝐 ∼ N(0, 𝑰 ) 是随机的高斯噪声,𝛼_𝑡 和 𝛼_(𝑡−1) 是两个混合系数。网络模型被称为 𝑓_𝜽,接受两个输入参数:一个损坏的图像 x_𝑡 和时间步长 𝑡。IADB 还存在一个随机形式,但本文将重点放在确定性变体上,因为它更为稳定。 

3.1 相关噪声

在确定性扩散过程中,噪声掩码(noise masks)用作反向过程的初始化,以生成图像,并在每个训练步骤中用于损坏目标图像。训练期间的掩码生成是一个关键因素,必须满足特定要求。该过程必须是随机的,以在每次迭代时产生不同的掩码,从而减少过拟合并增加生成结果的多样性。掩码生成还必须具有快速计算的特性,因为它在每个训练步骤中都被使用。

高斯噪声自然符合这些要求,但并非所有相关掩码方法都是如此。特别是,IADB 使用从具有零均值和单位协方差矩阵的多元高斯分布生成的掩码。创建相关噪声,如蓝噪声,需要一个非单位协方差矩阵。蓝噪声掩码的协方差矩阵可以从一组掩码中估计出来。我们使用 Ulichney [1993] 的目标函数进行模拟退火(simulated annealing),生成了一万个蓝噪声掩码。虽然这种方法产生了高质量的掩码,但确实需要相当多的优化时间。然后,通过对示例掩码的相关矩阵进行平均,可以计算蓝噪声的协方差矩阵 Σ。

为了创建具有指定协方差矩阵 Σ 的噪声掩码,对 Σ 应用 Cholesky 分解,得到一个下三角矩阵 𝐿(𝐿𝐿^𝑇 = Σ)。最后,随机向量与 𝐿 相乘,以有效地生成所需的噪声掩码:

其中,ϵ∼N(0,I) 是单位方差的高斯分布。

图 3 显示了使用等式 (4) 生成的高斯蓝噪声掩码的一个实现。在 𝐿 中的每行或每列表示噪声掩码的像素索引。在 𝐿 中的每个单元格表示噪声掩码中像素之间的相关强度。正值对应于表示正相关的亮单元格。类似地,负值对应于表示负相关的暗单元格。对于每个像素,只有其相邻像素的值与零差距较大,而其他非相邻像素的值接近零,如白色和黑色线所示。请注意,本文中我们将 b 称为高斯蓝噪声,但与 Ahmed 等人 [2022] 的高斯蓝噪声方法不同。

更高的维度。当 𝐿 矩阵是高维时,矩阵-向量乘法在计算上是昂贵的。直接增加矩阵大小以生成高维噪声比使用现代机器学习框架(如 PyTorch [Paszke等人,2017])生成(不相关的)高斯噪声更慢。由于噪声生成在每个训练步骤中都被使用,开销应该保持最小。因此,为了生成更高维度的噪声掩码,我们采用了 Kollig 和 Keller [2002] 的方法,用于生成我们的蓝噪声掩码:对一组较低维度的掩码进行填充。

更具体地说,为了生成一批高维度的高斯蓝噪声掩码,使用等式 (4) 在分辨率 64 x 64 生成一个更大的批次,其中 L∈R^(64^2 × 64^2)。然后将 64^2 的掩码填充到更大的平铺(tiles)中,以获得更高维度的高斯蓝噪声掩码。因此,生成 256x256 分辨率的高斯蓝噪声的计算开销是可以忽略的。

图 1 显示了通过填充来生成分辨率为 128 x 128 的高斯蓝噪声的示例。对于高维度掩码使用填充会在填充的平铺之间创建接缝。这种伪影在实际中几乎看不到,并且通过该方法的低开销得以补偿。我们在附录文档第 3 节中提供了不同分辨率的掩码,以及高斯蓝噪声的相应频率功率谱,演示了使用我们的填充方法在不同分辨率下保持蓝噪声属性。

(注:在相邻像素之间补零,导致图像频谱只有高频分量,没有低频分量)

3.2 具有时变噪声的扩散模型

使用单个矩阵 𝐿 只能生成单个相关性。对于扩散模型,在每个时间步引入模型内的相关性的量需要进行控制。可以从编码两种相关性类型的两个固定矩阵计算时变的 𝐿:

其中 L_w​ 和 L_b​ 表示两个不同的矩阵,γ_t​ 是混合系数(注:在白噪声 white 矩阵和蓝噪声 blue 矩阵之间插值,获得混合噪声,如算法 1 所示)。基于此,正向过程被定义为: 

通过这个前向过程,基于时间步 𝑡 对高斯噪声和高斯蓝噪声进行插值。更一般地,该模型支持基于 𝛾_𝑡 对任意两种噪声类型进行平滑插值。图 4 显示了从高斯噪声插值到高斯蓝噪声的线性插值的示例。通过离散傅立叶变换(DFT)计算的相应频率功率谱显示,低频区域的能量从左到右逐渐减小。

接下来,前向过程需要被反转以定义后向过程。基于 𝐿 和前向过程的定义,我们可以推导出后向步骤如下:

详细的推导可以在补充文件第1节中找到。这里,L_w​ 是代表高斯(白色)噪声的单位矩阵,L_b​ 是在方程(4)中定义的矩阵。当 L_b​=L_w​ 时,我们的模型回退到 IADB。当 L_b​ ≠ L_w​ 时,我们得到一个具有时变噪声的更一般模型。

在 IADB 中,网络被设计成仅学习项

其中 L_t​ 在他们的情况下只是一个单位矩阵。在这里,我们可以训练网络学习方程(7)中的两个项。一个蛮力的方法是使用两个神经网络。然而,这不实际,因为它将引入比 IADB 更多的计算。我们选择输出一个 6 通道的图像,表示两个项为两个 3 通道图像,分别表示为 f'_θ​(x_t​,t) 和 f''_θ​(x_t​,t)。所以,期望的网络输出变为如下两项:

因此,损失函数变为: 

请注意,尽管我们的模型是使用时变噪声进行训练的,但在反向过程中仍然是确定性的。反向过程始于初始的高斯噪声,在中间的时间步骤中不需要额外的噪声。相反,网络学会以时变去噪的方式引导反向过程。

前向、反向和噪声生成的步骤总结在算法 1 到 3 中。按照 Heitz 等人 [2023] 的方法,在算法 2 中,我们将 get_alpha(𝛼 调度器)视为线性函数(𝛼_𝑡 = 𝑡/𝑇),但它也可以是非线性函数。 接下来,我们将 get_gamma 定义为一个通用的基于 sigmoid 的函数,如方程(9)所示。在方程(8)中的加权项 (γt​−γt−1​)/(αt​−αt−1​) 自动考虑了 𝛼 调度器和 𝛾 调度器之间的差异。当  γt​−γt−1​ 很小时,f′′θ​(xt​,t) 的贡献减小。这与方程(7)中描述的反向过程一致,其中当 γt​−γt−1​ 很小时,f′′θ​(xt​,t) 不太重要。

噪声调度器。受 Chen [2023] 的研究启发,调度器的选择特别地随着图像分辨率增加而变得重要。我们将 get_gamma,即 𝛾-调度器,参数化为一个基于 sigmoid 的函数,以控制两种噪声之间的插值。更具体地说,根据 Chen [2023] 的方法,𝛾-调度器由 3 个参数参数化:start​, send​, τ: 

其中,σ(x) = 1/(1+e^x),而 t 是时间步长。

由于不知道如何提前设置 start​,send​,τ,除了优化网络参数,我们考虑优化它们,其中 start​∈[−3,0),send​∈(0,3],τ∈[0.01,1000.0]。在初始实验中,我们发现 start​ 和 send​ 稳定收敛到约为 0 和 3,而 τ 收敛到约为 0.2 或保持增加,具体取决于图像分辨率。与此同时,我们发现优化这 3 个参数需要额外的迭代才能收敛,并使网络的训练更加困难,因为它们在迭代中发生变化。

为了使这 3 个参数的选择更为实际,我们选择固定 sstart​=0,send​=3 并根据图像分辨率设置 τ:对于 128x128 的图像,τ=0.2,对于 64x64 的图像,τ=1000。具有不同 τ 值的 γ−调度器曲线显示在插图中。 我们在补充文件第 2 节中总结了我们在所有实验中使用的这 3 个参数的值。 

讨论。我们的时变噪声模型提供更多能力,来为 γt 选择数据相关调度器,以改进去噪过程。一个潜在的问题是,我们需要额外的迭代来搜索 𝛾-调度器的最佳参数。为了缓解这个问题,我们提出了一个实际的解决方案,即基于我们的初始优化固定 τ。但如何更高效地选择 𝛾-调度器需要在未来进行更多研究。

3.3 利用矫正映射的数据样本相关性

前面的段落已经演示了在像素之间使用相关的噪声来增强扩散过程。相关性也可以在单个小批次中使用,以改进噪声与目标图像之间的映射关系。

受 Rectified flow [Liu et al. 2022] 和 Instaflow [Liu et al. 2023] 的启发,可以利用相关性来矫正成对的噪声-图像。在图 5 中可视化了这种映射的改进。该图表示扩散模型的一个训练迭代。随机采样了一批成对的数据样本 x0​(红色分布)和噪声 b(蓝色分布)。先前的工作(图5(a))在 x_0​ 和 b 之间应用了随机映射。通过在将它们输入前向过程之前应用上下文分层(图5(b)),可以改善噪声-数据映射。这种矫正的映射减小了每个噪声与其目标图像之间的距离,产生了更直接的轨迹。为了创建这种改进的映射,计算了噪声和数据之间的成对和像素间的距离。然后,对于每个 𝜖,选择尚未使用的具有最短距离的 x0​。这种改进的映射确保在训练过程中特定图像始终与相同类型的噪声关联,从而导致跨时间步的平滑梯度流。 

4. 实验

5. 结论

我们提出了一种将相关噪声引入确定性生成扩散模型的新方法。我们的技术涉及使用基于矩阵的方法生成的不相关和相关噪声掩码的组合。通过研究不同的噪声相关性,我们揭示了噪声特性与生成图像质量之间的复杂关系。我们的发现表明,高频噪声在保留细节方面有效,但在生成低频成分方面存在困难,而低频噪声阻碍了复杂细节的生成。为了实现最佳图像质量,我们建议以一种时间相关的方式选择性地使用不同类型的噪声,利用每个噪声组分的优势。为了验证我们方法的有效性,我们在与著名方法 IADB [Heitz et al. 2023] 结合使用的同时进行了大量实验证明,通过保持训练数据和优化超参数一致,我们在各种数据集上始终观察到图像质量的显著提升。这些结果表明了我们方法在增强确定性生成扩散模型的图像生成能力方面的优越性。

未来工作。我们相信我们提出的模型将启发设计噪声模式以提高生成扩散模型效率的新研究方向。一个有趣的未来工作是将我们的模型扩展到插值超过两种噪声,以考虑更多不同类型的噪声,如低通和带通噪声。这可能为改善扩散模型的训练和采样效率提供更多自由度。此外,我们可以设计更先进的技术,在训练期间相关数据样本,这是与使用相关噪声正交的。将我们的框架(例如,时变噪声模型)扩展到 DDPM [Ho et al. 2020]、DDIM [Song et al. 2020a] 甚至潜在扩散模型 [Rombach et al. 2022] 将是另一个有趣的未来方向。通过这种方式,我们的框架可以推广到最先进的扩散模型。

在应用方面,我们在 2D 无条件和条件图像生成上测试了我们的模型。有趣的未来工作包括将我们的模型推广到合成其他数据表示,如视频和 3D 网格。

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

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

相关文章

Hexo更换Matery主题

引言 在数字化时代,拥有一个个人博客已经成为许多人展示自己技能、分享知识和与世界互动的重要方式。而在众多博客平台中,Hexo因其简洁、高效和易于定制的特点而备受青睐。本文将详细介绍如何为你的Hexo博客更换主题,让你的个人博客在互联网…

【前端高频面试题--Vue基础篇】

🚀 作者 :“码上有前” 🚀 文章简介 :前端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬前端高频面试题--Vue基础篇 Vue基本原理双向绑定与MVVM模型Vue的优点计算属性与监听属性计算属性监…

MySQL篇之回表查询

一、聚集索引 将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据。特点:必须有,而且只有一个。 聚集索引选取规则: 1. 如果存在主键,主键索引就是聚集索引。 2. 如果不存在主键,将使用第一个唯一(UNIQUE&am…

【集合系列】TreeMap 集合

TreeMap 集合 1. 概述2. 方法3. 遍历方式4. 排序方式5. 代码示例16. 代码示例27. 代码示例38. 注意事项9. 源码分析 其他集合类 父类 Map 集合类的遍历方式 TreeSet 集合 具体信息请查看 API 帮助文档 1. 概述 TreeMap 是 Java 中的一个集合类,它实现了 SortedMap…

Aethir和Well-Link Tech携手革新云游戏,释放人工智能(AI)潜力

​Aethir将为Well-Link Tech的2亿用户提供先进的GPU计算能力,大幅提升他们的游戏体验。 新加坡,2024年2月7日 - 先驱性的去中心化GPU网络Aethir与实时云渲染技术领导者Well-Link Tech携手共创云游戏和元宇宙发展的新时代。 借助Well-Link Tech对领先游戏…

CTFSHOW命令执行web入门29-54

description: >- 这里就记录一下ctfshow的刷题记录是web入门的命令执行专题里面的题目,他是有分类,并且覆盖也很广泛,所以就通过刷这个来,不过里面有一些脚本的题目发现我自己根本不会笑死。 如果还不怎么知道写题的话,可以去看我的gitbook,当然csdn我也转载了我自己的…

kubernetes部署nacos2.3.0

一、nacos简介 nacos官网地址 简单易用 动态配置管理、服务发现和动态的一站式解决方案,20多种开箱即用的以服务为中心的架构特性,基本符合生产要求的轻量级易用控制台。 更适应云架构 无缝支持 Kubernetes 和 Spring Cloud,在主流公共云上…

每日一题——LeetCode1403.非递增顺序的最小子序列

方法一 个人方法: 按题目要求,尽可能先取出nums里最大的值,这样才能满足子序列尽可能短且元素之和最大 var minSubsequence function(nums) {nums.sort((a,b)>a-b)let sum1nums.reduce((a,b)>ab,0),sum20,res[]while(sum1>sum2){…

前端又又出新框架,这次没有打包了

最近,前端开发领域又迎来了一个新框架——ofa.js。它的独特之处在于,不依赖于现有的 nodes/npm/webpack 前端开发工作流程。与jQuery类似,只需引用一个脚本,您就能像使用React/Vue/Angular一样轻松地开发大型应用。 极易上手 如果…

LabVIEW伺服阀性能参数测试

LabVIEW伺服阀性能参数测试 伺服阀作为电液伺服系统中的核心元件,其性能参数的准确测试对保证系统整体性能至关重要。开发了一种基于LabVIEW软件开发的伺服阀性能参数测试系统,提高测试的自动化程度和精确性,同时降低操作复杂度和成本。 传…

java学习(多态)

一、多态 含义:方法或对象具有多种形态。是面向对象的第三大特征,多态是建立在封装和继承基础上的。 多态的具体体现: 1)方法的多态 (例如重写和重载) 2)对象的多态 多态注意事项&#xff1…

【小白开服日记】幻兽帕鲁服务器如何搭建?

玩转幻兽帕鲁服务器,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云服务器网aliyunfuwuqi.com分享2024年新版基于阿里云搭建幻兽帕鲁服…

2023最新飞机即时通讯系统源码,支持PC、Android、IOS和WEB四端

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买) 2023最新的飞机即时通讯系统源码已经经过测试,并在PC、Android、IOS和WEB四个平台上运行良好。 当初开始使用时,我们…

arkTS开发鸿蒙OS应用(登录页面实现,连接数据库)

前言 喜欢的朋友可在抖音、小红书、微信公众号、哔哩哔哩搜索“淼学派对”。知乎搜索“编程淼”。 前端架构 Toubu.ets import router from ohos.router Component export struct Header{build(){// 标题部分Row({space:5}){Image($r(app.media.fanhui)).width(20).onClic…

堆排序----C语言数据结构

目录 引言 堆排序的实现**堆的向下调整算法** 对排序的时间复杂度建堆的时间复杂度:排序过程的时间复杂度:总体时间复杂度: 引言 堆排序(Heap Sort)是一种基于比较的排序算法,利用堆的数据结构来实现。它的…

时间序列分类算法 极简设计之ROCKET、MiniRocket详解及python实战

前言 时间序列分类任务也是比较常见的任务,根据分类,来判断时间序列的性质,类别等。 其中rocket算法十分另类,看似用的非常简单且暴力的方式,却拿到了不错的效果,以及拥有非常快的推理和训练速度。 后续还有…

Java并发基础:ArrayBlockingQueue全面解析!

内容摘要 ArrayBlockingQueue类是一个高效、线程安全的队列实现,它基于数组,提供了快速的元素访问,并支持多线程间的同步操作,作为有界队列,它能有效防止内存溢出,并通过阻塞机制平衡生产者和消费者的速度…

[职场] 公安管理学就业方向及前景 #媒体#笔记#笔记

公安管理学就业方向及前景 公安管理学是中国普通高等学校本科专业。本专业文理兼收,学制4年,授予法学学士学位。本专业培养掌握马克思主义基本原理,政治坚定,坚持党和国家的路线、方针、政策,具有良好职业素养、科学素…

K210如何下载程序

一、打开资料包里提供的K-Flash程序烧录软件 二、选择串口 三、选择波特率 四、选择In-Chip,烧录到Flash芯片里面,重新上电还会运行程序 五、如果选择In - Memory,这次可以运行,但下次重新上电就不会保持这次的程序了。 六、选择固…

macOS Sonoma 14.3.1(23D60)发布

系统介绍 黑果魏叔2 月 9 日消息,苹果今日向 Mac 电脑用户推送了 macOS 14.3.1 更新(内部版本号:23D60),本次更新距离上次发布隔了 17 天。 魏叔 查询苹果官方更新日志,macOS Sonoma 14.3.1 修复内容和 …