(2023,3D NeRF,无图像变分分数蒸馏,单步扩散)SwiftBrush:具有变分分数蒸馏的一步文本到图像扩散模型

SwiftBrush : One-Step Text-to-Image Diffusion Model with Variational Score Distillation

公众:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料)

目录

0. 摘要

1. 方法

1.1 基础

1.2 SwiftBrush

2. 结果

3. 未来工作

S. 总结

S.1 主要贡献

S.2 方法


0. 摘要

尽管文本到图像扩散模型能够从文本提示生成高分辨率和多样化的图像,但通常会受到缓慢的迭代采样过程的困扰。模型蒸馏是加速这些模型的最有效方法之一。然而,先前的蒸馏方法在要求大量图像进行训练时未能保留生成质量,这些图像可以来自真实数据,也可以是由教师模型合成生成的。针对这一限制,我们提出了一种新颖的无图像蒸馏方案,名为 SwiftBrush。从文本到 3D 合成中汲取灵感,该方法通过专用损失从 2D 文本到图像扩散先验获取与输入提示对齐的 3D 神经辐射场(Neural Radiance Fields,NeRF),而无需使用任何 3D 真实数据。我们的方法重新利用相同的损失,将经过预训练的多步文本到图像模型蒸馏到一个只需单一推理步骤就能生成高保真图像的学生网络。尽管模型简单,但我们的模型是第一个能够一步生成与 Stable Diffusion 相媲美质量的文本到图像生成器之一,而无需依赖任何训练图像数据。值得注意的是,SwiftBrush 在 COCO-30K 基准测试中取得了 16.67 的 FID 分数和 0.29 的 CLIP 分数,实现了有竞争力的结果,甚至在某些方面超越了现有的最先进蒸馏技术。

1. 方法

1.1 基础

分数蒸馏采样 (Score Distillation Sampling,SDS) 是一种用于预训练扩散模型的蒸馏技术,有效地应用于 3D 生成 [17, 26, 42]。它利用预训练的文本到图像扩散模型,该模型从文本条件 y 中预测扩散噪声,表示为 ϵ_ψ(x_t, t, y)。该方法优化一个由 θ 参数化的单一 3D NeRF,使其与给定的文本提示对齐。给定摄像机参数 c,使用可微分渲染函数 g(·, c) 从 3D NeRF 对摄像机视图 c 的图像进行渲染。在这里,利用渲染后的图像 g(θ, c) 优化权重 θ,通过一个损失函数的梯度可以近似表示为:

其中 t ∼ U(0.02T, 0.98T),T 是扩散模型的最大时间步长,ϵ ∼ N(0, I),有噪图像 x_t = α_t·g(θ, c) + σ_t·ϵ,y 是输入文本,w(t) 是权重函数。

尽管在文本到三维合成方面取得了进展,经验研究 [26, 42] 表明 SDS 经常遇到过饱和、过度平滑和多样性减少等问题。如果我们在我们的框架中简单地应用 SDS,就会观察到相同的退化。

变分分数蒸馏 (Variational Score Distillation,VSD) 在 ProlificDreamer [43] 中引入,通过稍微修改损失来解决先前提到的 SDS 的问题:

再次,x_t = α_t·g(θ, c) + σ_t·ϵ 是相机视图 c 的渲染图像的带噪声观察。VSD 通过引入一个额外的、专门针对从相机姿态 c 渲染的 3D NeRF 的图像的评分函数,使自己与 SDS 区别开来。这个评分是通过微调具有下面描述的扩散损失的扩散模型 ϵ_ϕ(x_t, t, y, c) 而导出的:

