论文介绍 One-step Diffusion 只需单步扩散生成!

论文介绍 One-step Diffusion with Distribution Matching Distillation

关注微信公众号: DeepGo

源码地址: https://tianweiy.github.io/dmd/

论文地址: https://arxiv.org/abs/2311.18828

这篇论文介绍了一种新的图像生成方法,名为分布匹配蒸馏(DMD),将扩散模型转换为一步生成器,极大地加快了图像生成速度,同时保持了图像质量。通过最小化近似的KL散度和简单的回归损失,DMD能够在保持图像质量的同时实现极速的生成效率,即在现代硬件上以20 FPS的速度生成图像。实验表明,DMD在ImageNet 64×64上的FID达到了2.62,在零样本COCO-30k上达到了11.49 FID,与稳定扩散模型相当,但速度快了几个数量级。此外,DMD还探讨了与分类器无关指导的结合使用,进一步提高了生成图像的质量。尽管DMD在一步生成模型的效率和质量方面取得了显著进步,但作者也指出了其局限性,包括与更细致的扩散采样路径相比,仍有质量差距,以及性能受限于教师模型的能力。作者期待通过蒸馏更先进的模型和引入变化的指导尺度,进一步提升模型性能和灵活性。

alt 图1展现了一下和目前SOTA方法的对比: 基线稳定扩散(Stable Diffusion, SD):生成每张图像需要约250毫秒。扩散匹配蒸馏(Diffusion Matching Distillation, DMD):生成每张图像仅需约90毫秒。强调了DMD技术生成图像的速度比SD快得多,同时还在图像生成速度和质量上的潜在优势。(猜一下哪个是该论文中的方法的效果?文末给答案)

问题和挑战

这篇论文致力于解决将扩散模型转化为快速单步图像生成器的问题,挑战在于如何在最小化生成图像质量损失的同时提高生成速度。一句话概括:论文提出了一种分布匹配蒸馏(DMD)方法,通过精确匹配单步生成器和扩散模型的分布,显著提升了生成效率,同时保持了图像的高质量。

alt 训练框架图:作者训练单步生成器 来将随机噪声 映射成真实图像。为了匹配多步扩散模型的采样输出,作者预先计算了一系列噪声-图像对,并偶尔从该集合中加载噪声,同时施加LPIPS回归损失,以确保作者的单步生成器与扩散输出之间的一致性。此外,作者还为假图像提供分布匹配梯度 ,以增强其真实感。作者向假图像注入随机量的噪声,并将其传递给两个扩散模型:一个在真实数据上预训练的模型,另一个持续在假图像上以扩散损失进行训练,以获取其去噪版本。去噪得分(在图中以平均预测表示)指示了使图像变得更真实或更假的方向。这两者之间的差异表示向着更高真实性和较低虚假感的方向,这一差异被反向传播到单步生成器中。

方法概述

分布匹配蒸馏(Distribution Matching Distillation,简称DMD)的目标是将给定的预训练扩散去噪器(基模型)转化为能够快速生成高质量图像的“一步”图像生成器,而不需要耗时的迭代采样过程。这一过程包括两个主要部分:预训练基模型与一步生成器的构建,以及分布匹配损失的定义。

预训练基模型和一步生成器
  • 预训练基模型 作者的蒸馏过程假设给定了一个预训练的扩散模型 。扩散模型被训练以逆转一个高斯扩散过程,该过程逐渐向来自真实数据分布 的样本添加噪声,将其转化为白噪声 ,经过 时间步骤,作者使用 。作者将扩散模型表示为 。从一个高斯样本 开始,模型迭代地去噪一个运行中的噪声估计 ,基于时间步 (或噪声水平)来产生目标数据分布的样本。扩散模型通常需要10到100步骤来产生逼真的图像。作者的推导使用扩散的均值预测形式来简化,但与 -预测同样有效,仅需变量变换。作者的实现使用来自EDM和Stable Diffusion的预训练模型。

  • 一步生成器 ( ) 的架构与基模型的扩散去噪器相同,但不包括时间条件。在训练前,一步生成器的参数 ( ) 以基模型为初始化,即

分布匹配损失(Distribution Matching Loss)

理想情况下,作者希望快速生成器能产生与真实图像无法区分的样本。受到ProlificDreamer[78]的启发,作者通过最小化真实图像分布 与假图像分布 之间的Kullback–Leibler (KL) 散度来实现这一目标,得Eq. (1):

