Stable Diffusion - High-Resolution Image Synthesis with Latent Diffusion Models

Paper name

High-Resolution Image Synthesis with Latent Diffusion Models

Paper Reading Note

Paper URL: https://arxiv.org/abs/2112.10752

Code URL: https://github.com/CompVis/latent-diffusion

TL;DR

  • 2021 年 runway 和慕尼黑路德维希·马克西米利安大学出品的文章,开源社区大名顶顶的文生图模型 stable diffusion 背后的论文。提出 Latent Diffusion Models,基于 latent space 进行 diffusion,降低计算量需求。

Introduction

背景

  • 图像生成对计算需求较大,当前一些主流方法的优缺点对比:
    • 自回归(AR)transformer:对于复杂、自然场景的高分辨率图像合成,目前主要是通过(scaling up likelihood-based)概率模型扩展来实现的,这些模型可能包含数十亿参数,参数量较大
    • GAN 的结果主要局限于有限变异性的数据,对抗学习过程不容易扩展到建模复杂、多模态分布
    • Diffusion 模型由一系列去噪自动编码器构成,作为基于似然的模型,没有 GAN 的模式崩溃和训练不稳定性,并且通过参数共享,可以模拟自然图像高度复杂分布,无需像 AR 模型那样涉及数十亿参数
  • Diffusion 模型现有问题:
    • 训练和评估模型需要在 RGB 图像这样的高维空间中进行重复的函数评估(和梯度计算),例如,训练最强大的 Diffusion 模型通常需要数百个 GPU 天(例如,在论文 Diffusion Models Beat GANs on Image Synthesis 中为150-1000 个 V100 天)。在输入空间的噪声版本上进行重复评估也使推理变得昂贵,因此在单个A100 GPU上生成50k样本大约需要5天

本文方案

  • 提出 Latent Diffusion Models,基于 latent space 进行 diffusion,降低计算量需求
  • 出发点来源于对训练好的像素空间 diffusion 模型进行分析:下图展示了一个训练好的模型的速率-失真关系。学习大致可以分为两个阶段:首先是感知压缩阶段,该阶段去除了高频细节,但仍然学到了很少的语义变化。在第二阶段,实际的生成模型学习数据的语义和概念组成(语义压缩)。本文的目标是首先找到一个在感知上等效但在计算上更合适的空间,在这个空间中我们将训练高分辨率图像合成的扩散模型。
    在这里插入图片描述
  • 本文模型在细节上和指标上优于同时期的 AR 或者 GAN 模型。基于更少的下采样比率实现了更高的效率
    在这里插入图片描述

Methods

  • 为了降低训练扩散模型以实现高分辨率图像合成的计算需求,我们观察到,虽然扩散模型通过对应的损失项进行欠采样,允许忽略感知上不相关的细节,但它们仍然需要在像素空间进行昂贵的函数评估,这导致计算时间和能源资源的巨大需求。我们提出通过引入压缩学习和生成学习阶段的显式分离(见图2)来规避这一缺点。为了实现这一点,我们利用一个自动编码模型,该模型学习了一个在感知上等效于图像空间的空间,但具有显著降低的计算复杂性。

