加速扩散模型,最快1步生成SOTA级图片,字节Hyper-SD开源了
最近,扩散模型(Diffusion Model)在图像生成领域取得了显着的进展,为图像生成和视频生成任务带来了前所未有的发展机遇。尽管取得了令人印象深刻的结果,扩散模型在推理过程中天然存在的多步数迭代去噪特性导致了较高的计算成本。近期出现了一系列扩散模型蒸馏算法来加速扩散模型的推理过程。这些方法大致可以分为两类:i)轨迹保持蒸馏;ii)轨迹重构蒸馏。然而,这两类方法会分别受到效果天花板有限或者输出域变化这两个问题的限制。
为了解决这些问题,字节跳动技术团队提出了一种名为 Hyper-SD 的轨迹分段一致性模型。 Hyper-SD 的开源也得到了Huggingface首席执行官Clem Delangue的认可。
该模型是一种新颖的扩散模型蒸馏框架,结合了轨迹保持蒸馏和轨迹重构蒸馏两种策略的优点,在压缩去噪步数的同时保持接近无损的性能。与现有的扩散模型加速算法相比,该方法取得了卓越的加速效果。经过大量实验和用户评测的验证,Hyper-SD 在 SDXL 和 SD1.5 两种架构上都能在 1 到 8 步生成中实现 SOTA 级别的图像生成性能。
项目主页:https://hyper-sd.github.io/
论文链接:https://arxiv.org/abs/2404.13686
Huggingface 链接:https://huggingface.co/ByteDance/Hyper-SD
单步生成Demo 链接:https://huggingface.co/spaces/ByteDance/Hyper-SDXL-1Step-T2I
实时画板Demo 链接:https://huggingface. co/spaces/ByteDance/Hyper-SD15-Scribble
现有用于扩散模型加速的蒸馏方法大致可以分为两大类:轨迹保持蒸馏和轨迹重构蒸馏。轨迹保持蒸馏技术旨在维持扩散对应的常微分方程(ODE)的原始轨迹。其原理是通过迫使蒸馏模型和原始模型产生相似的输出来减少推理步骤。然而需要注意的是,尽管能够实现加速,由于模型容量有限以及训练拟合过程中不可避免的误差,这类方法可能导致生成质量下降。相比之下,轨迹重构方法则直接利用轨迹上的端点或真实图像作为监督的主要来源,忽略了轨迹的中间步骤,能够通过重建更有效的轨迹来减少推理步骤的数量,并在有限的步骤内探索模型的潜力,将其从原始轨迹的约束中解放出来。然而,这通常会导致加速模型与原始模型的输出域不一致,从而得到不理想的结果。
本论文提出了一种结合轨迹保持和重构策略优点的轨迹分段一致性模型(简称 Hyper-SD)。具体而言,该算法首先引入轨迹分段一致性蒸馏,在每个段内强制保持一致性,并逐渐减少段的数量以实现全时一致性。这一策略解决了由于模型拟合能力不足和推理误差累积导致的一致性模型性能次优的问题。随后,该算法利用人类反馈学习(RLHF)来提升模型的生成效果,以弥补加速过程中模型生成效果的损失,使其更好地适应低步数推理。最后,该算法使用分数蒸馏来增强一步生成性能,并通过统一的 LORA 实现理想化的全时间步数一致扩散模型,在生成效果上取得了卓越的成果。
方法
1. 轨迹分段一致性蒸馏
一致性蒸馏(CD)[24] 和一致性轨迹模型(CTM)[4] 都旨在通过一次性蒸馏将扩散模型转换为整个时间步范围 [0,T] 的一致性模型。然而,由于模型拟合能力的限制,这些蒸馏模型往往达不到最优性。受到 CTM 中引入的软一致性目标的启发,我们通过将整个时间步范围 [0, T] 划分为 k 段并逐步执行分段一致模型蒸馏来细化训练过程。
在第一阶段,我们设置 k=8 并使用原始扩散模型来初始化 和
。起始时间步
是从
中均匀随机采样的。然后,我们对结束时间步
进行采样,其中
计算如下:
训练损失计算如下:
其中通过公式 3 进行计算,
表示学生模型的指数滑动平均(EMA)。
随后,我们恢复上一阶段的模型权重并继续训练,逐渐将 k 减少到 [4,2,1]。值得注意的是,k=1 对应于标准 CTM 训练方案。对于距离度量 d,我们采用了对抗性损失和均方误差 (MSE) 损失的混合。在实验中,我们观察到,当预测值和目标值接近时(例如,对于 k=8, 4),MSE 损失更为有效,而对抗性损失则随着预测和目标值之间的差异增加而变得更加精确(例如,对于 k=2, 1)。因此,我们在整个训练阶段动态增加对抗性损失的权重并减少 MSE 损失的权重。此外,我们还集成了噪声扰动机制来增强训练稳定性。以两阶段轨迹分段一致性蒸馏(TSCD)过程为例。如下图所示,我们第一阶段在
和
时间段内执行独立一致性蒸馏 ,然后基于之前的两段一致性蒸馏结果,进行全局一致性轨迹蒸馏。
完整的算法流程如下:

2. 人类反馈学习
除了蒸馏之外,我们进一步结合反馈学习以提高加速扩散模型的性能。具体来说我们通过利用人类审美偏好和现有视觉感知模型的反馈来提高加速模型的生成质量。对于审美反馈,我们利用 LAION 审美预测器和 ImageReward 中提供的审美偏好奖励模型来引导模型生成更具美感的图像,如下所示:
其中是审美奖励模型,包括 LAION 数据集和 ImageReward 模型的审美预测器,c 是文本提示,
与ReLU函数一起作为铰链损失 。除了来自审美偏好的反馈之外,我们注意到嵌入有关图像的丰富先验知识的现有视觉感知模型也可以作为良好的反馈提供者。根据经验,我们发现实例分割模型可以指导模型生成结构合理的物体。具体来说,我们首先将潜在空间中图像
上的噪声扩散到
,之后,类似于 ImageReward,我们执行迭代去噪,直到 特定时间步
并直接预测
。随后,我们利用感知实例分割模型通过检查真实图像实例分割标注与去噪图像的实例分割预测结果之间的差异来评估结构生成的性能,如下所示:
其中是实例分割模型(例如 SOLO)。实例分割模型可以更准确地捕获生成图像的结构缺陷并提供更有针对性的反馈信号。值得注意的是,除了实例分割模型之外,其他感知模型也适用。这些感知模型可以作为主观审美的补充反馈,更多地关注客观生成质量。因此,我们用反馈信号优化扩散模型可以定义为:
3. 一步生成强化
由于一致性损失的固有限制,一致性模型框架内的一步生成并不理想。正如 CM 中分析的那样,一致性蒸馏模型在引导位置处的轨迹端点
方面表现出卓越的准确性。因此,分数蒸馏是一种合适且有效的方法来进一步提升我们的 TSCD 模型的一步生成效果。具体来说,我们通过优化的分布匹配蒸馏(DMD)技术来推进一步生成。DMD 通过利用两个不同的评分函数来增强模型的输出:来自教师模型分布
和来自假模型的
。我们将均方误差 (MSE) 损失与基于分数的蒸馏结合起来,以提高训练稳定性。在这个过程中,前面提到的人类反馈学习技术也被集成进来,用来微调我们的模型以有效地生成具有保真度的图像。
通过集成这些策略,我们的方法不仅能够实现在SD1.5 和SDXL 上都实现卓越的低步数推理效果(并且无需Classifier-Guidance),同时能够实现理想的全局一致性模型,无需针对每个特定的步数训练UNet 或者LoRA 实现统一的低步数推理模型。
实验
在SD1.5 和SDXL 上和目前现有的各种加速算法的定量比较,可以看到Hyper-SD 显着优于当前最先进的方法
此外,Hyper-SD 能够用一个模型来实现各种不同低步数的推理,上面的定量指标也显示了我们方法在使用统一模型推理时的效果。
在SD1.5 和SDXL 上的加速效果可视化直观地展示了Hyper-SD 在扩散模型推理加速上的优越性。
大量的 User-Study 也表明 Hyper-SD 相较于现有的各种加速算法的优越性。
Hyper-SD 训练得到的加速 LoRA 能够很好地兼容不同的风格的文生图底模。
同时,Hyper-SD 的 LoRA 也能适配现有的 ControlNet,实现低步数下高质量的可控图像生成。
总结
论文提出了Hyper-SD,一个统一的扩散模型加速框架,可以显着提升扩散模型的在低步数情况下的生成能力,实现基于SDXL 和SD15 的新SOTA 性能。该方法通过采用轨迹分段一致性蒸馏,增强了蒸馏过程中的轨迹保存能力,实现接近原始模型的生成效果。然后,通过进一步利用人类反馈学习和变分分数蒸馏提升模型在极端低步数下的潜力,从而产生了更优化、更高效的模型生成效果。论文还开源了用于 SDXL 和 SD15 从 1 到 8 步推理的 Lora 插件,以及专用的一步 SDXL 模型,旨在进一步推动生成式 AI 社区的发展。
以上是加速扩散模型,最快1步生成SOTA级图片,字节Hyper-SD开源了的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