直接计算这些概率密度来估计此损失通常是不可行的,但作者只需要对 的梯度来通过梯度下降法训练作者的生成器。

梯度更新使用近似分数

针对生成器参数的Eq. (1)的梯度,导出Eq. (2):

其中 分别是各自分布的分数。直观上, 移向 的模式,而 则将它们分散开。

通过对数据分布加入随机高斯噪声的不同标准差,作者创建了一系列“模糊”的分布,这些分布在整个空间上都是全支撑的,因此重叠,使得Eq. (2)中的梯度有定义。然后,Score-SDE 显示,训练好的扩散模型近似了扩散分布的分数函数。

作者的策略是使用一对扩散去噪器来模拟经过高斯扩散后的真实和假分布的分数。作者分别将这些定义为 。扩散样本 通过在扩散时间步 向生成器输出 添加噪声得到:

其中 来自扩散噪声时间表。

真实分数由基扩散模型的训练图像固定,因此作者使用预训练扩散模型的固定副本 来模拟它的分数。

假分数随着作者生成的样本分布在训练过程中的变化而动态调整。作者从预训练的扩散模型 初始化假扩散模型,并在训练过程中通过最小化标准去噪目标来更新参数

作者的最终近似分布匹配梯度通过用两个扩散模型在扰动样本 上定义的分数替换Eq. (2)中的精确分数,并对扩散时间步取期望得到, 就是对应的真实样本。

回归损失和最终目标

分布匹配目标在前一节已经介绍,它对于 ,即当生成样本被大量噪声损坏时,是很好定义的。然而,对于少量噪声, 通常变得不可靠,因为 趋于零。此外,由于得分 对概率密度函数 的缩放是不变的,优化容易受到模式坍塌/丢失的影响,其中假分布为一部分模式分配更高的总密度。为了避免这一点,作者使用额外的回归损失来确保所有模式都被保留。这个损失衡量了给定相同输入噪声时,生成器输出与基模型输出之间的点对点距离。通过构建随机高斯噪声图像 和基模型的确定性输出 的配对数据集,可以计算回归损失 ,其中 是距离函数,本文中使用了Learned Perceptual Image Patch Similarity (LPIPS)。

最终目标 ,其中 是一个超参数,控制回归损失的权重。通过自动微分计算 的梯度,分别应用于未配对的假样本(用于分布匹配梯度)和配对样本(用于回归损失)。

DMD通过这种方式训练一步生成器,不仅快速生成高质量的图像,而且有效地桥接了生成模型与预训练扩散模型之间的性能差距。

alt

该图展示了从相同的初始配置(左图)优化不同目标函数所导致的不同结果: (a) 只有真实得分: 当只优化真实得分时,生成的假样本都聚集在真实分布的最近模式上,出现了模式坍塌现象,即只能捕捉到数据的一部分特征。 (b) 真实得分+假得分: 当考虑了真实和假分布的得分,但没有回归损失时,生成的假数据覆盖了更多的真实分布,但仍然完全错过了第二个模式,即没有捕捉到分布的全部特征。 (c) 真实得分+假得分+回归损失: 当全面考虑真实得分、假得分以及回归损失时,完整的目标函数能够恢复目标分布的所有模式,生成的数据不仅多样且质量高。 这三个子图说明了不同优化策略对生成模型性能的影响,强调了在生成过程中同时考虑多个目标的重要性,以确保生成的数据既真实又多样。这一点在使用生成模型进行数据增强或者模拟真实世界分布时尤为重要。

总结

本文介绍了一种名为分布匹配蒸馏(DMD)的新技术,旨在加速扩散模型的图像生成过程,同时保持高质量的输出。DMD通过将扩散模型转化为一步生成模型,极大地提高了生成速度,达到了实时生成的目标。通过最小化真实与生成分布间的KL散度和引入回归损失,DMD能够在加速生成的同时,保证图像的多样性和质量。实验结果表明,DMD在多个标准数据集上达到了与原始扩散模型相媲美的性能,同时生成速度得到了显著提升。这一进展不仅为图像生成领域带来了新的技术突破,也为其他基于模型蒸馏的应用提供了可能的方向。尽管存在一些局限性,比如与更细致的扩散采样路径相比,质量上仍有差距,DMD的提出无疑为高效、高质量的图像生成研究开辟了新的路径。作者期待未来能通过蒸馏更先进的模型和引入变化的指导尺度来进一步提升模型性能和灵活性。