Perceptual Image Compression

  • 主要基于之前的工作进行,由一个自编码器组成,通过 perceptual loss 和 patch-based 对抗损失进行训练。这确保了通过强制局部真实性,重建被限制在图像流形上,并避免了仅依赖于像素空间损失(如L2或L1目标)引入的模糊性。
  • 具体来说
    • 给定一张图片 x ∈ R H × W × 3 x \in \mathbb{R}^{H \times W \times 3} xRH×W×3
    • encoder ε \varepsilon ε 用于将 x 编码到 latent 空间表示: z = ε ( x ) z= \varepsilon(x) z=ε(x)
    • decoder D D D 用于将 latent 空间重建为图片: x ~ = D ( z ) \widetilde{x}= D(z) x =D(z)
    • encoder 下采样率表示为: f = H / h = W / w = 2 m f = H/h = W/w= 2^{m} f=H/h=W/w=2m
  • 为了避免潜在空间的任意高方差,尝试了两种不同的正则化方法。
    • 第一种变体 KL-reg.,对学到的 latent 施加了轻微的KL惩罚,朝向标准正态,类似于VAE
    • 第二种变体 VQ-reg. 则在解码器内使用了一个向量量化层。这个模型可以解释为是一个VQGAN,但量化层被吸收到解码器中。
    • 由于我们后续的扩散模型(DM)被设计为使用我们学到的潜在空间 z = E(x) 的二维结构,我们可以使用相对不过度的压缩率并实现非常好的重建。这与先前的工作 VQGAN/DALL-E 形成对比,其依赖于学到的空间 z 的任意 1D 排序来自回归地建模其分布,从而忽略了 z 的许多固有结构。因此,我们的压缩模型更好地保留了 x 的细节(见下表)。
      精度对比

Latent Diffusion Models

扩散模型(DM):
  • DM 设计用于通过逐渐去噪一个正态分布变量来学习数据分布 p(x) 的概率模型,这对应于学习长度为 T 的固定马尔可夫链的反向过程。在图像合成方面,最成功的模型 DDPM 等基于对 p(x) 变分下界的一种重新加权变体,这反映了去噪得分匹配。这些模型可以解释为一个等权重的去噪自动编码器序列 ϵ ( x t , t ) ; t = 1... T \epsilon(x_{t}, t); t = 1 . . . T ϵ(xt,t);t=1...T ,这些自动编码器经过训练以预测其输入 xt 的去噪变体,其中 xt 是输入 x 的带噪声版本。相应的目标可以简化为:
    L DM = E x , ϵ ∼ N ( 0 , 1 ) , t [ ∥ ϵ − ϵ θ ( x t , t ) ∥ 2 2 ] \mathcal{L}_{\text{DM}} = \mathbb{E}_{x, \epsilon \sim \mathcal{N}(0,1),t}[\| \epsilon - \epsilon_{\theta}(x_t, t) \|_2^2] LDM=Ex,ϵN(0,1),t[ϵϵθ(xt,t)22]
    其中 t 均匀采样自 {1, . . . , T}。
潜在表示的生成建模(Generative Modeling of Latent Representations)
  • 利用我们训练得到的感知压缩模型,其中包括 ε \varepsilon ε D D D,我们现在可以访问一个高效、低维的潜在空间,其中高频、难以察觉的细节被抽象化了。与高维像素空间相比,这个空间更适合基于似然的生成模型,因为它们现在可以

    • (i)专注于数据的重要、语义
    • (ii)在一个更低维、计算效率更高的空间中进行训练。
  • 训练目标表示为
    L LDM : = E E ( x ) , ϵ ∼ N ( 0 , 1 ) , t [ ∥ ϵ − ϵ θ ( z t , t ) ∥ 2 2 ] . \mathcal{L}_{\text{LDM}} := \mathbb{E}_{E(x), \epsilon \sim \mathcal{N}(0,1),t}[\| \epsilon - \epsilon_{\theta}(z_t, t) \|_2^2]. LLDM:=EE(x),ϵN(0,1),t[ϵϵθ(zt,t)22].

  • 我们模型的神经骨架 ϵ ( ◦ , t ) \epsilon (◦, t) ϵ(,t) 实现为一个时态条件(time-conditional) UNet。由于正向过程是固定的,在训练过程中可以有效地从 ε \varepsilon ε 获取 z t z_t zt,并且从 p ( z ) p(z) p(z) 中解码的样本可以通过一次 D D D 的传递转换回图像空间。

Conditioning Mechanisms