按照 ProlificDreamer 的提议,ϵ_ϕ 是由低秩适应 [11](Low-Rank Adaption,LoRA)参数化的,并且从预训练的扩散模型 ϵ_ψ 初始化,其中添加了一些层来对相机视图 c 进行调节。请注意,在优化过程的每个迭代 i 中,ϵ_ϕ 需要根据 θ 的当前分布进行调整。因此,ProlificDreamer 在微调 ϵ_ϕ 和优化 θ 之间交替进行。通过这些算法增强,ProlificDreamer 显著提高了其能力,实现了 NeRF 的生成和出色纹理网格的创建。这种改进直接启发我们将 VSD 调整到一步文本到图像基于扩散的蒸馏的任务中。

1.2 SwiftBrush

动机。虽然 SDS 和 VSD 明确设计用于文本到 3D 生成任务,但它们通过 3D NeRF 的渲染图像 g(θ, c) 来松散连接到该目标。事实上,我们可以用任何输出 2D 图像以满足我们需求的函数替换 NeRF 渲染。受到这一动机的启发,我们建议用一个可以一步实现文本引导图像生成的的文本到图像生成器来替代 NeRF 渲染 g(θ, c),从而将文本到 3D 生成训练有效地转化为一步扩散模型蒸馏。

设计空间。我们采用与 [43] 相同的方法,对设计空间进行修改以更好地适应我们的任务。首先,我们利用两个教师模型:一个预训练的文本到图像教师 ϵ_ψ 和一个额外的 LoRA 教师 ϵ_ϕ。此外,我们从 LoRA 教师中去掉了相机视图 c 的调节,因为在我们的情况下这是不必要的,并且我们为两个教师都使用无分类器指导(classifier-free guidance,CFG)。然后,我们用一个通用的一步文本到图像学生模型 f_θ(z, y) 替换在文本到 3D 设置中对特定的用户提供的提示过拟合的 NeRF。我们的学生模型 f_θ 接受随机高斯噪声 z 和文本提示 y 作为输入。LoRA 教师和学生模型都使用文本到图像教师的权重进行初始化。接下来,我们在冻结文本到图像教师的同时,使用公式 (5) 和公式 (6),交替训练学生模型和 LoRA 教师。伪代码和系统图示可在 Alg. 1 和 Fig. 2 中查看。

学生参数化。给定一个预训练的文本到图像扩散模型 ϵ_θ,直接使用它的输出作为学生模型是可能的,即,f_θ(z, y) = ϵ_θ(z, T, y),其中 T 是预训练模型的最大时间步。然而,在我们的情况下,所选择的预训练模型是 Stable Diffusion,它被固有地设计为预测添加的噪声 ϵ。相反,我们的目标是优化学生模型,使其预测出一个干净、无噪声的图像 x_0。因此,我们想要学生学习的内容与学生输出之间存在很大的领域差距。为了便于训练,我们经验性地重新参数化学生输出如下: 

这是方程 (1) 的一种实现,如果我们设置 t = T,x_t = z,ϵ ≈ ϵ_θ(z, T, y),以及 x_0 ≈ f_θ(z, y)。因此,基本上,这种重新参数化将预训练模型的预测噪声输出转换为 “预测 x_0” 的形式,在第 4.3 节中经验性地证明这对学生模型的学习是有帮助的。 

2. 结果

在 MS COCO 上与其他模型的对比表现良好。 

在人类评估方面表现良好。 

消融研究。使用 VDS(Full)生成的图像更逼真。 

3. 未来工作

相比于利用多步采样进行推断的教师,SwiftBrush 不可避免地产生更低质量的样本。另一个缺点是目前的设计只关注单步学生模型,无法像 Luo 等人 [22] 那样支持少步生成以提高图像保真度。在未来的工作中,我们的目标是调查将 SwiftBrush 扩展到少步生成的可行性,以便我们可以通过计算来换取质量。此外,我们还发现探索类似 SwiftBrush 的训练,只需要一个教师,具有引人入胜的吸引力。这样的探索在计算资源有限的场景中可能带来巨大的好处。最后,令人着迷的是看到像 DreamBooth [33]、ControlNet [47] 或 InstructPix2Pix [2] 这样的技术是否可以与 SwiftBrush 集成,实现各种应用的即时生成。 

S. 总结

S.1 主要贡献

