简单、快速、低成本、强大!高分辨率图像生成扩散外推方法CutDiffusion发布! 精华
文章:https://arxiv.org/pdf/2404.15141
代码:https://github.com/lmbxmu/CutDiffusion
将大预训练的低分辨率扩散模型转换以满足更高分辨率需求,即扩散外推,显著提高了扩散适应性。本文提出了无调优的CutDiffusion,旨在简化和加速扩散外推过程,使其更具成本效益并提高性能。CutDiffusion遵循现有的基于patch的外推方法,但将标准的patch扩散过程分为一个初步阶段,专注于全面的结构去噪,以及一个后续阶段,专注于特定细节的改进。
全面的实验突显了CutDiffusion的众多优点:
- 简单的方法构建,使得在不需要第三方参与的情况下实现了简洁的高分辨率扩散过程;
- 通过单步高分辨率扩散过程实现了快速推理速度,并且需要更少的推理patch;
- 通过patch推理和在全面结构去噪过程中需要更少的patch,从而降低了GPU成本;
- 强大的生成性能,源自于对特定细节改进的重视。
介绍
作为扩散架构模型的一员,也被称为潜在扩散模型,Stable Diffusion主要用于根据文本描述生成详细的图像,被认为是生成式人工智能持续蓬勃发展的关键组成部分。与其逼真的图像生成相结合,Stable Diffusion是开源的,并支持在大多数配备了适度的4GB VRAM GPU的消费级硬件上运行。因此,它标志着与仅通过云服务访问的许多专有文本到图像模型(如DALL-E系列和Midjourney)的不同之处。
其中一个主要的现实世界应用是生成高分辨率图像。最初版本的Stable Diffusion是在512×512分辨率的数据集上进行训练的,导致在用户指定的分辨率偏离其“期望”时出现质量问题。虽然随后的2.0版本增强了生成768×768分辨率图像的能力,而Stable DiffusionXL(SDXL)则发布了原生1024×1024分辨率,但由于其重复的、顺序性质,Stable Diffusion模型的重新训练速度较慢,并且由于潜在像素空间中的操作,对于高分辨率图像而言,内存消耗巨大。
据报道,初始版本的训练使用了256个Nvidia A100 GPU在亚马逊网络服务上共计150,000 GPU小时,估计成本为60万美元。在更高分辨率下,费用会大幅增加,这几乎是不可接受的,即使对于大多数小型和中型企业而言,逐一为特定分辨率大小训练大型扩散模型也是如此,尤其是考虑到超高分辨率,如4096×4096或8192×8192。
为了解决训练初始模型的障碍,扩散外推,依赖于预训练的低分辨率模型,并实现更高分辨率图像扩散,引起了极大的兴趣。最近的研究人员选择进行微调参与,甚至是无调优实现,以实现更具用户特定的生成输出。
在下表1中,考虑了无调优、快速推理速度、廉价GPU成本、相等参数、性能和方法简单性等因素,评估了这些方法的主要优缺点。根据微调参与的思路,大多数方法努力进行参数高效优化,以实现对“意外”分辨率生成的快速适应。例如,DiffFit对特定层中的偏差项和新增的缩放因子进行微调,Self-Cascade升级了时间感知特征上采样模块,以注入来自新获得的更高分辨率数据的侧面信息。
这些调优方法在准确描绘局部结构细节方面表现出色。它们一步到位地扩展到目标分辨率的能力有助于实现快速推理速度。然而,直接在更高分辨率进行推理会导致可持续的顶峰GPU内存开销增加,因为像素更多,并且参数调优增加了复杂性,有时还会增加额外的参数。
在无调优实现中,所有方法都保持与原始模型相同的参数数量。一种直接的方法是直接进行更高分辨率的推理,这提供了快速的速度,但需要高的GPU消耗,类似于微调方法。[6]中使用SDXL(记为SDXL-DI)的结果显示了较差的对象重复、扭曲的对象和不合理的结构等问题。Attn-SF通过将注意熵与token数量平衡来简化其方法,然而仍然承受着对象重复质量差的问题。ScaleCrafter确定了卷积核的有限感受野,并强调了扩张步幅、注入步骤等复杂调整。而更大的核影响了推理速度。另一种无调优实现以patch方式进行扩散外推,从而降低了推理GPU的成本。
例如,MultiDiffusion将整个高分辨率噪声分割成多个重叠的patch,并通过多个扩散生成过程将它们绑定在一起。尽管其简单性有利,但缺乏全局信息导致了重复和扭曲的生成问题。最近的DemoFusion构建了残差连接和扩张采样,以整合全局语义信息。尽管其性能更好,但这些操作使得DemoFusion变得复杂。此外,DemoFusion采用了渐进式放大的方式,例如,4096×4096图像的生成是在1024×1024、2048×2048和3072×3072的中间扩散基础上构建的,这导致了更多的扩散步骤和更慢的推理延迟。
本文致力于通过patch式生成方法探索无调优扩散外推的潜力。主要目标是简化和加速扩散外推过程,最终使其更具成本效益并增强其整体性能。考虑到这一目标,在本文中提出了CutDiffusion,这是一个全能的方法,它将传统的patch扩散过程分为两个独立的阶段,每个阶段都采用不同的子patch划分方法。
在初步阶段,从独立的高斯分布中任意采样非重叠的patch,并以空间像素交互的方式恢复它们,以确保每个patch都集中于去噪整个结构。本质上,每个单独的patch都努力遵守相同的文本指令,并产生类似的内容。在随后的阶段中,重新组装第一阶段子patch的相同空间像素,创建一个更精细的高分辨率高斯噪声。然后,遵循MultiDiffusion的方法来开发重叠的patch,其中每个单独的patch都设计为专注于改进和增强整个图像的部分细节。正如表1中所列,除了无调优完成和不引入参数之外,所提出的CutDiffusion在以下方面还提供了实质性的优势:
- 简单的方法构建。CutDiffusion建立在标准的扩散过程之上,只改变了子patch采样,从而消除了复杂的第三方参与,创建了更简洁的高分辨率过程。
- 快速推理速度。CutDiffusion执行单步放大到目标分辨率,这是渐进式放大的有效替代方案,并且在去噪全面结构过程中需要更少的推理patch。
- 廉价的GPU成本。CutDiffusion采用patch式方法进行外推,并减少了用于结构去噪的非重叠patch的数量,有效地减轻了对顶峰GPU内存的需求。
- 强大的生成性能。尽管其采用了单步放大的方法和没有第三方参与,但CutDiffusion优雅地执行了部分细节的改进,因此实现了更出色的生成性能。
相关工作
扩散模型
扩散模型,通常被称为概率扩散模型,属于潜在变量生成模型。一个经典的扩散模型由正向过程、逆向过程和采样方法组成。正向过程从给定的起始点开始,并持续向系统中引入噪声。逆向过程通常涉及教授神经网络从模糊图像中去除高斯噪声。该模型旨在对抗图像中的噪声添加过程,并通过对随机噪声图像进行细化和去噪来进行图像生成。采样机制通过导航参数并减小样本的方差,从而产生更准确的期望分布近似。DDIM允许利用在 DDPM 损失 上训练的任何模型进行采样,并略过一些步骤,以换取可修改的质量量。LDM首先压缩图像,然后应用扩散模型来表示编码图像的分布,最后将其解码为图像。其卓越的性能使其广泛应用于生成文本驱动的图像。
扩散外推
微调参与。对于预训练的扩散模型进行微调以适应生成更高分辨率图像是一个合理的想法。由于这些模型的训练成本相当高,寻找参数高效优化方法已成为微调领域的研究人员和从业者的重点关注。在他们的研究中,xie等人采用了一种创新的方法,即冻结潜在扩散模型中的大部分参数。他们专注于训练特定参数,如偏差项、归一化和类条件模块。此外,他们还将可学习的缩放因子纳入模型中,以进一步增强其性能和适应性。guo等人开发了一个创新的级联框架,该框架在其初始尺度上包含低分辨率模型,并在较高尺度上增加了额外的新模块。
无调优实现。另一条研究线路是寻找无调优的扩散外推方法。在 Attn-SF中,较低分辨率的图像显示了不完整的对象,而较高分辨率的图像则存在重复混乱。因此,添加了一个缩放因子来解决注意力熵的变化并修复缺陷。He等人发现,扩散模型中的对象重复和结构问题的根本原因是有限的卷积核感知。他们建议动态感知场调整,并提出了分散卷积和噪声抑制引导等方法,用于超高分辨率的生成。MultiDiffusion展示了将几个重叠的去噪路径组合起来创建全景图像的能力。DemoFusion的研究通过使用中间的噪声反转表示作为跳过残差,创新地增强了全局信息的注入。此外,在去噪路径中使用扩张采样也进一步促进了改进。
方法
背景
这些方法中大多数需要复杂的第三方参与,如微调,低分辨率图像生成,渐进式放大等等。通过采用基于patch的策略来发展我们的方法,这个策略专门设计用于简化和有效管理涉及到这些复杂过程的操作,确保更高效和用户友好的方法。
动机和框架
动机。在下图1中,LDM通过迭代步骤逐渐去噪图1(b)中的随机噪声,直到达到预定的计数(t = 50 → 1)。生成的图1(a)捕捉了提示P的概念。通过检查从图1(b)到图1(k),最终到图1(a)的进展,可以推理扩散过程涉及到一个初步阶段去噪整个结构,然后是一个后续阶段去噪部分细节。
在早期的时间步骤中,各种轮廓逐渐变得更加可识别。在步骤 t = 40 时,类似狗的轮廓变得清晰。当我们移动到步骤 t = 35 时,树木的轮廓开始形成。进一步到步骤 t = 30 时,椅子的轮廓开始显现,使其更加清晰,最后到达步骤 t = 25 时,海滩、天空和海洋的轮廓变得更清晰,从而使场景的整体结构更好地展现出来。在后续的时间步骤中,从 t = 20 到 t = 5,对生成的轮廓轮廓进行局部细节的改进,以增强对象的逼真性。
例如,沙子似乎在椅子腿周围坍塌,天空和云彩无缝融合在一起,狗的毛发变成了更自然、柔软的状态,以及许多其他改进。因此,我们认识到了一种新的视角,即扩散外推可以通过遵循渐进图像生成的规律来发展。这包括最初优先考虑全面的结构去噪,然后是对特定细节的精炼,以生成更连贯的高分辨率扩散图像。
全面的结构去噪
像素交互。 虽然方程(2)从相同的文本描述P生成隐变量,但它仅确保与相同主题相关的图像,并不包含相似的内容。因此,在不同patch之间引入空间像素交互。如图2顶部所示,在去噪之前,随机交换具有相同空间坐标(x,y)的不同patch中的像素。
randperm()函数返回其输入序列的随机排列,使得像素可以为其他图像的去噪做出贡献,并促进跨patch的内容生成相似性。
具体细节的优化
像素重新定位。
实验
实验设置
使用预训练的SDXL进行实验,其中T = 50默认,以展示CutDiffusion的简单性、效率、廉价和性能。在单个3090 GPU上评估推理时间和GPU内存消耗。鉴于CutDiffusion的无需调整特性,我们将其与SDXL-DI、Attn-SF、ScaleCrafter、MultiDiffusion和DemoFusion进行比较。
采用三种指标进行定量评估:FID(Frechet Inception Distance)、IS(Inception Score)和CLIP Score。FIDr和ISr将高分辨率生成的图像与真实图像进行比较,但需要调整大小为2992。根据[3, 6],我们裁剪并调整大小为1×分辨率的10个局部patch来计算FIDc和ISc。CLIP分数评估图像嵌入和文本提示之间的余弦相似度。我们使用10,000张Laion-5B [20]图像作为真实图像,以及1,000个文本提示供CutDiffusion生成高分辨率图像。
方法比较
在本小节中,展示了我们的CutDiffusion方法相对于方法简单性、推理时间、GPU成本和生成性能的全能能力。
方法简单性。
值得注意的是,我们的CutDiffusion在T′ = T时使MultiDiffusion [1]成为一个特例,在这种情况下,没有进行全面的结构去噪。只是修改了子patch方法为随机高斯抽样,并加入了额外的像素交互和重新定位操作。因此,CutDiffusion保留了MultiDiffusion的简单性,同时减少了初始阶段所需的patch数量。与更复杂的第三方参与方,如微调、低分辨率图像生成和渐进式放大相比,CutDiffusion方法为生成高分辨率图像提供了更简洁和直接的流程。
推理时间。
表2中的结果与表1中的结论一致,即直接的高分辨率推理方法通常提供更快的速度。这种趋势的一个例外是ScaleCrafter,其使用更大的卷积核影响推理速度,特别是在超高分辨率设置中。尽管采用了基于patch的推理方法,提出的CutDiffusion方法实现了快速的推理速度。这些速度不仅与直接推理方法相媲美,而且比基于patch的对手[1, 6]的速度要快得多。例如,CutDiffusion比DemoFusion [6]快三倍。CutDiffusion的速度优势源于在全面去噪过程中需要更少的推理patch,而不像MultiDiffusion需要许多子patch。DemoFusion的推理时间延长是由于其渐进式放大策略需要更多的扩散步骤。
GPU成本
表3显示了图像外推方法的最小GPU内存需求。直接方法具有更快的推理速度,但GPU需求更高,特别是在增加分辨率时[8,11,13]。像CutDiffusion这样的基于patch的方法始终具有更低的峰值内存使用量,使其更易于使用[1,6]。此外,CutDiffusion在全面结构去噪的patch数量减少了GPU运行时间的长短[1,6]。
生成性能
我们进一步提供了定性比较的可视化结果以及定量比较的指标性能,展示了我们提出的CutDiffusion方法的强大生成能力。
定性比较。在不同的宽高比(1:1,1:2和2:1)和外推比率(2×、4×和9×)下进行了定性比较。在图3中,SDXL-DI显示出严重的重复和结构失真。尽管调整了注意力缩放因子,Attn-SF仍然面临相同的问题。虽然ScaleCrafter生成了不重复的图像,但人手和熊猫脚等局部细节缺乏准确性。MultiDiffusion由于全局结构信息不足而导致重复和不一致的内容。DemoFusion偶尔会产生重复的小对象,例如树干下面的小熊猫。由于协同的两阶段生成过程,CutDiffusion产生了高质量、更高分辨率的图像。
定量比较。下表4表明,CutDiffusion优于其他图像外推方法,在1024 ×2048和2048 ×1024的分辨率下取得了最佳的FIDr分数。尽管CutDiffusion的FIDc和CLIP分数略低于MultiDiffusion,但值得注意的是,FIDc指示了细节生成能力。MultiDiffusion在整个过程中生成局部细节,而CutDiffusion仅在第二阶段进行,结果略逊一筹。
然而,在下图3中,MultiDiffusion展示了显著的对象重复,尽管其CLIP和FIDc更高。鉴于定量和定性结果,CutDiffusion超越了MultiDiffusion。在分辨率为2048 ×2048和3072 ×3072时,CutDiffusion似乎达到了次佳效果。从图4中可以看出,DemoFusion的跳跃连接生成了一个3072 ×3072的图像,其内容与预训练的1024 ×1024图像相同。这意味着DemoFusion的性能优势是由于低分辨率而不是其固有能力。为了确认这一点,将图像插值从1024 ×1024插值到3096 ×3096分辨率,得到了最佳的FIDr(58.50)和ISr(17.38)。
因此得出结论,模仿低分辨率分布会导致来自预训练的SDXL模型的更高FID分数。然而,如图3和下图4所示,这种方法会导致重复问题,甚至在插值时缺乏高分辨率的细节。排除与DemoFusion的不公平比较,我们的CutDiffusion达到了最佳效果。
消融研究
像素交互的消融。正如前面所述,像素交互确保图像不仅与相同主题相关,而且具有相似的内容。图6(a)证实了这一说法。像素交互确保子patch描绘出相似的猫,最终产生了高质量、高分辨率的图像。相反,缺乏像素交互导致子patch呈现出不同的猫,从而损害了高分辨率图像的生成。
限制和未来工作
CutDiffusion方法存在一些限制:
- 与其他方法类似,CutDiffusion生成的高分辨率图像的质量在某种程度上取决于预训练的扩散模型。
- CutDiffusion的第二阶段仍然需要与现有方法一样多的patch,阻碍了进一步的加速。未来的工作可能会研究以非重叠patch的方式进行更高分辨率的生成,从而进一步提高推理速度。
结论
本文提出了一个强大的扩散外推方法CutDiffusion,它简化了流程,加速了过程,同时增强了性能和可负担性。CutDiffusion将标准的patch扩散过程分为初始的全面结构去噪和后续的特定细节细化。它只修改了子patch采样方法,在各自的阶段集成了像素交互和重定位。与在特定领域表现突出的现有方法不同,CutDiffusion在简单方法构建、快速推理速度、低廉的GPU成本和强大的生成性能方面都有着突出的表现。
本文转自 AI生成未来 ,作者:Mingbao Lin等