condition LDMs

  • 类似于其他类型的生成模型 (CGAN),扩散模型原则上能够建模形式为 p ( z ∣ y ) p(z|y) p(zy) 的条件分布。这可以通过使用条件去噪自动编码器 ϵ ( z t , t , y ) \epsilon (z_t, t, y) ϵ(zt,t,y) 来实现,并为通过输入 y(如文本、语义地图或其他图像到图像翻译任务)控制合成。然而,在图像合成的背景下,将 DMs 的生成能力与超出类别标签或输入图像的模糊变体之外的其他类型的条件结合起来,迄今为止仍是一个未充分探讨的研究领域。我们通过在 DMs 的基础 UNet 骨干上增加交叉注意力机制将 DMs 转化为更灵活的条件图像生成器。
  • 为了预处理来自各种模态的 y(例如语言提示),我们引入了一个领域特定的编码器 τ θ \tau_{\theta} τθ,将 y 投影到一个中间表示 τ θ ( y ) ∈ R M × d τ \tau_{\theta}(y) ∈ \mathbb{R}^{M \times d_\tau} τθ(y)RM×dτ ,然后通过以下的交叉注意力机制实现将 τ θ ( y ) \tau_{\theta}(y) τθ(y) 映射到 UNet 的中间层:
    A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d ) ⋅ V Attention(Q, K, V) = softmax(\frac{QK^T}{\sqrt{d}})·V Attention(Q,K,V)=softmax(d QKT)V
    其中 Q = W Q ( i ) ⋅ φ i ( z t ) Q = W^{(i)}_Q · \varphi_{i}(zt) Q=WQ(i)φi(zt) K = W K ( i ) ⋅ τ θ ( y ) K = W^{(i)}_K · \tau_{\theta}(y) K=WK(i)τθ(y) V = W V ( i ) ⋅ τ θ ( y ) V = W^{(i)}_V · \tau_{\theta}(y) V=WV(i)τθ(y)。在这里, φ i ( z t ) ∈ R N × d i \varphi_{i}(zt) \in \mathbb{R}^{N \times di} φi(zt)RN×di 代表 UNet 实现 ϵ θ \epsilon_\theta ϵθ 的(flattened)中间表示, W V ( i ) ∈ R d × d i W^{(i)}_V \in \mathbb{R}^{d \times d_i} WV(i)Rd×di W Q ( i ) ∈ R d × d τ W^{(i)}_Q ∈ R^d×dτ WQ(i)Rd×dτ W K ( i ) ∈ R d × d τ W_K^{(i)} \in \mathbb{R}^{d \times d_\tau} WK(i)Rd×dτ 是可学习的投影矩阵。见图 3 进行视觉描述。基于图像条件对,然后通过以下方式学习条件 LDM:
    L LDM : = E ε ( x ) , y , ϵ ∼ N ( 0 , 1 ) , t [ ∥ ϵ − ϵ θ ( z t , t , τ θ ( y ) ) ∥ 2 2 ] \mathcal{L}_{\text{LDM}} := \mathbb{E}_{\varepsilon(x), y, \epsilon \sim \mathcal{N}(0,1),t}[\| \epsilon - \epsilon_{\theta}(z_t, t, \tau_{\theta}(y)) \|_2^2] LLDM:=Eε(x),y,ϵN(0,1),t[ϵϵθ(zt,t,τθ(y))22]
    其中 τ θ \tau_{\theta} τθ ϵ θ \epsilon_{\theta} ϵθ 通过上面的目标函数联合优化。这个条件机制是灵活的,因为 τ θ \tau_{\theta} τθ 可以用领域特定的模型进行初始化。