在文本到 3D 合成中,通过专用损失从 2D 文本到图像扩散先验获取与输入提示对齐的 3D 神经辐射场(Neural Radiance Fields,NeRF),而无需使用任何 3D 真实数据。

受此启发,本文提出无图像蒸馏方案 SwiftBrush,利用相同的损失,将经过预训练的多步文本到图像模型蒸馏到一个只需单一推理步骤就能生成高保真图像的学生网络。

S.2 方法

本文使用的架构如图 2 所示。

  • 给定一个预训练的文本到图像扩散模型 ϵ_ψ,将其参数冻结作为教师网络。
  • 对于由教师模型 ϵ_ψ 初始化的低秩适应(Low-Rank Adaption,LoRA)教师网络 ϵ_ϕ 和学生网络 f_θ,交替使用公式 5 (优化)和公式 6 (微调)。其中 t ∼ U(0.02T, 0.98T),T 是扩散模型的最大时间步长,ϵ ∼ N(0, I),有噪图像 x_t = α_t·g(θ, c) + σ_t·ϵ,y 是输入文本,w(t) 是权重函数。
  • 两个教师都使用无分类器指导(classifier-free guidance,CFG)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图像分割实战-系列教程2:Unet系列算法

图像分割实战-系列教程 总目录 语义分割与实例分割概述 Unet系列算法 1、Unet 整体结构:概述就是编码解码过程简单但是很实用,应用广起初是做医学方向,现在也是 语义分割与实例分割概述 Unet系列算法

MYSQL 深入探索系列六 SQL执行计划

概述 好久不见了,近期一直在忙项目的事,才有时间写博客,近期频繁出现sql问题,今天正好不忙咱们看看千万级别的表到底该如何优化sql。 案例 近期有个小伙伴生产环境收到了告警,有个6千万的日志表,查询耗时大…

unity学习笔记----游戏练习0

