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

news2024/11/13 15:06:39

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://www.coloradmin.cn/o/1441387.html

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

相关文章

Unity3d Shader篇(六)— BlinnPhong高光反射着色器

文章目录 前言一、BlinnPhong高光反射着色器是什么?1. BlinnPhong高光反射着色器的工作原理2. BlinnPhong高光反射着色器的优缺点优点缺点 3. 公式 二、使用步骤1. Shader 属性定义2. SubShader 设置3. 渲染 Pass4. 定义结构体和顶点着色器函数5. 片元着色器函数 三…

Nginx限流设置

1.反向代理(建议先看正向代理,反向代理则是同样你要与对方服务器建立连接,但是,代理服务器和目标服务器在一个LAN下,所以我们需要与代理服务器先建交,再由他获取与目标服务器的交互,好比一个带刀侍卫守护着目标服务器) 屏蔽目标服务器的真实地址,相对安全性较好&am…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之StepperItem组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之StepperItem组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、StepperItem组件 用作Stepper组件的页面子组件。 子组件 无。 接口 St…

Kafka 生产调优

Kafka生产调优 文章目录 Kafka生产调优一、Kafka 硬件配置选择场景说明服务器台数选择磁盘选择内存选择CPU选择 二、Kafka Broker调优Broker 核心参数配置服役新节点/退役旧节点增加副本因子调整分区副本存储 三、Kafka 生产者调优生产者如何提高吞吐量数据可靠性数据去重数据乱…

如何写一个其他人可以使用的GitHub Action

前言 在GitHub中,你肯定会使用GitHub Actions自动部署一个项目到GitHub Page上,在这个过程中总要使用workflows工作流,并在其中使用action,在这个使用的过程中,总会好奇怎么去写一个action呢,所以&#xff…

无人机图像识别技术研究及应用,无人机AI算法技术理论,无人机飞行控制识别算法详解

在现代科技领域中,无人机技术是一个备受瞩目的领域。随着人们对无人机应用的需求在不断增加,无人机技术也在不断发展和改进。在众多的无人机技术中,无人机图像识别技术是其中之一。 无人机图像识别技术是利用计算机视觉技术对无人机拍摄的图像…

Project 2010下载安装教程,保姆级教程,附安装包和工具

前言 Project是一款项目管理软件,不仅可以快速、准确地创建项目计划,而且可以帮助项目经理实现项目进度、成本的控制、分析和预测,使项目工期大大缩短,资源得到有效利用,提高经济效益。软件设计目的在于协助专案经理发…

6、5 门关于 AI 和 ChatGPT 的免费课程,带您从 0-100

5 门关于 AI 和 ChatGPT 的免费课程,带您从 0-100 想在 2024 年免费了解有关 AI 和 ChatGPT 的更多信息吗? 图片由 DALLE 3 提供 活着是多么美好的时光啊。还有什么比现在更适合了解生成式人工智能(尤其是 ChatGPT)等人工智能元素的呢!许多人对这个行业感兴趣,但有些…

一文读懂:MybatisPlus从入门到进阶

快速入门 简介 在项目开发中,Mybatis已经为我们简化了代码编写。 但是我们仍需要编写很多单表CURD语句,MybatisPlus可以进一步简化Mybatis。 MybatisPlus官方文档:https://www.baomidou.com/,感谢苞米豆和黑马程序员。 Mybat…

表单标记(html)

前言 发现input的type属性还是有挺多的,这里把一些常用的总结一下。 HTML 输入类型 (w3school.com.cn)https://www.w3school.com.cn/html/html_form_input_types.asp text-文本 文本输入,如果文字太长,超出的部分就不会显示。 定义供文本输入的单行…

C语言操作符超详细总结

文章目录 1. 操作符的分类2. 二进制和进制转换2.1 2进制转10进制2.1.1 10进制转2进制数字 2.2 2进制转8进制和16进制2.2.1 2进制转8进制2.2.2 2进制转16进制 3. 原码、反码、补码4.移位操作符4.1 左移操作符4.2 右移操作符 5. 位操作符:&、|、^、~6. 逗号表达式…

vue3 之 通用组件统一注册全局

components/index.js // 把components中的所组件都进行全局化注册 // 通过插件的方式 import ImageView from ./ImageView/index.vue import Sku from ./XtxSku/index.vue export const componentPlugin {install (app) {// app.component(组件名字,组件配置对象)…

图解 V8 执行 JS 的过程

本文来分享 V8 引擎执行 JavaScript 的过程 1. JS 代码执行过程 在说V8的执行JavaScript代码的机制之前,我们先来看看编译型和解释型语言的区别。 编译型语言和解释型语言 我们知道,机器是不能直接理解代码的。所以,在执行程序之前&#xf…

Java_栈_队列

文章目录 一、栈(Stack)1.概念2.栈的使用3.栈的模拟实现1、定义接口2、定义栈3、成员4、构造方法5、判断空间是否满 full6、入栈 push7、出栈 pop8、获取栈顶元素 peek9、获取栈中有效元素个数 size10、检测栈是否为空 empty完整代码 4.练习1、有效括号2…

GEE Colab——如何利用Matplotlib在colab中进行图形制作

在colab中绘制图表 笔记本的一个常见用途是使用图表进行数据可视化。Colaboratory 提供多种图表工具作为 Python 导入,让这一工作变得简单。 Matplotlib Matplotlib 是最常用的图表工具包,详情请查看其文档,并通过示例获得灵感。 线性图 线性图是一种常见的图表类型,用…

LabVIEW网络测控系统

LabVIEW网络测控系统 介绍了基于LabVIEW的网络测控系统的开发与应用,通过网络技术实现了远程的数据采集、监控和控制。系统采用LabVIEW软件与网络通信技术相结合,提高了系统的灵活性和扩展性,适用于各种工业和科研领域的远程测控需求。 随着…

哈希表(Hash Table)-----运用实例【通过哈希表来管理雇员信息】(java详解) (✧∇✧)

目录 一.哈希表简介: 实例介绍: 类的创建与说明: 各功能图示: 1.class HashTab{ }; 2. class EmpLinkedList{ }; 3. class Emp{ }; 4.测试: 运行结果: 最后,完整…

springboot微信小程序uniapp学习计划与日程管理系统

基于springboot学习计划与日程管理系统,确定学习计划小程序的目标,明确用户需求,学习计划小程序的主要功能是帮助用户制定学习计划,并跟踪学习进度。页面设计主要包括主页、计划学习页、个人中心页等,然后用户可以利用…

Java汽车销售管理

技术架构: springboot mybatis Mysql5.7 vue2 npm node 有需要该项目的小伙伴可以私信我你的Q。 功能描述: 针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、财务报表等功能,提供经理和销售两种角色进行管理 效果图&…

CTF--Web安全--SQL注入之‘绕过方法’

一、什么是绕过注入 众所周知,SQL注入是利用源码中的漏洞进行注入的,但是有攻击手段,就会有防御手段。很多题目和网站会在源码中设置反SQL注入的机制。SQL注入中常用的命令,符号,甚至空格,会在反SQL机制中…