图1 答案: (DMD:bottom, top, bottom, bottom, top)

更多细节请参阅论文原文

关注微信公众号: DeepGo

本文由 mdnice 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java程序设计】【C00257】基于Springboot的校园二手书交易平台(有论文)

基于Springboot的校园二手书交易平台(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的乐校园二手书交易管理系统 本系统分为系统功能模块、管理员功能模块、卖家用户功能模块以及用户功能模块。 系统功能模块&…

Ubuntu Desktop - scrolling (Terminal 缓存更多终端历史输出内容)

Ubuntu Desktop - scrolling [Terminal 缓存更多终端历史输出内容] 1. ubuntu-14.04.5-desktop-amd64.iso2. ubuntu-16.04.3-desktop-amd64.isoReferences Terminal -> 右键 Profiles -> Profile Preferences 1. ubuntu-14.04.5-desktop-amd64.iso 2. ubuntu-16.04.3-de…

力扣刷题之旅:高级篇(六)—— 网络流算法:Edmonds-Karp 算法与实际应用

力扣(LeetCode)是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。 --点击进入刷题地址 引言 在算法的世界中,网络流算法是一种非常强大且实…

【Java程序设计】【C00266】基于Springboot的超市进存销管理系统(有论文)

【Java程序设计】【C00266】基于Springboot的超市进存销管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的超市进销存系统 本系统分为登录注册模块、管理员功能模块以及员工功能模块。 登录注册模块&#…

【Django】Django项目部署

项目部署 1 基本概念 项目部署是指在软件开发完毕后,将开发机器上运行的软件实际安装到服务器上进行长期运行。 在安装机器上安装和配置同版本的环境[python,数据库等] django项目迁移 scp /home/euansu/Code/Python/website euansuxx.xx.xx.xx:/home…

状态压缩DP--最短Hamilton路径问题的状态压缩动态规划解法

在图论中,Hamilton路径是一种经过图中每个顶点恰好一次的路径。本文将详细介绍如何使用状态压缩动态规划(Dynamic Programming, DP)方法求解最短Hamilton路径问题,即找到一条经过所有顶点恰好一次且总权重最小的路径。 题目链接:91. 最短Hamilton路径 - AcWing题库 问题…

2024-02-12 Unity 编辑器开发之编辑器拓展3 —— EditorGUI

文章目录 1 GUILayout2 EditorGUI 介绍3 文本、层级、标签、颜色拾取3.1 LabelField3.2 LayerField3.3 TagField3.4 ColorField3.5 代码示例 4 枚举选择、整数选择、按下按钮4.1 EnumPopup / EnumFlagsField4.2 IntPopup4.3 DropdownButton4.4 代码示例 5 对象关联、各类型输入…

LeetCode--代码详解 21.合并两个有序链表

21.合并两个有序链表 题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 [], …

力扣刷题之旅:高阶篇(四)—— 最小生成树算法

力扣(LeetCode)是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。 --点击进入刷题地址 引言: 在算法领域中,图论是一个重要且有趣…

Redis核心技术与实战【学习笔记】 - 28.Redis 6.0新特性(多线程、客户端缓存与安全)

简述 Redis 6.0 新增了几个关键新特性,分别是面向网络处理的多 IO 线程、客户端缓存、细粒度的权限控制,以及 RESP 3 协议的使用。 其中,面向网络处理的多 IO 线程可以提高网络请求处理的速度,而客户端缓存可以让应用直接在客户…

Linux第47步_安装支持linux的第三方库和mkimage工具

安装支持linux的第三方库和mkimage工具,做好移植前的准备工作。 编译linux内核之前,需要先在 ubuntu上安装“lzop库”和“libssl-dev库”,否则内核编译会失败。 mkimage工具会在zImage镜像文件的前面添加0x40个字节的头部信息,就可以得到uI…

Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号

Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号 code review! 文章目录 Linux笔记之expect和bash脚本监听输出并在匹配到指定字符串时发送中断信号1.expect2.bash 1.expect 在Expect脚本中,你可以使用expect来监听程序输出,…