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 开源效果推到新的高度

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

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

相关文章

服务器数据恢复—raid5热备盘未激活崩溃导致上层oracle数据丢失的数据恢复案例

服务器数据恢复环境: 某品牌X系列服务器,4块SAS硬盘组建了一组RAID5阵列,还有1块磁盘作为热备盘使用。服务器上层安装的linux操作系统,操作系统上部署了一个基于oracle数据库的OA(oracle已经不再为该OA系统提供后续服务…

vue3+echarts 立体柱状效果

vue3echarts 立体柱状效果 废话不多说&#xff0c;直接上代码 就两步&#xff0c;直接复制粘贴一手 <div id"main" class"chart" ref"chartDom"></div>import * as echarts from echarts; type EChartsOption echarts.EChartsOpti…

前端实现一个时间区间内,再次单选功能,使用Antd组件库内日历组件Calendar

需求&#xff1a;需要先让用户选择一个时间区间&#xff0c;然后再这个时间区间中&#xff0c;让用户再次去单选其种特殊日期。 思路&#xff1a; 1.先用Antd组件库中日期选择DatePicker.RangePicker实现让用户选择时间区间 2.在选择完时间区间后&#xff0c;用这个时间区间…

蓝桥杯专题-真题版含答案-【扑克牌排列】【放麦子】【纵横放火柴游戏】【顺时针螺旋填入】

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

低代码发展现状调研和思考

低代码开发是近年来迅速崛起的软件开发方法&#xff0c;让编写应用程序变得更快、更简单。有人说它是美味的膳食&#xff0c;让开发过程高效而满足&#xff0c;但也有人质疑它是垃圾食品&#xff0c;缺乏定制性与深度。你认为低代码到底是美味的膳食还是垃圾食品呢&#xff0c;…

linux系统启动时运行web程序

1.修改rc.local文件 执行命令如果找不到会报错command not found &#xff0c;使用全路径即可 找不到的话 可以使用which 命令 找到路径 后台查看执行日志 2.修改rc.local文件的权限 chmod x rc.local 然后reboot 可以查到进程和启动日志

CAD 审图意见的导出

看图的时候喜欢在图上直接标注意见&#xff0c;但是如果还要再把意见一行一行的导出到word里面就很麻烦&#xff0c;在网上看了一个审图软件&#xff0c;报价要980&#xff0c;而且那个审图意见做的太复杂了。 我的需求就是把图上标的单行文字和多行文字直接导出来就行&#x…

2机5节点系统潮流MATLAB仿真

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 电力系统潮流计算是电力系统最基本的计算&#xff0c;也是最重要的计算。所谓潮流计算&#xff0c;就是已知电网的接线方式与参数及运行条件&#xff0c;计算电力系统稳态运行各母线电压、各支路电流、功率及…

必要时进行保护性拷贝

保护性拷贝&#xff08;Defensive Copy&#xff09;是一种常见的编程实践&#xff0c;用于在传递参数或返回值时&#xff0c;创建副本以防止原始对象被意外修改。以下是一个例子&#xff0c;展示了何时进行保护性拷贝&#xff1a; mport java.util.ArrayList; import java.uti…

某60内网渗透之frp实战指南2

内网渗透 文章目录 内网渗透frp实战指南2实验目的实验环境实验工具实验原理实验内容frp实战指南2 实验步骤(1)确定基本信息。(2)查看frp工具的基本用法(3)服务端frp的配置(4)客户端frp的配置(5)使用frp服务 frp实战指南2 实验目的 让学员通过该系统的练习主要掌握&#xff1a…

【zetoro】文献管理工具使用

文章目录 一、zetoro文献管理二、论文中插入文献三、插件推荐&#xff1a;四、参考文献不多、为了方便时 一、zetoro文献管理 ➡️如何下载&#xff1a;搜索zotero即可找到官网直接下载安装 ➡️如何导入文献&#xff1a; 1本地文献拖拽导入 2各文献搜索平台上下载zotero格式…

PMP项目管理 - 质量管理

系列文章目录 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. PMP项目管理 - 质量管理 系列文章目录一、规划质量管理 - 关注工作需要达到的质量二、管理…

论文阅读:Lidar Annotation Is All You Need

目录 概要 Motivation 整体架构流程 技术细节 小结 概要 论文重点在探讨利用点云的地面分割任务作为标注&#xff0c;直接训练Camera的精细2D分割。在以往的地面分割任务中&#xff0c;利用Lidar来做地面分割是目前采用激光雷达方案进行自动驾驶的常见手段。来自Evocargo …

【Android12】WindowManagerService架构分析

Android WindowManagerService架构分析 WindowManagerService(以下简称WMS) 是Android的核心服务。WMS管理所有应用程序窗口(Window)的Create、Display、Update、Destory。 因为Android系统中只有一个WMS&#xff08;运行在SystemServer进程&#xff09;&#xff0c;可以称其为…

TCP报文头(首部)详解

本篇文章基于 RFC 9293: Transmission Control Protocol (TCP) 对TCP报头进行讲解&#xff0c;部分内容会与旧版本有些许区别。 TCP协议传输的数据单元是报文段&#xff0c;一个报文段由TCP首部&#xff08;报文头&#xff09;和TCP数据两部分组成&#xff0c;其中TCP首部尤其重…

用Flask搭建简单的web模型部署服务

目录结构如下&#xff1a; 分类模型web部署 classification.py import os import cv2 import numpy as np import onnxruntime from flask import Flask, render_template, request, jsonifyapp Flask(__name__)onnx_session onnxruntime.InferenceSession("mobilen…

ES6 面试题 | 14.精选 ES6 面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

NoSQL 数据库有哪些典型应用?

前面的内容介绍了数据库读写分离和分库分表相关知识&#xff0c;都是针对关系型数据库的&#xff0c;即通常说的 RDBMS。除了关系型数据库&#xff0c;NoSQL 在项目开发中也有着越来越重要的作用&#xff0c;与此同时&#xff0c;NoSQL 相关的内容也是面试的常客。今天我们一起…

单链表详解(附图解,结尾附全部源码)

下面开始带大家对单链表的增删查改进行图解 首先给大家介绍一下链表 链表就是每一个结构体中包含一个数据和一个结构体指针&#xff0c;这个指针就相当于锁链的作用将下一个结构体给锁住&#xff0c;但是每个结构体的空间是相对独立的。 图解&#xff1a; 1 首先实现尾插 如果…

智能优化算法应用:基于热交换算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于热交换算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于热交换算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.热交换算法4.实验参数设定5.算法结果6.参考文…