Stable Diffusion系列(六):原理剖析——从文字到图片的神奇魔法(潜空间篇)

news2024/10/5 16:21:44

文章目录

    • LDM
      • 概述
      • 原理
      • 模型架构
        • 自编码器模型
        • 扩散模型
        • 条件引导模型
        • 图像生成过程
      • 实验结果
        • 指标定义
          • IS(越大越好)
          • FID(越小越好)
        • 训练成本与采样质量分析
        • 不带条件的图片生成
        • 基于文本的图片生成
        • 基于语义框的图片生成
        • 基于语义图的图片生成
        • 超分辨率图像生成
        • 图像重绘
    • 其他文生图模型
      • DALL-E
      • Imagen

在上一章,我们了解了扩散模型的基本原理,但它离实现Stable Diffusion的文生图或图生图功能显然还有一段距离,那就是如何将文字或图片信息融入到生成图片的过程中,比如,像下图这样?
在这里插入图片描述
除此之外,扩散模型的一个重要特点就是维度的不变性,这就限制了生成图片大小的上限,原始论文中最大的图片生成大小也就是256×256,这意味着所有的中间表示也是这个尺度,如果再大一点,显卡和耐心可能就不够用了。

LDM

为了解决上述两个难题,我们需要在隐空间中重新审视扩散过程,并基于此重新设计生成模型,这也是Stable Diffusion的直接原理。这里我们要读一篇发表于CVPR2022的论文:《High-Resolution Image Synthesis with Latent Diffusion Models》

概述

论文提出了一个名为Latent Diffusion Models (LDM)的新模型,旨在减少直接在像素空间中训练扩散模型所带来的计算复杂度。论文的主要内容和贡献如下:

  • 提出了两阶段训练方法:首先训练一个自动编码器,学习一个低维的潜在空间表示,然后在自动编码器的潜在空间中训练扩散模型。这显著降低了训练和推理的计算复杂度。
  • 引入交叉注意力机制:通过将交叉注意力层添加到UNet中,LDM可以处理各种条件输入,如文本或语义布局,并实现高质量的图像生成。
  • 在多个任务上取得了最先进或竞争性的性能,包括无条件图像生成、文本到图像生成、语义合成、超分辨率和图像修复等。相比像素级扩散模型,LDM的训练和推理成本大大降低。

原理

作者认为任何生成性学习方法都有两个主要阶段:感知压缩语义压缩

感知压缩指的是在训练过程中,自动编码器通过学习去除图像中不太重要的细节信息,保留基本的结构和语义信息。在这个过程中,图像的高频细节信息被过滤掉,留下低频语义信息。这种压缩方式对减少计算复杂度和模型参数是有帮助的。

语义压缩则是指生成模型学习语义和概念层面的信息,通过生成过程来弥补感知压缩过程中丢失的细节。这种压缩方式能够有效提升模型的生成能力,同时减少对不重要的细节的建模。

两种压缩相结合,也就是自编码器和扩散过程相结合,也就有了LDM模型。

模型架构

模型的总体架构如下图所示,包括了左侧用来实现感知压缩的变分自编码器模型(VAE)、中间在潜空间完成扩散过程的Unet模型,以及右侧的条件引导模型。
在这里插入图片描述

自编码器模型

给定原始图像 x ∈ R H × W × 3 x \in R^{H \times W \times 3} xRH×W×3,编码器 E \mathcal{E} E将其编码为隐空间中的表示,即 z = E ( x ) z=\mathcal{E}(x) z=E(x),其中 z ∈ R h × w × c z \in R^{h \times w \times c} zRh×w×c。这里我们定义降采样率 f = H / h = W / w f=H/h=W/w f=H/h=W/w

解码器 D \mathcal{D} D用来实现从隐空间到像素空间的转换,即 x ~ = D ( z ) = D ( E ( x ) ) \tilde{x}=\mathcal{D}(z)=\mathcal{D}(\mathcal{E}(x)) x~=D(z)=D(E(x))

自编码器单独训练,单独的图片数据集即可训练完成。
在这里插入图片描述

