论文介绍 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.mzph.cn/news/680163.shtml

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

相关文章

一、Docker/安装包部署ClickHouse

Docker/安装包部署ClickHouse 一、docker部署1.安装Docker2.拉取ClickHouse镜像2.1 选择拉取版本2.2 拉取镜像 3.启动ClickHouse3.1 确定好挂载目录3.2 测试环境3.3 生产环境3.1.1 获取配置文件3.1.2 配置文件中添加用户3.1.3 启动容器 4.使用DBeaver连接 二、安装包安装1.准备…

Seurat - 聚类教程 (1)

设置 Seurat 对象 在本教程[1]中,我们将分析 10X Genomics 免费提供的外周血单核细胞 (PBMC) 数据集。在 Illumina NextSeq 500 上对 2,700 个单细胞进行了测序。可以在此处[2]找到原始数据。 我们首先读取数据。 Read10X() 函数从 10X 读取 cellranger 管道的输出&…

Java实现陕西非物质文化遗产网站 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 设计目标2.2 研究内容2.3 研究方法与过程2.3.1 系统设计2.3.2 查阅文献2.3.3 网站分析2.3.4 网站设计2.3.5 网站实现2.3.6 系统测试与效果分析 三、系统展示四、核心代码4.1 查询民间文学4.2 查询传统音乐4.3 增改传统舞…

宿舍报修|宿舍报修小程序|基于微信小程序的宿舍报修系统的设计与实现(源码+数据库+文档)

宿舍报修小程序目录 目录 基于微信小程序的宿舍报修系统的设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户小程序功能模块 2、学生信息管理 3、维修人员管理 4、故障上报管理 5、论坛信息管理 四、数据库设计 1、实体ER图 2、具体的表设计如下所示&…

C++STL速查手册

本文参考cppreference,整理了一些常用的STL容器及其内置函数与算法,方便查用。 CSTL速查手册 什么是STL?STL模板 什么是STL? 在C中,STL 是指标准模板库(Standard Template Library)。STL 是 C 标…

【51单片机】LED点阵屏(江科大)

9.1LED点阵屏 1.LED点阵屏介绍 LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。 2.LED点阵屏工作原理 LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素以“8”字型排列而已。原理图如下 每一行的阳极连在一起,每一列…

一周学会Django5 Python Web开发-Django5操作命令

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计11条视频,包括:2024版 Django5 Python we…

2024.2.12日总结

今天去拜年去了,白天基本上都在外面,明天也是要去拜年,这几天学习的时间挺少的,但是还是要抓紧这些时间快点写项目,要找一些好用的插件,把项目和仓库新建好,然后下一步按照原型图的样子把页面画…

基础IO[一]

文件文件内容属性 文件在硬盘上放着,我们的流程->写代码->编译->运行->访问文件。那么本质上是谁在访问? 是进程在访问。进程访问文件是需要通过接口来访问。 文件在磁盘上放着,要向硬件写入文件,谁有权限呢?必须…

java之Maven

1. maven Maven是管理和构建java项目的工具 项目依赖资源(jar包)的管理,避免版本冲突统一项目结构项目构建,标准跨平台(Linux,window,MacOS)的自动化项目管理 2.maven依赖仓库 2.maven安装 maven安装视频教程 3. IDEA集成Maven 4. maven的依赖范围 5. maven生命…

从基建发力,CESS 如何推动 RWA 发展?

2023 年 11 月 30 日,Web3 基金会(Web3 Foundation)宣布通过 Centrifuge 将部分资金投资于 RWA(Real World Assets,真实世界资产),试点投资为 100 万美元。Web3 基金会旨在通过支持专注于隐私、…

代码随想录刷题笔记 DAY 24 | 回溯算法理论基础 | 组合问题 No. 77

文章目录 Day 2401. 回溯算法理论基础1.1 什么是回溯法?1.2 为什么要使用回溯法?1.3 如何理解回溯法? 02. 组合问题(No. 77)2.1 题目2.2 笔记2.3 代码 Day 24 01. 回溯算法理论基础 1.1 什么是回溯法? &…

网络安全检查表

《网络攻击检查表》 1.应用安全漏洞 2.弱口令,默认口令 3.服务器互联网暴露 4.操作系统,中间件安全漏洞 5.研发服务器,邮件服务器等安全检查

python+django高校活动报名场地管理系统l1ro4

校园活动管理平台程序的开发,在数据库的选择上面,选择功能强大的MySQL数据库进行数据的存放操作。 技术栈 后端:python 前端:vue.jselementui 框架:django Python版本:python3.7 数据库:mysql5…

交叉熵损失函数(Cross-Entropy Loss)的基本概念与程序代码

交叉熵损失函数(Cross-Entropy Loss)是机器学习和深度学习中常用的损失函数之一,用于分类问题。其基本概念如下: 1. 基本解释: 交叉熵损失函数衡量了模型预测的概率分布与真实概率分布之间的差异。在分类问题中&…

apk反编译修改教程系列---简单修改apk默认横竖屏显示 手机端与电脑端同步演示【十一】

往期教程: apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】 apk反编译修改教程系列-----任意修改apk版本号 版本名 防止自动更新【二】 apk反编译修改教程系列-----修改apk中的图片 任意更换apk桌面图片【三】 apk反编译修改教程系列---简单…

Impala-架构与设计

架构与设计 一、背景和起源二、框架概述1.设计特点2.框架优点3.框架限制 三、架构图1.Impala Daemon2.Statestore3.Catalog 四、Impala查询流程1.发起查询2.生成执行计划3.分配任务4.交换中间数据5.汇集结果6.返回结果 总结参考链接 一、背景和起源 现有的大数据查询分析工具H…

Microsoft Word 超链接

Microsoft Word 超链接 1. 取消超链接2. 自动超链接2.1. 选项2.2. 校对 -> 自动更正选项2.3. Internet 及网络路径替换为超链接 References 1. 取消超链接 Ctrl A -> Ctrl Shift F9 2. 自动超链接 2.1. 选项 2.2. 校对 -> 自动更正选项 ​​​ 2.3. Internet…

AES加密后的密码可以破解吗

AES(高级加密标准)是一种广泛使用的对称加密算法,设计用来抵御各种已知的攻击方法。AES使用固定块大小的加密块和密钥长度,通常是128、192或256位。它被认为是非常安全的,到目前为止,没有已知的可行方法能够…

【详解】斗地主随机发牌项目

目录 前言: 1.初始化牌 2.洗牌 3.揭牌 总代码: Card类: CardGame类: Main类: 结语: 前言: 斗地主是全国范围内的一种桌面游戏,本节我们来实现一下斗地主中的简单初始化牌、…