Experiments

  • 首先,我们将分析我们的模型在训练和推断中与基于像素的扩散模型相比的优势。有趣的是,我们发现在 VQ 正则化的潜在空间中训练的 LDMs 有时能够实现更好的样本质量,即使相较于连续版本,VQ 正则化的第一阶段模型的重建能力(reconstruction capabilities)略微落后,参见上述的表 8。
  • 关于第一阶段正则化方案对 LDM 训练的影响以及它们对分辨率 > 256^2 的泛化能力的视觉比较如下
    在这里插入图片描述
    由潜在空间的方差引起的信噪比(即 V a r ( z ) / σ t 2 Var(z)/\sigma^2_t Var(z)/σt2)对卷积采样的结果有显著影响。例如,当直接在一个KL正则化模型的潜在空间中训练 LDM 时,这个比率非常高,以至于模型在反向去噪过程的早期分配了大量的语义细节。相反,当通过潜在变量的逐分量标准差对潜在空间进行重新缩放时,信噪比降低。我们在上图中说明了这对语义图像合成中卷积采样的影响。请注意,VQ 正则化空间的方差接近1,因此不需要重新缩放。
On Perceptual Compression Tradeoffs
  • 本节分析了我们的LDMs在不同的下采样因子f ∈ {1, 2, 4, 8, 16, 32}(简写为LDM-f,其中LDM-1对应于基于像素的DMs)的行为。为了获得可比较的测试场,我们将计算资源固定为单个NVIDIA A100,并在本节的所有实验中以相同数量的步骤和相同数量的参数对所有模型进行训练。
    在这里插入图片描述

  • ImageNet 数据集上进行了 2M 步类别条件模型训练的样本质量随训练进展的变化如下,LDM-{4-16}在效率和感知上忠实的结果之间取得了良好的平衡:

    • i) 对于LDM-{1,2}来说,小的下采样因子导致训练进展缓慢。作者认为原因是将大部分感知压缩留给扩散模型
    • ii) 过大的 f 值导致在相对较少的训练步骤后保真度停滞。作者认为原因是过强的第一阶段压缩导致信息丢失,从而限制了可实现的质量 在这里插入图片描述
  • 比较了在 CelebAHQ 和 ImageNet 上训练的模型,针对 DDIM 采样器的不同去噪步骤数量,将其与FID分数绘制在一起。LDM-{4-8} 在感知和概念压缩的不合适比率方面优于其他模型
    在这里插入图片描述

Image Generation with Latent Diffusion
  • 在 CelebA-HQ、FFHQ、LSUN-Churches 和 Bedrooms 上训练了 256^2 图像的无条件模型,并评估了它们的 i) 样本质量和 ii) 对数据流形的覆盖,使用 ii) FID 和 ii) 精度与召回指标进行评测。在CelebA-HQ上,我们报告了一个新的FID记录,为5.11,超过了先前基于似然的模型以及GANs
    在这里插入图片描述
  • 生成效果如下
    在这里插入图片描述
Conditional Latent Diffusion
  • 实现方式:对于文本到图像建模,我们在 LAION-400M 上训练了一个具有 1.45B 参数的 KL 正则化的 LDM,该模型以语言提示为条件

    • 使用BERT-tokenizer,并将 τ θ \tau_\theta τθ 实现为一个 transformer,以推断一个潜在特征,该特征通过(多头)交叉注意力映射到 UNet
  • COCO 上的定量分析结果,classifier-free diffusion guidance 极大提升质量。使用 guide 的 LDM-KL-8-G 基本能基本媲美 AR 方法 Make-A-Scene 和 diffusion 方法 GLIDE
    在这里插入图片描述

  • 基于文本作为条件
    在这里插入图片描述

  • 基于检测框和文本作为条件
    在这里插入图片描述

  • 基于语义分割图作为条件
    在这里插入图片描述

超分应用
  • 低分辨率图片作为条件训练,即可进行超分操作
    在这里插入图片描述

在这里插入图片描述

inpainting 应用

在这里插入图片描述
在这里插入图片描述

Thoughts

  • 比较早期的经典工作,实验非常详尽,将 diffusion 开源效果推到新的高度

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

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

相关文章

全球移动通信(2G/3G/4G/5G)频谱分布情况

