stable diffusion 原理是什么?

news/2024/7/10 19:39:04 标签: stable diffusion, AI作画, 人工智能

这篇文章主要介绍了Stable Diffusion,这是一种用于AI绘画的算法,它是由CompVis和Runway团队在2021年12月提出的“潜在扩散模型”(LDM/Latent Diffusion Model)的变体,基于2015年提出的扩散模型(DM/Diffusion Model)。文章中将深入介绍Stable Diffusion的技术细节,但是不会出现太多的数学公式或未解释的概念名词。

stable diffusion 早已不是一个新鲜话题,从 2022 年 8 月开源以来,有关 stable diffusion 的原理介绍、应用方法的资料数不胜数,我在之前 ai绘画是怎么画的?ai绘画算法揭秘、一文讲透ai作画原理技术 两篇文章中也介绍过 AI 绘画的通用原理,但没有深入到 Stable Diffusion 的技术细节,今天就来填这个坑。

本文依旧是科普文,文中尽量不会出现数学公式或者未经解释的概念名词,大家可以放心食用。我会先用一段话介绍 stable diffusion 的算法原理,这段话里出现的概念名词后文会逐一解释。

Stable Diffusion 算法上来自 CompVis 和 Runway 团队于 2021 年 12 月提出的 “潜在扩散模型”(LDM / Latent Diffusion Model),这个模型又是基于 2015 年提出的扩散模型(DM / Diffusion Model)。参考论文中介绍算法核心逻辑的插图,Stable Diffusion 的数据会在像素空间(Pixel Space)、潜在空间(Latent Space)、条件(Conditioning)三部分之间流转,其算法逻辑大概分这几步(可以按 ↩️ 顺序对照下图):

  1. 图像编码器将图像从像素空间(Pixel Space)压缩到更小维度的潜在空间(Latent Space),捕捉图像更本质的信息;
  2. 对潜在空间中的图片添加噪声,进行扩散过程(Diffusion Process);
  3. 通过 CLIP 文本编码器将输入的描述语转换为去噪过程的条件(Conditioning)
  4. 基于一些条件对图像进行去噪(Denoising)以获得生成图片的潜在表示,去噪步骤可以灵活地以文本、图像和其他形式为条件(以文本为条件即 text2img、以图像为条件即 img2img);
  5. 图像解码器通过将图像从潜在空间转换回像素空间来生成最终图像。

画宇宙 - <a class=人工智能 AI 绘画网站" height="1160" src="https://img-blog.csdnimg.cn/img_convert/b2f5e7654ab02d87c05d0523ae6e5ae0.png" width="1200" />

扩散模型(DM / Diffusion Model)

“扩散” 来自一个物理现象:当我们把墨汁滴入水中,墨汁会均匀散开;这个过程一般不能逆转,那 AI 可以做到么?(AI:我太难了)

画宇宙 - <a class=人工智能 AI 绘画网站" height="1200" src="https://img-blog.csdnimg.cn/img_convert/362efff7a6115b09d89813aa7e5ab28c.png" width="1200" />

当墨汁刚滴入水中时,我们能区分哪里是墨哪里是水,信息是非常集中的;当墨汁扩散开来,墨和水就难分彼此了,信息是分散的。类比于图片,这个墨汁扩散的过程就是图片逐渐变成噪点的过程:从信息集中的图片变成信息分散、没有信息的噪点图很简单,逆转这个过程就需要 AI 的加持了。

研究人员对图片加噪点,让图片逐渐变成纯噪点图;再让 AI 学习这个过程的逆过程,也就是如何从一张噪点图得到一张有信息的高清图。这个模型就是 AI 绘画中各种算法,如 Disco Diffusion、Stable Diffusion 中的常客扩散模型(Diffusion Model)。

画宇宙 - <a class=人工智能 AI 绘画网站" height="1048" src="https://img-blog.csdnimg.cn/img_convert/d70722349935ea0457dd41d48783097c.png" width="1200" />

