Stable diffusion 简介

Stable diffusion 是 CompVis、Stability AI、LAION、Runway 等公司研发的一个文生图模型,将 AI 图像生成提高到了全新高度,其效果和影响不亚于 Open AI 发布 ChatGPT。Stable diffusion 没有单独发布论文,而是基于 CVPR 2022 Oral —— 潜扩散模型 (Latent Diffusion Model, LDM)。

Stable diffusion 模型并不是直接在像素空间上操作图像,而是在隐空间中进行操作:通过将原始数据编码到更小的隐空间中,让 U-Net 可以在低维表示上添加和删除噪声,这样可以显著提高模型的训练和生成效率。此外,stable diffusion 还引入了 CLIP,将输入文本的特征与模型生成的图像做比对以输出最符合文本的图像。

在这里插入图片描述

目录

  • 一. 背景
  • 二. Stable diffusion 模型
    • 1. Autoencoder
    • 2. CLIP text encoder
    • 3. U-Net
  • 三. 实验

一. 背景

在 Stable Diffusion 诞生之前,AIGC 最主要的模型是生成对抗网络 GAN,通过同时训练两个网络进行对抗训练,实现高质量的图像生成。GAN 让超越训练数据已有内容成为可能,从而打开了一个全新领域 —— 生成建模。1 然而,在经历了一段蓬勃发展后,GAN 开始暴露出一些瓶颈和弊病:图像生成缺乏多样性、模式崩溃、多模态分布学习困难、训练时间长,GAN 由此进入瓶颈期。

Diffusion 的出现打破了 AIGC 的僵局,通过向数据中添加噪声再去噪恢复数据,从而实现图像的自由生成。Diffusion 自 DDPM 的提出就迅速收获大量好评,现在大火的最 GLIDE、DALLE2、Imagen,以及一系列的 Image Editing 方法,都是基于 diffusion。然而,diffusion 的训练时间和经济成本都极其昂贵,于是出现了 stable diffusion。

Stable diffusion 模型不直接在像素空间上操作图像,而是在隐空间中进行操作。通过将原始数据编码到更小的隐空间中,让 U-Net 可以在低维表示上添加和删除噪声,这样能够加速 U-Net 处理数据的速度,实现更高的生成效率。2
在这里插入图片描述

为了实现文生图的效果,stable diffusion 还在 U-Net 中引入了 CLIP text encoder 提取文本特征,从而生成更加符合文本的图像。

二. Stable diffusion 模型

Stable diffusion 是一个基于 latent 的扩散模型,采用一个 autoencoder 将图像压缩到 latent 空间,然后用扩散模型来生成图像的 latents,最后送入 decoder 模块就可以得到生成的图像。Stable diffusion 还在 U-Net 中引入 text condition 实现了基于文本的生成图像。3
在这里插入图片描述

Stable diffusion 模型的主体结构如图所示,主要包括三个模型:

  • Autoencoder:将图像在 pixel 空间和 latent 空间之间压缩和解压缩;
  • CLIP text encoder:提取输入文本的 text embeddings 传入 U-Net;
  • U-Net:扩散模型的主体,用来实现文本引导下的图像 latents 生成。

1. Autoencoder

为了让 stable diffusion 能够在像素空间和隐空间之间做变换,引入了编码器和解码器:

  • 编码器 E E E:将全尺寸图像编码为低维潜在数据;
  • 解码器 D D D:将潜在数据解码回全尺寸图像;
    在这里插入图片描述

Autoencoder 将 H × W × 3 H \times W \times 3 H×W×3 大小的 RGB 图像 x x x 压缩成 h × w × c h \times w \times c h×w×c 大小的隐空间表示, f = H / h = W / w f = H/h = W/w f=H/h=W/w 称为下采样率 (downsampling factor)。LDM 尝试了 f = 2 m f=2^m f=2m 的不同取值,权衡生成质量和收敛速度。

2. CLIP text encoder

为了实现文生图的效果,stable diffusion 使用预训练的 CLIP text encoder 提取文本特征 text embeddings 传入 U-Net,以指导其图像生成。Stable diffusion 采用的 CLIP text encoder 是 clip-vit-large-patch14 的 text encoder,是一个 12 层、768 特征维度的 transformer 模型,得到 77x768 特征维度的 text embeddings,将其送入 U-Net 的 Cross-Attention 中。
在这里插入图片描述

图中的开 switch 用于在不同类型的输入之间进行调节:

  • 对于文本输入,首先使用语言模型 τ θ \tau_{\theta} τθ 将文本转换为嵌入向量,然后通过 Multi-Head Attention 映射到 U-Net;
  • 对于其他模态的对齐输入(例如语义映射、图像、修复),使用连接来完成调节;

3. U-Net

U-Net 是扩散模型的主体,用来实现文本引导下的图像 latents 生成。为了实现文本指导,stable diffusion 通过使用 cross-attention 机制增强 U-Net,将内部扩散模型转变为条件图像生成器。