一、概述 随着通信技术的不断发展,全球各国都在积极推进2G、3G、4G、5G网络的建设和应用。根据FCC统计,目前全球移动通信频谱分布如下: 二、分布 (一)俄罗斯 2G:主要使用900MHz和1800MHz两个频段。其中&…

【sqli靶场】第六关和第七关通关思路

目录 前言 一、sqli靶场第六关 1.1 判断注入类型 1.2 观察报错 1.3 使用extractvalue函数报错 1.4 爆出数据库中的表名 二、sqli靶场第七关 1.1 判断注入类型 1.2 判断数据表中的字段数 1.3 提示 1.4 构造poc爆库名 1.5 构造poc爆表名 1.6 构造poc爆字段名 1.7 构造poc获取账…

【Axure RP9】动态面板使用------案例:包括轮播图和多方式登入及左侧菜单栏案例

目录 一 动态面板简介 1.1 动态面板是什么 二 轮播图 2.1 轮播图是什么 2.2 轮播图应用场景 2.3 制作实播图 三 多方式登入 3.1多方式登入是什么 3.3 多方式登入实现 四 左侧菜单栏 4.1左侧菜单栏是什么 4.2 左侧菜单栏实现 一 动态面板简介 1.1 动态面板是什么…

【LeetCode刷题笔记(5)】【Python】【盛最多水的容器】【双指针】【中等】