扩散模型

这一段非常简单,先看看原始的扩散公式
在这里插入图片描述
再看看潜空间版,区别一目了然
在这里插入图片描述
下面是一个训练过程中的示意图
在这里插入图片描述

条件引导模型

所谓的条件引导,就是输入文字或者图片后,引导模型生成与之相关的图片,也就是文生图或图生图的过程。

如果将上述这些条件统一表述为 y y y,那么去噪自编码器需要重写为条件去噪自编码器,即 ϵ θ ( z t , t , y ) \epsilon_\theta\left(z_t, t, y\right) ϵθ(zt,t,y)

那这个条件如何作用呢?对于输入的条件 y y y,使用域自适应的编码器 τ θ \tau_\theta τθ得到其中间表示 τ θ ( y ) ∈ R M × d τ \tau_\theta(y) \in \mathbb{R}^{M \times d_\tau} τθ(y)RM×dτ,再利用自注意力机制将其与UNet融合,其中 φ i ( z t ) ∈ R N × d ϵ i \varphi_i\left(z_t\right) \in \mathbb{R}^{N \times d_\epsilon^i} φi(zt)RN×dϵi是UNet的中间层参数。

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

以Stable Diffusion为例,它使用下图所示的基于图文相似度配对而成的CLIP ViT-L/14 (PMLR2021论文:Learning Transferable Visual Models From Natural Language Supervision)作为文本编码器 τ θ \tau_\theta τθ。这个编码器会将句子的长度限制为最大77个字符,如果长度超出,模型会对其进行截断。编码后输出的矩阵维度是77x768,其中768是隐藏层的大小。
如果输入条件包含图片,那么可以用自编码器中的编码器部分作为图片编码器 τ θ \tau_\theta τθ

在这里插入图片描述

最终优化的目标函数如下,其中 τ θ \tau_\theta τθ ϵ θ \epsilon_\theta ϵθ被联合优化
在这里插入图片描述

图像生成过程

在训练完成后,模型在隐空间随机产生一个噪音,与输入条件相结合,经过扩散过程去噪之后输入解码器,得到一张图像。
在这里插入图片描述
你可能会疑惑,为什么使用Stable Diffusion的时候,可以看到一个图片由模糊变清晰的过程呢?隐空间的表示难道不是肉眼不可见的吗?其实这很简单,让每一步去噪后的隐空间表示都由解码器处理一遍即可,但要注意并不是把它直接输入解码器,而是要通过上一章的扩散公式转换成隐空间的 z 0 z_0 z0表示,再输入解码器。

实验结果

指标定义
IS(越大越好)

nception Score(IS)是一个用于评估生成模型(如生成对抗网络GANs)性能的指标。它是由Tim Salimans等人于2016年在论文《Improved Techniques for Training GANs》中提出的。Inception Score的主要思想是使用一个预训练的Inception模型(通常是一个在ImageNet数据集上训练的深度卷积网络)来评估生成图像的质量和多样性。
Inception Score的计算步骤如下:

  1. 分类概率:首先,将生成的图像输入到预训练的Inception模型中,得到每个图像属于ImageNet数据集中1000个类别的概率分布。

  2. 图像质量:对于每个生成的图像,选择概率最高的类别,计算该类别的概率(即图像被正确分类的置信度)。这个过程反映了图像的质量,因为清晰的图像应该有一个高的最大概率。

  3. 图像多样性:计算所有生成图像的平均分类概率的熵。熵越高,说明生成的图像属于不同类别的分布越均匀,即图像的多样性越好。

  4. 综合评分:最后,将图像质量的指标和图像多样性的指标相乘,得到最终的Inception Score。公式可以表示为:

    I S = e x p ( E x [ D K L ( p ( y ∣ x ) ∣ ∣ p ( y ) ) ] ) IS = exp(\mathbb{E}_x[D_{KL}(p(y|x) || p(y))]) IS=exp(Ex[DKL(p(yx)∣∣p(y))])
    其中, p ( y ∣ x ) p(y|x) p(yx) 是模型对图像 x x x的分类概率分布, p ( y ) p(y) p(y)是所有图像的平均分类概率分布, D K L D_{KL} DKL是KL散度,用于衡量两个概率分布的差异。