为了安全连接远程 Git 服务器,需要生成包含公钥和私钥的 SSH 密钥。生成 SSH 密钥的步骤如下:打开终端,输入命令 ssh-keygen -t rsa -b 4096。选择密钥保存位置。输入密码短语以保护私钥。将公钥复制到远程服务器上。将私钥妥善保存,因为它是访问帐户的凭据。

要删除 Git 仓库,请执行以下步骤:确认要删除的仓库。本地删除仓库:使用 rm -rf 命令删除其文件夹。远程删除仓库:导航到仓库设置,找到“删除仓库”选项,确认操作。

将 Git 服务器连接到公网包括五个步骤:1. 设置公共 IP 地址;2. 打开防火墙端口(22、9418、80/443);3. 配置 SSH 访问(生成密钥对、创建用户);4. 配置 HTTP/HTTPS 访问(安装服务端、配置权限);5. 测试连接(使用 SSH 客户端或 Git 命令)。

要通过 Git 检测 SSH,需要执行以下步骤:生成 SSH 密钥对。将公钥添加到 Git 服务器。配置 Git 使用 SSH。测试 SSH 连接。根据实际情况解决可能遇到的问题。

解决 Git 下载速度慢时可采取以下步骤:检查网络连接,尝试切换连接方式。优化 Git 配置:增加 POST 缓冲区大小(git config --global http.postBuffer 524288000)、降低低速限制(git config --global http.lowSpeedLimit 1000)。使用 Git 代理(如 git-proxy 或 git-lfs-proxy)。尝试使用不同的 Git 客户端(如 Sourcetree 或 Github Desktop)。检查防火

在开发一个电商网站时,我遇到了一个棘手的问题:如何在大量商品数据中实现高效的搜索功能?传统的数据库搜索效率低下,用户体验不佳。经过一番研究,我发现了Typesense这个搜索引擎,并通过其官方PHP客户端typesense/typesense-php解决了这个问题,大大提升了搜索性能。

要通过 Git 下载项目到本地,请按以下步骤操作:安装 Git。导航到项目目录。使用以下命令克隆远程存储库:git clone https://github.com/username/repository-name.git

如何将公钥添加到 Git 账户?步骤:生成 SSH 密钥对。复制公钥。在 GitLab 或 GitHub 中添加公钥。测试 SSH 连接。