潜在扩散模型(LDM / Latent Diffusion Model)

在计算机眼中,一张 512x512 分辨率的图片,就是一组 512 * 512 * 3 的数字,如果直接对图片进行学习,相当于 AI 要处理 786432 维的数据,这对算力、计算机性能要求很高。

画宇宙 - <a class=人工智能 AI 绘画网站" height="662" src="https://img-blog.csdnimg.cn/img_convert/3c497f9b492aceb88e9118c1fae5e2a9.png" width="1200" />

CompVis 的研究人员提出,可以将图片映射到潜在空间(Latent Space)后进行扩散和逆扩散学习。如何理解 “潜在空间” 呢?大家都有自己的身份证号码,前 6 位代表地区、中间 8 位代表生日、后 4 位代表个人其他信息。放到空间上如图所示,这个空间就是「人类潜在空间」。

画宇宙 - <a class=人工智能 AI 绘画网站" height="1200" src="https://img-blog.csdnimg.cn/img_convert/57034b7224352c55e8c9f857aded719d.png" width="1200" />

这个空间上相近的人,可能就是生日、地区接近的人。人可以对应为这个空间的一个点,这个空间的一个点也对应一个人。如果在空间中我的附近找一个点,对应的人可能跟我非常相似,没准就是我失散多年的兄弟 hh

AI 就是通过学习找到了一个「图片潜在空间」,每张图片都可以对应到其中一个点,相近的两个点可能就是内容、风格相似的图片。

画宇宙 - <a class=人工智能 AI 绘画网站" height="720" src="https://img-blog.csdnimg.cn/img_convert/45634986ee4ba4d39c4a19a04fcf9ad0.png" width="1200" />

同时这个 “潜在空间” 的维度(比如可能是 768)远小于 “像素维度”(786432),AI 处理起来会更加得心应手,在保持效果相同甚至更好的情况下,潜在扩散模型对算力、显卡性能的要求显著降低。这也就是为什么 Stable Diffusion 能在消费级显卡上运行,从而让 AI 绘画 “飞入寻常百姓家”。

说句题外话,我非常想知道为什么 Stable Diffusion 叫 Stable Diffusion,但没找到官方说明,这里做一个猜测:之所以这个基于 Latent Diffusion 的模型叫 Stable Diffusion,可能一方面表示这个模型效果很稳定(Stable),另一方面是致敬一下(算力 & 数据上的)金主爸爸 Stability.ai。

CLIP(Contrastive Language-Image Pre-Training)

如果让你把左侧三张图和右侧三句话配对,你可以轻松完成这个连线。但对 AI 来说,图片就是一系列像素点,文本就是一串字符,要完成这个工作可不简单。

画宇宙 - <a class=人工智能 AI 绘画网站" height="1200" src="https://img-blog.csdnimg.cn/img_convert/c7b72bc3732cefd3e09b05d2c7cc4017.png" width="1200" />

这需要 AI 在海量「文本-图片」数据上学习图片和文本的匹配。图中绿色方块是「图片潜在空间」的 N 张图片,紫色方块是「文本潜在空间」的 N 句描述语。AI 会努力将对应的 I1 与 T1 (蓝色方块)匹配,而不是 I2 与 T3 (灰色方块)匹配。这个 AI 就是广泛被用在 AI 作画中的 CLIP(Contrastive Language-Image Pre-Training / 对比式语言-文字预训练)。

画宇宙 - <a class=人工智能 AI 绘画网站" height="760" src="https://img-blog.csdnimg.cn/img_convert/2163c6f398023c72c4e7bcaffd611ce8.png" width="1070" />

当 AI 能成功完成这个连线,也就意味着 AI 建立了「文字潜在空间」到「图片潜在空间」的对应关系,这样才能通过文字控制图片的去噪过程,实现通过文字描述左右图像的生成。