Inception Score的一个缺点是它主要关注图像的多样性,而不是图像的真实性。因此,即使生成的图像非常多样,但如果不真实,Inception Score也可能很高。为了解决这个问题,研究人员提出了其他指标,如Fréchet Inception Distance (FID),它同时考虑了图像的质量和真实性。

FID(越小越好)

IFréchet Inception Distance (FID) 是一种用于评估生成模型(如生成对抗网络 GANs)生成图像质量的指标。FID 通过比较生成图像的特征分布与真实图像的特征分布之间的差异来衡量图像的真实性。FID 值越低,表明生成图像的质量越高,因为它们在特征空间中与真实图像更接近。
FID 的计算步骤如下:

  1. 特征提取:首先,使用一个预训练的 Inception-v3 模型(通常在 ImageNet 数据集上训练)来提取图像的特征。这个模型在最后一个池化层之前有一个瓶颈层,可以输出一个 2048 维的特征向量。
  2. 计算特征向量:对于一组真实图像和一组生成图像,分别计算它们通过 Inception-v3 模型得到的特征向量的平均值 μ \mu μ和协方差矩阵 Σ \Sigma Σ
  3. Fréchet 距离:然后,计算两个特征分布之间的 Fréchet 距离。这个距离是一个统计距离,用于衡量两个多元高斯分布之间的差异。Fréchet 距离定义为两个分布的均值之间的欧氏距离和它们协方差矩阵之间的加权几何距离的平方根。
    F I D = ∥ μ 1 − μ 2 ∥ 2 + T r ( Σ 1 + Σ 2 − 2 ( Σ 1 Σ 2 ) 1 / 2 ) FID = \|\mu_1 - \mu_2\|^2 + Tr(\Sigma_1 + \Sigma_2 - 2(\Sigma_1\Sigma_2)^{1/2}) FID=μ1μ22+Tr(Σ1+Σ22(Σ1Σ2)1/2)
    其中, μ 1 \mu_1 μ1 μ 2 \mu_2 μ2分别是真实图像和生成图像的特征向量的平均值, Σ 1 \Sigma_1 Σ1 Σ 2 \Sigma_2 Σ2是它们的协方差矩阵, T r Tr Tr表示矩阵的迹。

FID 的优势在于它同时考虑了生成图像的多样性和真实性,因为它比较了整个特征分布而不是单个图像。FID 值低意味着生成图像不仅在视觉上接近真实图像,而且在统计上也非常相似。因此,FID 是评估 GANs 和其他生成模型性能的一个非常有用的工具,其示意图如下。
在这里插入图片描述

训练成本与采样质量分析

分析了不同降采样率 f f f对模型训练成本和采样质量的影响。结果表明,LDM-4和LDM-8在下采样率与采样质量之间达到了平衡,训练成本低,采样质量高。
在这里插入图片描述
在这里插入图片描述

不带条件的图片生成

下面是降采样率为4的LCM模型在不同数据集上的生成指标和实际效果
在这里插入图片描述
在这里插入图片描述

基于文本的图片生成

论文中使用BERT-tokenizer和transformer作为文本域的 τ θ \tau_\theta τθ,其指标和效果如下。
在这里插入图片描述
在这里插入图片描述

基于语义框的图片生成

使用来自OpenImages的带语义框标注的图像作为数据集训练,并在coco上微调。
在这里插入图片描述
在这里插入图片描述

基于语义图的图片生成

这一块的亮点主要在于它在生成图片时在分辨率上有泛化性,可以生成比训练分辨率更大的图片。
在这里插入图片描述

超分辨率图像生成

输入的是一个低分辨率图片,并且 τ θ \tau_\theta τθ仅做了保持原状的操作,除了用指标,还使用了人为打分来评估效果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图像重绘