一、修复植物种植的问题 1.当手上存在植物时,再次点击卡片上的植物就会在手上添加新的植物,需要修改成只有手上没有植物时才能再次获取到植物。需要修改AddPlant方法。 public bool AddPlant(PlantType plantType) { //防止手上出现多个植…

香橙派 ubuntu实现打通内网,外网双网络,有线和无线双网卡

当香橙派 ubuntu 连了有线,和无线时,默认请求外网时,只走一个网卡,如走了内网网卡,就只能访问内访问,访问不了外网;走了外网网卡就只能访问外网,访问不了内网; 实现双网…

显示器与按键(LCD 1602 + button)

一、实验目的: (1)学习lcd 1602的编程与使用、 (2)机械式复位开关button软件消抖的方法。 二、实验内容: 1、必做:先显示开机画面,:在1602显示器上,分两行…

Linux报错:audit: backlog limit exceeded

今天,一台虚拟机上操作昨天打开的连接一直没响应,新打开连接连接不上。SSH校验不通过。 通过IT的后台,可以看到满屏的audit: backlog limit exceeded。 问题原因:audit服务记录的审计事件超出默认(或设置)数量 ,达到或…

.一文带你了解Kylin:大数据框架开源分布式分析型数据仓库学习网站全攻略!

介绍:Apache Kylin是一个开源的分布式分析引擎,它为Hadoop和Apache Kylin是一个开源的分布式分析引擎,它为Hadoop和Spark提供SQL查询接口和多维分析(OLAP)能力,以支持超大规模的数据处理。Kylin最初由eBay …

HDFS客户端UnknownHostException事故解析

文章目录 前言事故现场问题分析是否是整个域名解析服务当时都出问题了是否是出问题的pods本身的域名解析有问题 异常发生的全部过程域名的解析是什么时候发生的,怎么发生的域名解析的详细流程 重试发生在什么地方为什么重试会无效 Bugfix代码详解关于StandardHostRe…

【神预言】2024年最具颠覆性的十大技术,每一条都令人咋舌!

大数据产业创新服务媒体 ——聚焦数据 改变商业 回首2023年,我们见证了数据智能领域的一场重要变革:数据智能的三大核心要素——数据、算法、和算力,如今已升级演化为大数据、大模型和大计算的全新范式。 在这个变革的十字路口上&#xff0c…

js实现前端下载图片和文件资料

说明:下载图片和文档资料是两种不同的方式,所以需要先判断下载的是图片还是word,excel等文件资料 目录 1.文件资料下载: 2.图片资源下载 1.文件资料下载: window.location.href 文件路径; handleClick(item) {let…

【黑产攻防道04】利用pow工作量证明降低黑产的破解效率

上一期我们提到,黑产有三种常见的破解方式: 1.通过识别出验证码图片答案实现批量破解验证,即图片答案识别; 2.在了解通讯流程之后直接携带相关参数发请求,即协议破解; 3.使用各种客户端模拟器来模拟真人…

在Linux上搭建Maven仓库的实战教程

引言 在Java开发中,Maven作为项目构建和依赖管理的重要工具,其仓库的搭建至关重要。本文将手把手教你如何在Linux系统上安装并配置Nexus Repository Manager 3(简称Nexus 3),从而创建一个私有的Maven仓库。 步骤一&a…

Vue小练习--任务列表

这是一个非常实用的例子,主要实用的是v-model、v-on、v-for指令,javaScript的数组也会涉及一些,javaScript数组方法有很多,本文使用的添加元素和删除元素非常实用,可以记下来。 设计思路 很多例子看起来很难&#xf…

代码随想录刷题 | Day1

今日学习目标 一、基础 数组 array类 模板类vector 数组是存放在连续内存空间上的相同类型数据的集合。 数组可以方便的通过下标索引的方式获取到下标下对应的数据。 需要两点注意的是 数组下标都是从0开始的。 数组内存空间的地址是连续的 而且大家如果使用C的话&…

【华为数据之道学习笔记】7-5通过感知能力推进企业业务数字化

感知数据在华为信息架构中的位置 感知可以应用于广泛的物理世界和数字世界,感知范围可以从人、物、作业、地点扩展到复杂环境。成熟的用例倾向于以物和人为中心。而在企业中,只有将感知数据纳入整体的数据体系中,才能发挥感知数据的价值。 华…

javaWeb学生信息管理系统2

一、学生信息管理系统SIMS 一款基于纯Servlet技术开发的学生信息管理系统(SIMS),在设计中没有采用SpringMVC和Spring Boot等框架。系统完全依赖于Servlet来处理HTTP请求和管理学生信息,实现了信息的有效存储、检索和更新&#xf…

【eclipse】eclipse开发springboot项目使用入门

下载eclipse Eclipse downloads - Select a mirror | The Eclipse Foundation 安装eclipse 其他一步一步即可 我们是开发java web选择如下 界面修改 Window->Preferences-> 修改eclipse风格主题 Window->Preferences->General->Appearance 修改字体和大小…

Docker 入门 ------容器互通以及Dockerfile

1. 端口映射以及容器互联 Docker 除了通过网络访问,还提供了两种很方便的功能来满足服务访问的基本需求: 允许映射容器内应用的服务端口到本地宿主主机互联机制实现多个容器间通过容器名来快速访问 1.1 容器映射实现访问容器 1.1.1 从外部访问容器应…

一文了解无线通信 - NB-IOT、LoRa

NB-IOT、LoRa 目录概述需求: 设计思路实现思路分析 NB-IOT1.LoRa2.区别 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,chall…

磁盘阵列raid

一、服务器硬件 cpu 、 主板 、内存、硬盘、网卡、电源、raid卡、风扇、远程管理卡 二、硬盘尺寸 目前生产环境中主流的两种类型硬盘 3.5寸 和 2.5寸 硬盘 2.5寸硬盘可以通过使用硬盘托架后适用于3.5寸硬盘的服务器,但是3.5寸没法转换成2.5寸 1.如何在服务器上…