文章目录 盛最多水的容器算法题描述示例示例 1示例 2 提示题意拆解 解决方案:【双指针】运行结果复杂度分析 结束语 盛最多水的容器 盛最多水的容器 算法题描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (…

Surface pro官方镜像恢复详细图文步骤

某些小白不会弄直接找淘宝远程刷官方系统,还被忽悠什么原版序列号会抹掉这样的笑话,真的很无语 一、准备恢复优盘 1、微软官方下载中心,按序列号下载,对应镜像,推荐最新版,但一般都要有注册微软账号才能下…

微信小程序背景图片设置

问题 :微信小程序通过css:background-image引入背景图片失败 [渲染层网络层错误] pages/wode/wode.wxss 中的本地资源图片无法通过 WXSS 获取&#xff0c;可以使用网络图片&#xff0c;或者 base64&#xff0c;或者使用<image/>标签 解决方法微信小程序在使用backgroun…

QT Widget - 随便画个圆

简介 实现在界面中画一个圆, 其实目的是想画一个LED效果的圆。代码 #include <QApplication> #include <QWidget> #include <QPainter> #include <QColor> #include <QPen>class LEDWidget : public QWidget { public:LEDWidget(QWidget *pare…

机器学习 | SVM支持向量机

欲穷千里目&#xff0c;更上一层楼。 一个空间的混乱在更高维度的空间往往意味着秩序。 Machine-Learning: 《机器学习必修课&#xff1a;经典算法与Python实战》配套代码 - Gitee.com 1、核心思想及原理 针对线性模型中分类两类点的直线如何确定。这是一个ill-posed problem。…

从零开始实现分布式服务系统

文章目录 开发前言分布式模型系统图解注册中心模块基础服务模块被依赖的服务模块&#xff08;日志服务&#xff09;服务模块&#xff08;访问服务&#xff09;运行效果开发总结 开发前言 分布式系统具有高可靠性、高性能、可扩展性、灵活性、数据共享、可靠性和地理分布等优点…

【计算机网络】TCP协议——3. 可靠性策略效率策略

前言 TCP是一种可靠的协议&#xff0c;提供了多种策略来确保数据的可靠性传输。 可靠并不是保证每次发送的数据&#xff0c;对方都一定收到&#xff1b;而是尽最大可能让数据送达目的主机&#xff0c;即使丢包也可以知道丢包。 目录 一. 确认应答和捎带应答机制 二. 超时重…

小信砍柴的题解

目录 原题描述&#xff1a; 时间&#xff1a;1s 空间&#xff1a;256M 题目描述&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 样例1输入&#xff1a; 题目大意&#xff1a; 主要思路&#xff1a; 注意事项&#xff1a; 总代码&#xff1a; 原题描述&#…

计网01 计算机网络基础

一、计算机网络基本概念 1、什么是计算机网络 网络&#xff1a;由两台或多台计算机通过网络设备串联&#xff08;网络设备通过传输介质串联&#xff09;而形成的网络网络设备&#xff1a;计算机、路由交换、防火墙、上网行为管理等传输介质&#xff1a;双绞线&#xff08;网线…

微服务——服务异步通讯(MQ高级)

MQ的一些常见问题 消息可靠性 生产者消息确认 返回ack&#xff0c;怎么感觉这么像某个tcp的3次握手。 使用资料提供的案例工程. 在图形化界面创建一个simple.queue的队列&#xff0c;虚拟机要和配置文件里面的一样。 SpringAMQP实现生产者确认 AMQP里面支持多种生产者确认的类…

【华为】文档中命令行约定格式规范(命令行格式规范、命令行行为规范、命令行参数格式、命令行规范)

文章目录 命令行约定格式**粗体&#xff1a;命令行关键字***斜体&#xff1a;命令行参数*[ ]&#xff1a;可选配置{ x | y | ... } 和 [ x | y | ... ]&#xff1a;选项{ x | y | ... }* 和 [ x | y | ... ]*&#xff1a;多选项&<1-n>&#xff1a;重复参数#&#xff…

kill编译异常处理

当kill编译时出现如下警告 Build target Target 1 linking... *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESSSEGMENT: ?PR?_LCD_SHOWCHAR?LCD1602 *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESSSEGMENT: ?PR?_LCD_SHOWSTRING?LCD…

SpringSecurity 手机号登录

一、工作流程 1.向手机发送验证码&#xff0c;第三方短信发送平台&#xff0c;如阿里云短信。 2.手机获取验证码后&#xff0c;在表单中输入验证码。 3.使用自定义过滤器​SmsCodeValidateFilter​。 4.短信校验通过后&#xff0c;使用自定义手机认证过滤器​SmsCodeAuthentic…

UE4/UE5 日志插件(基于spdlog)

1 解决问题 对于高频日志序列化到本地的需求&#xff0c;spdlog肯定完美满足。 源码地址&#xff1a;https://github.com/gabime/spdlog 博主下载的版本为 spdlog-1.12.0&#xff0c;各位大佬可以根绝自己爱好选择。 2 过程介绍 大概目录&#xff1a; SpdlogLibC目录下是对…

Qt/C++音视频开发60-坐标拾取/按下鼠标获取矩形区域/转换到视频源真实坐标

一、前言 通过在通道画面上拾取鼠标按下的坐标&#xff0c;然后鼠标移动&#xff0c;直到松开&#xff0c;根据松开的坐标和按下的坐标&#xff0c;绘制一个矩形区域&#xff0c;作为热点或者需要电子放大的区域&#xff0c;拿到这个坐标区域&#xff0c;用途非常多&#xff0…

C语言之文件操作(下)

C语言之文件操作&#xff08;下&#xff09; 文章目录 C语言之文件操作&#xff08;下&#xff09;1. 文件的顺序读写1.1 文件的顺序读写函数1.1.1 字符输入/输出函数&#xff08;fgetc/fputc&#xff09;1.1.2 ⽂本⾏输⼊/输出函数&#xff08;fgets/fputs&#xff09;1.1.3 格…

工业应用新典范,飞凌嵌入式FET-D9360-C核心板发布!

来源&#xff1a;飞凌嵌入式官网 当前新一轮科技革命和产业变革突飞猛进&#xff0c;工业领域对高性能、高可靠性、高稳定性的计算需求也在日益增长。为了更好地满足这一需求&#xff0c;飞凌嵌入式与芯驰科技&#xff08;SemiDrive&#xff09;强强联合&#xff0c;基于芯驰D9…