重绘任务(Inpainting task)通常指的是图像修复或图像补全的任务。这个任务的目标是填充或修复图像中的缺失部分,使得修复后的图像在视觉上尽可能自然和连贯。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

其他文生图模型

根据上面所解释的Stable Diffusion模型架构,其实可以抽象出文生图模型的通用结构,它包含三部分,一个是文本编码器,一个是从噪音开始的中间产物生成模型,一个是将中间产物映射回像素空间的解码器。下面就简单介绍一下其他文生图模型的结构。
在这里插入图片描述

DALL-E

DALL-E的名称是“DAL”和“E”的组合,其中“DAL”代表“扩散变换自回归解码器”(Diffusion Autoregressive Decoder),而“E”代表“变换器”(Encoder),这是DALL-E模型中使用的两种主要神经网络架构。
在这里插入图片描述

Imagen

Imagen是基于扩散模型(diffusion models)构建的,包括小图生成和大图上采样两步。
在这里插入图片描述

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

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

相关文章

金蝶云星空——用递归SQL查询物料分组

应用场景: 金蝶物料分组为树形结构,需要根据SQL查询同步到第三方系统中。 技术实现 用递归CTE按照树状结构展开物料分组 with cte as( select 0 as 物料分组层级,t1.FID,case when isnull(t1.FFULLPARENTID,) then .CAST(t1.FID AS VARCHAR(…

K8s进阶之路-核心概念/架构:

架构:Master/Node Master组件--主控节点{ 负责集群管理(接收用户事件转化成任务分散到node节点上)} Apiserver: 资源操作的唯一入口,提供认证、授权、API注册和发现等机制 Scheduler : 负责集群资源调度&am…

K8s进阶之路-安装部署K8s

参考:(部署过程参考的下面红色字体文档链接就可以,步骤很详细,重点部分在下面做了标注) 安装部署K8S集群文档: 使用kubeadm方式搭建K8S集群 GitBook 本机: master:10.0.0.13 maste…

三防工业平板丨亿道加固平板定制丨三防平板电脑丨提升后勤管理

企业的后勤管理对于运作高效的商业模式至关重要。随着科技的不断发展,加固平板成为提升企业后勤水平的一项关键措施。本文将探讨加固平板在企业后勤管理中的应用和优势,并阐述如何利用这一技术提升企业的运营效率和竞争力。 一、三防加固平板的定义和功能…

通用二进制方式安装MySQL8.0.x

一、必要说明 1、系统:openEuler操作系统 2、版本:MySQL - 8.0.36 3、下载地址:https://dev.mysql.com/get/Downloads/MySQL-8.0 二、安装步骤 1、下载glibc版本的Mysql [rootnode2 ~]# wget -c https://dev.mysql.com/get/Downloads/MySQ…

《乱弹篇(十六)知不言》

日本电影《我的男人》,是伦理情色类型片。故事讲述,一个小姑娘在地震后失去了亲人,她被远房亲戚(一位消防员收养)。 图:来源电影《我的男人》广告 两人一起生活,难免日久生情,于是便…

【Jvm】运行时数据区域(Runtime Data Area)原理及应用场景

文章目录 前言:Jvm 整体组成 一.JDK的内存区域变迁Java8虚拟机启动参数 二.堆0.堆的概念1.堆的内存分区2.堆与GC2.1.堆的分代结构2.2.堆的分代GC2.3.堆的GC案例2.4.堆垃圾回收方式 3.什么是内存泄露4.堆栈的区别5.堆、方法区 和 栈的关系 三.虚拟机栈0.虚拟机栈概念…

Redis系列学习文章分享---第一篇(Redis快速入门之初始Redis--NoSql+安装redis+客户端+常用命令)

目录 今天开始进入Redis系列学习分享1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结 1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启 1.4.Re…

防御保护--防火墙综合实验

防御保护--防火墙综合实验 一、实验需求二、实验配置1.配置IP地址及划分安全区域2.FW2和FW4组成主备模式的双机热备2.1 检查双机热备状态 3.DMZ区存在两台服务器,现在要求生产区的设备仅能在办公时间访问,办公区的设备全天都可以访问3.1 测试&#xff1a…

计算机专业必看的几部电影

计算机专业必看的几部电影 计算机专业必看的几部电影,就像一场精彩的编程盛宴!《黑客帝国》让你穿越虚拟世界,感受高科技的魅力;《社交网络》揭示了互联网巨头的创业之路,《源代码》带你穿越时间解救世界,…

区块链游戏解说: DeFi Kingdoms

数据源: DeFi Kingdoms Dashboard 作者:lesleyfootprint.network 编译:mingfootprint.network 什么是 DeFi Kingdoms DeFi Kingdoms 是一个跨链奇幻 RPG 游戏,拥有精美的像素艺术,将资源加密并与 DeFi 协议集成&am…

vue3 之 商城项目—封装SKU组件

认识SKU组件 SKU组件的作用 产出当前用户选择的商品规格,为加入购物车操作提供数据信息,在选择的过程中,组件的选中状态要进行更新,组件还要提示用户当前规格是否禁用,每次选择都要产出对应的sku数据 SKU组件的使用 …

每日学习总结20240219

每日总结 20240219 1.文件类型.csv CSV文件是一种以逗号分隔值(Comma-Separated Values)为标记的文本文件,它可以用来存储表格数据。每一行表示一条记录,而每一条记录中的字段则使用逗号或其他特定的分隔符进行分隔。 常用场景…

Linux第61步_“buildroot”构建根文件系统第3步_烧写根文件系统到EMMC中_并完善开发板配置

烧录到EMMC测试,还需进一步测试和配置。 1、删除rootfs”目录下的“rootfs.tar”压缩包 打开第1个终端 输入“ls回车” 输入“cd linux/回车”,切换到“linux”目录 输入“ls回车”,列出“linux”目录下的文件和文件夹 输入“cd nfs/回…

凌华科技USB-1902数据采集卡功能增强的经典应用DAQWare for USB1902

众所周知,TLA发布了一系列功能增强的基于多功能数据采集卡的课程实验套件。日前,该系列再添新新军DAQWare for USB-1902。该系列基于ADLINK(凌华科技)USB-1902,也适用JYTEK(简仪科技)USB-69102。 USB-1902简要参数: ■ USB2.0高速…

跟无神学AI之一文读尽Sora

openAI发布视频生成模型Sora,意味着人类距离AI模拟世界又近了一步,流浪地球2中数字人女儿也是对未来科技发展的一个缩影。 作为最具有代表性的大模型公司,openAI的任何一个产品都具有一定的价值,代表着AI的前沿发展方向。 博主今…

人工智能算法:推动未来的技术引擎

随着科技的飞速进步,人工智能(AI)已经渗透到我们生活的方方面面,从智能家居到自动驾驶汽车,再到医疗和金融等领域,AI算法的应用正日益广泛。本文将带你深入了解人工智能算法的魅力、种类以及未来趋势,探讨它们如何推动…

林浩然与杨凌云的Java世界奇遇记:垃圾回收大冒险

林浩然与杨凌云的Java世界奇遇记:垃圾回收大冒险 The Java Adventure Chronicles of Lin Haoran and Yang Lingyun: Garbage Collection Odyssey 在一个充满0和1代码森林的世界里,住着两位勇敢的程序员侠侣——林浩然和杨凌云。林浩然是个身怀Java绝技的…

解决 jenkins 插件下载失败问题 配置 jenkins 插件中心为国内镜像地址

从 jenkins 官网上下载的 jenkins,在安装的过程中,会有安装插件一环: 第一个为默认安装,第二个为手动 选择默认安装之后,会遇到: 安装插件失败,或者卡在安装插件这个地方非常久,久…

C++项目 -- 高并发内存池(五)释放内存过程

C项目 – 高并发内存池(五)释放内存过程 文章目录 C项目 -- 高并发内存池(五)释放内存过程一、Thread Cache释放内存1.完善FreeList功能2.Thread Cache释放内存 二、Central Cache释放内存三、Page Cache释放内存四、释放内存过程…