Stable Diffusion 的训练目标与 diffusion 的目标较为相似,需要改进的地方是 4

  • 图像 x t x_t xt 变为了隐空间中的变量 z t z_t zt
  • U-Net 中添加了条件输入 τ θ ( y ) \tau_{\theta}(y) τθ(y)

因此 Stable Diffusion 的损失函数如下:
L L D M = E t , z 0 , ϵ , y [ ∥ ϵ − ϵ θ ( z t , t , τ θ ( y ) ) ∥ 2 2 ] L_{\mathrm{LDM}}=\mathbb{E}_{t, z_0, \epsilon, y}\left[\left\|\epsilon-\epsilon_\theta\left(z_t, t, \tau_\theta(y)\right)\right\|_2^2\right] LLDM=Et,z0,ϵ,y[ϵϵθ(zt,t,τθ(y))22]

更多介绍见 stable diffusion原理解读通俗易懂,史诗级万字爆肝长文,喂到你嘴里。

三. 实验


  1. Stable Diffusion原理详解 ↩︎

  2. Diffusion 和Stable Diffusion的数学和工作原理详细解释 ↩︎

  3. 文生图模型之Stable Diffusion ↩︎

  4. Stable Diffusion 超详细讲解 ↩︎

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

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

相关文章

048:利用vue-video-player播放m3u8

第048个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

ThingWorx 9.2 Windows安装

参考官方文档安装配置 1 PostgreSQL 13.X 2 Java, Apache Tomcat, and ThingWorx PTC Help Center 参考这里安装 数据库 C:\ThingworxPostgresqlStorage 设置为任何人可以full control 数据库初始化 pgadmin4 创建用户twadmin并记录口令password Admin Userpostgres Thin…

基础宠物商店管理系统(Java)大一程序设计

一.开发环境 Windows 11 -- JDK 21 -- IDEA 2021.3.3 二.需求 三.代码部分 //创建一个宠物类,被另外两类继承public class Pet {private String name;private int age;private String gender;private double cost0;//买进价格private double sellprice0;//卖出价…

微信小程序制作-背单词的小程序制作

微信小程序–背单词的 好久没有发过文章了,但是不代表着我不去学习了喽,以下是我最近做的东西,前端的UI由朋友设计的,目前这个是前端使用的是微信小程序后端是Python的一个轻量型框架,FastApi,嗯&#xff…

Vue之模板语法

模板语法有两大类&#xff1a; 1.插值语法 2.指令语法 让我为大家介绍一下吧&#xff01; 一、插值语法 功能:用于解析标签体内容。 写法: {{xxx}}&#xff0c;xxx是js表达式&#xff0c;且可以直接读取到data中的所有属性。 举个例子&#xff1a; <!DOCTYPE html> &l…

Faster Transformer

Faster Transformer FasterTransformer包含transformer块的高度优化版本的实现&#xff0c;该块包含编码器和解码器部分。基于高效率的开发语言和工具&#xff1a; C, CUDA, cuBLAS and cuBLASlt支持的模型数据格式&#xff1a;FP32, FP16, BF16, INT8 (limited models) and F…

C现代方法(第27章)笔记——C99对数学计算的新增支持

文章目录 第27章 C99对数学计算的新增支持27.1 <stdint.h>: 整数类型(C99)27.1.1 <stdint.h>类型27.1.2 对指定宽度整数类型的限制27.1.3 对其他整数类型的限制27.1.4 用于整型常量的宏 27.2 <inttype.h>: 整数类型的格式转换(C99)27.2.1 用于格式指定符的宏…

体系化学习运筹学基础算法的实践和总结

文章目录 引言目标设计目标实践文章汇总经验总结一则预告 引言 眨眼间已经12月了&#xff0c;眼看着2023年马上要过完了。 女朋友最近总说&#xff0c;工作以后感觉时间过的好快。事实上&#xff0c;我也是这么认为的。年纪越大&#xff0c;越会担心35岁危机的降临。所以&…

kafka中消息key作用与分区规则关系

在 kafka 2.0.0 的 java sdk 中 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka_2.12</artifactId><version>2.0.0</version> </dependency> ProducerRecord 中类注释如下 A key/value pair to be sen…

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

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

2023/12/10总结

学习 WebSocket 一共四种方法&#xff0c;传递数据是要通过JSON格式传递 前端 onopen 在连接时 onmessage 收到消息时 通常携带参数 event &#xff0c;event.data 是消息 onerror 发生错误时 onclose 关闭连接时 发送消息 需要安装 vue-native-websocket 包 pnpm i vue-n…

stu06-VSCode里的常用快捷键

Alt Z&#xff1a;文字自动换行。当一行的文字太长时&#xff0c;可以使用。或者查看→自动换行Alt Shift ↓ &#xff1a;快速复制当前行到下一行Alt Shift ↑ &#xff1a;快速复制当前行到上一行Alt B&#xff1a;在默认浏览器中打开当前.html文件Ctrl Enter&#xf…