画宇宙 - <a class=人工智能 AI 绘画网站" height="1058" src="https://img-blog.csdnimg.cn/img_convert/283fd62306912c0e4cf71ace05437446.png" width="1200" />

总结

本文对一些技术细节做了简化,只保留 Stable Diffusion 最核心的算法逻辑为大家做了简明的介绍。深入理解 stable diffusion 原理,不仅有助于我们掌握 AI 绘画模型的基本原理,而且还能为我们在工作和学习中应用 AI 绘画带来更多的便利。


http://www.niftyadmin.cn/n/5415643.html

相关文章

SpringBoot和Vue 实现增删改查、分页查询、模糊查询

文章目录 前言统一的设置返回类型Vue安装axios&#xff0c;封装request查询所有的用户前端页面请求后端接口编写 条件查询前台请求后台处理请求 分页查询前台发送请求后台接受请求 新增、编辑管理员信息前台后台 删除操作前台请求后台 前言 SpringBoot实现增删改查、分页查询、…

git - 笔记

为什么要学习Git 为什么要学习Git软件 为什么学习 因为在主流开发中&#xff0c;基于互联网软件开发的项目都会使用Git软件来进行项目开发过程中的资源管理 比如人力资源 代码资源 比如前端资源 .html .java等代码资源 文档资源 像项目开发中涉及到的需求文档等 这种项目中管理…

sheng的学习笔记-AI-多分类学习:ECOC,softmax

目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 基本术语&#xff1a; 若我们欲预测的是离散值&#xff0c;例如“好瓜”“坏瓜”&#xff0c;此类学习任务称为“分类”(classification)&#xff1b; 若欲预测的是连续值&#xff0c;例如西瓜成熟度0.95、0.37&#xff0c;…

3.7号freeRtoS

1. 串口通信 配置串口为异步通信 设置波特率&#xff0c;数据位&#xff0c;校验位&#xff0c;停止位&#xff0c;数据的方向 同步通信 在同步通信中&#xff0c;数据的传输是在发送端和接收端之间通过一个共享的时钟信号进行同步的。这意味着发送端和接收端的时钟需要保持…

Python之Web开发中级教程----搭建Git环境

Python之Web开发中级教程----搭建Git环境一 Git 是目前世界上最先进的分布式版本控制系统 作用&#xff1a;代码管理。方便多人协同开发&#xff1b;方便版本控制。 安装git 单人本地仓库 建立本地仓库目录 配置个人管理信息 git config –global user.email 32356105163.com…

Baumer工业相机堡盟工业相机如何通过NEOAPISDK实现双快门采集两张曝光时间非常短的图像(C++)

Baumer工业相机堡盟工业相机如何通过NEOAPISDK实现双快门采集两张曝光时间非常短的图像&#xff08;C&#xff09; Baumer工业相机Baumer工业相机定序器功能的技术背景Baumer工业相机通过NEOAPI SDK使用定序器功能预期的相机动作技术限制定序器的工作原理 Baumer工业相机通过NE…

0 OpenHarmony开源鸿蒙NEXT星河版内核嵌入式编程

开源鸿蒙NEXT星河版内核嵌入式编程 作者将狼才鲸创建日期2024-03-08 CSDN文章阅读地址Gitee文章下载地址 一、前景提要 2024年1月18日&#xff0c;华为放出HarmonyOS NEXT 鸿蒙星河版开发者预览版本&#xff08;不是HarmonyOS NEXT版&#xff0c;是HarmonyOS NEXT星河版&…

【ViT】Vision Transformer的实现01 patch embedding

对于224*224的图像&#xff0c;将它输入到Transformer里面&#xff0c;就需要将图像展开成一系列的token&#xff0c; 如果逐像素视为token进行注意力的计算&#xff0c;难免计算量太大&#xff0c;因此一个更加合理的想法是将图像划分为一个个的patch 将每个patch进行embeddin…