超详细,AI绘画里你不得不知道的SD算法详解

2023-11-04

前言

哈喽,各位小伙伴们大家好,说到AI绘画,可谓是近几年来异军突起,犹如洪水猛兽一般,各种的本土化,商业化。但是相信也有很多朋友跟我一样,对AI绘画的原理一知半解,甚至根本不知道它是怎么工作的。这样只靠着在网上复制粘贴别人的prompt,是没有点好处的,如果你是想用它来提高你的工作效率,提升产品质量,小编我认为,有必要好好了解一下SD的工作原理,于是乎,这篇文章就诞生了。

本文也是旨在以通俗易懂的语言,转述给大家讲解Stable Diffusion生成原理。

通过本文,你将掌握以下知识:

1 Stable Diffusion原理介绍

  1. 什么是扩散(Diffusion)?

  2. 扩散(Diffusion)是怎么能被稳定(Stable)控制的?(以文生图为例)

  3. CLIP:我们输入的文字prompt是如何起作用的?

  4. UNET:扩散模型的工作原理

  5. 理解VAE的编解码过程

Stable Diffusion原理介绍

1.什么是扩散(Diffusion)?

首先,大家要明确一点的是,我们常说的什么Stable Diffusion,它的本质上其实是一种算法,而我们通过Stable Difuusion web UI在浏览器上打开的页面,其实就是stable diffusion的可视化界面,说的简单一点可以理解为部署在本地的应用,它消耗你当前设备的算力,通过算法降噪和加噪的操作。

Stable Diffusion的中文直译又称稳定扩散算法。在图像领域中,扩散算法是通过一定规则去噪(反向扩散)或加噪(正向扩散)的过程。

如下图演示的就是以prompt为a red flower做扩散的过程,我们可以从SD的工作流程中清楚的看到,从最开始的灰色噪点块、逐渐去噪到最终的清晰的整个过程:

在这里插入图片描述

2.扩散(Diffusion)是怎么能被稳定(Stable)控制的?

这里以文生图为例,给大家看一下Stable Diffusion的原理:

我们把SD抽象理解为一个大函数Fsd(prompt),即:

我们输入一段自然语义prompt,经过一系列函数运算和变化,最终输出得到的一张图片的过程。

在这里插入图片描述

3.CLIP-prompt生效的关键算法

在实际使用SD时,我们往往会选择文生图的模式去达到,生产出符合我们预期的产品。那么,在我们输入了一串prompt后,这段prompt是如何起作用的呢?

CLIP,让我们输入的prompt起作用的关键算法。它是Text Encoder算法的一种,Text Encoder从字面意思理解:是把文字转化为代码的一种算法,他的主要功能是把自然语义prompt转变为词特性向量(Embedding)。

举个例子,我在生成一张图片时输入了一串prompt:cute girl ,CLIP算法作自然语义处理的时候会根据之前被程序员调试了成百上千的训练,罗列出cute girl可能具有的哪些特征,通过不断地去噪从而得到一张符合语义的图片。

比如他们可能有big eyes,可能有Sonw white skin等等,然后这些可能得特征被转化为77个等长的token词向量,每个向量(Embedding)包含768个维度。

在这里插入图片描述

话到这里,可能会有小伙伴问了,同样的prompt,为什么你生成的图片就好看一些,我的生成出来就很丑很模糊?那是因为,当我们输入同一个prompt,我们的text encoder过程是一样,也就是你得到的词向量是一致的,但是后面的去噪算法依赖模型不同,生成的效果千差万别。

那么接下来我们来讲一下SD里非常重要的UNET算法。

4.UNET-扩散模型的工作原理

UNET,是一种根据词向量的扩散算法,他的工作原理如下图所示,在上面说到的CLIP算法会根据我们输入的prompt输出对应机器能识别的词向量(Embedding),这个Embedding也可以理解为一个函数,里面包含(Q、K、V)三个参数就好了。

这三个参数会根据我们输入的对应扩散步长,作用于UNET去噪算法的每一步,比如下图中,我设置了去噪步长为20步,可以很清楚的看到这张图逐渐扩散生成的效果。

在这里插入图片描述

这里需要注意的是,UNET去噪的时候,原理比上图描述的复杂很多,我们在实际操作SD生成产品时,往往关注它的出图时间会主观上认为,SD是一步一步去噪,就能得到对应效果的,这个观点是错误的。

有一点必须要知道,如果SD的工作原理仅仅是一步一步的去噪的话,效果往往是达到不到我们所看到的效果的,并不能精确得到描述文本的图片。

所以在这里我会稍微深入一些(注意,这里是参考了国外论坛上网友的说法以及官方文档),介绍一下Classifier Free Guidance引导方法:

为了保证我们出图的最终质量,保证prompt最终的精确性。在UNET分步去噪的时候,假设我设置的去噪步长为20,他会在每一步都生成一个有prompt特征引导的图和一个没有prompt特征引导的图,两者相减,就得到了每一个去噪步骤中单纯由文字引导的特征信号,然后将这个特征信号大很多倍,这就加强了文本引导。同时,在第N+1步去噪结束后,它还会用第N+1步去噪的信息特征减去第N部的特征,然后继续方法很多倍,这样保证prompt在每一步都能有足够权重比参与运算。

上面那一段大家看不懂也没关系,直白来说,就是用了上面提到的这个方法加强了prompt的权重。这个方法在Stable Diffusion web UI中也被直译为提示词相关性,也就是CFG,是一个常用参数,他的数值决定了生成的图与提示词的相关程度。

在这里插入图片描述

以上就是文生图的内容了。

下面我粗略的介绍一下图生图,我们在使用Stable Diffusion web UI的时候用图生图的功能,往往是给一张图,然后再输入一段prompt,假如这里将扩散步数还是设置成N=20,这时候,它的原理是先把我们提供的图进行逐步加噪,逐步提取图片信息,使它变成一张完全的噪点图,再让prompt起作用,结合上面的UNET算法逐步去噪,得到既有素材图片特征也有prompt特征的最终效果图。

5.理解VAE的编解码过程

最后我们简单来理解一下VAE编解码的过程,VAE全称变分自编码器,这里大家不需要做太多理解,只需要知道他是一个先压缩后解压的算法就好了。需要注意的是,我们上面写的UNET算法不是直接在图片上进行的,而是在”负空间“进行的,大家理解为在代码层面即可。

VAE的原理如下图所示,

在这里插入图片描述

假如我们要生成的图是512x512的,VAE算法在一开始的时候,会把它压缩到八分之一,变成64x64,然后采用在全流程中走到UNET算法的时候,会把图形数据带在噪点图中,这个过程叫Encoder,然后再走完UNET算法后,我们得到了一个带有所有图片特征的噪点图,此时VAE再进行Decoder过程,把这张图解析并放大成512x512。

好了,以上就是SD的全部工作原理了,觉得文章对你有帮助不妨点个关注吧,后续我也会持续跟进和分享其他跟AI绘画有关的文章。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

超详细,AI绘画里你不得不知道的SD算法详解 的相关文章

  • 《万字长文带你解读AIGC》系列之技术篇

    欢迎关注 CVHub 官方微信公众号 前景回顾 Welcome to back 在 万字长文带你解读AIGC入门篇 一文中 我们详细为大家介绍了AIGC的相关概念 背景及其如此火爆的原因 接下来我们将进一步深入探讨AIGC背后的技术栈 作为
  • Stable Diffusion教程

    什么是Stable Diffusion Stable Diffusion是一种潜在扩散模型 Latent Diffusion Model 能够从文本描述中生成详细的图像 它还可以用于图像修复 图像绘制 文本到图像和图像到图像等任务 简单地说
  • 任务 01、重塑视觉艺术:Midjourney AI绘画的无限可能

    1 1 任务目标 了解什么是MidJourney MidJourney公司简介 了解生成式人工智能MidJourney原理 MidJourney 能做什么 目前市面主流的Ai绘画工具有哪些 MidJourney的商业价值与企业应用 1 2
  • 最近读的AIGC相关论文思路解读

    AIGC之SD可控生成论文阅读记录 提示 本博客是作者本人最近对AIGC领域相关论文调研后 临时记录所用 所有观点都是来自作者本人局限理解 以及个人思考 不代表对 如果你也正好看过相关文章 发现作者的想法和思路有问题 欢迎评论区留言指正 既
  • 前沿探索|关于 AIGC 的「幻觉/梦游」问题

    AI语言模型的梦游是指模型产生内容与真实世界不符或者是毫无意义的情况 这种情况主要是由于语言模型缺乏真实世界的知识和语言的含义 导致模型难以理解和表达现实世界的概念和信息 这种情况在现代自然语言处理中普遍存在 尤其是在开放式生成领域的问题中
  • Stable Diffusion入门笔记(自用)

    学习视频 20分钟搞懂Prompt与参数设置 你的AI绘画 咒语 学明白了吗 零基础入门Stable Diffusion 保姆级新手教程 Prompt关键词教学 哔哩哔哩 bilibili 1 图片提示词模板 2 权重 提示词 无数字 fl
  • GPT专业应用:生成会议通知

    正文共 917 字 阅读大约需要 3 分钟 公务员 文秘必备技巧 您将在3分钟后获得以下超能力 快速生成会议通知 Beezy评级 B级 经过简单的寻找 大部分人能立刻掌握 主要节省时间 推荐人 Kim 编辑者 Linda 图片由Lexica
  • 人工智能AI工具汇总(AIGC ChatGPT时代个体崛起)

    Name Category Website Description 描述 AIGC时代 超级个体的崛起 小报童 https xiaobot net p SuperIndividual 介绍AIGC ChatGPT 使用技巧与搞钱方式 Mas
  • 用 Python 打造 AIGC 的「操作系统」

    carefree0910 carefree drawboard Infinite Drawboard in Python github com https github com carefree0910 carefree drawboard
  • 数据决定AIGC的高度,什么又决定着数据的深度?

    有人曾言 数据决定人工智能发展的天花板 深以为然 随着ChatGPT等AIGC应用所展现出的强大能力 人们意识到通用人工智能的奇点正在来临 越来越多的企业开始涌入这条赛道 在AIGC浪潮席卷全球之际 数据的重要性也愈发被业界所认同 之所以会
  • 一键换衣,任何图片局部一键AI修改,超强“魔法棒”!

    今天分享一个咱们的AI绘画工具的一个强大功能 它能够针对图片的任意局部进行一键AI修改 炒鸡强大 下面是花了几分钟修改的一张图片 原图 修改后 看出区别没有 头发颜色 裤子 项链 背景画面都发生了改变 下面就来揭秘咱是怎么操作的 首先打开软
  • window下Stable Diffusion一键安装

    轻松安装Stable Diffusion 一键搞定电脑Windows安装 AI绘图技术是当今最火热的技术之一 各种AI绘画软件也层出不穷 其中Stable Diffusion便是其中一款非常重要的 一 电脑Windows安装Stable D
  • 最全最详细ChatGPT角色预设词教程,Prompt分享

    使用指南 1 可直复制使用 2 可以前往已经添加好Prompt预设的AI系统测试使用 可自定义添加使用 雅思写作考官 我希望你假定自己是雅思写作考官 根据雅思评判标准 按我给你的雅思考题和对应答案给我评分 并且按照雅思写作评分细则给出打分依
  • ChatGPT发布一年后,搜索引擎的日子还好吗?

    导读 生成式AI 搜索引擎的终结者还是进化加速器 ChatGPT发布刚刚一年 互联网世界已经换了人间 2023年 以ChatGPT和大模型为代表的生成式AI浪潮对全球互联网 云计算 人工智能领域都带来巨大冲击 而且生成式AI在各行各业的应用
  • 法律情境扮演、逆向推理文字游戏、AIGC创作……见证AI极致生产力!

    飞桨星河社区 以飞桨和文心大模型为核心 集开放数据 开源算法 云端GPU算力及大模型开发工具于一体 在大模型范式下 为开发者提供模型与应用的高效开发环境 在成立的5年以来 已汇集660 万AI开发者 覆盖深度学习初学者 在职开发者 企业开发
  • 2023年AI领域行业洞察,看这30个统计数据就够了!

    PrimiHub 一款由密码学专家团队打造的开源隐私计算平台 专注于分享数据安全 密码学 联邦学习 同态加密等隐私计算领域的技术和内容 随着AIGC的爆火 企业越来越多地开始采用生成式人工智能 自然语言处理 NLP 和神经网络来扩展功能 增
  • 2023年度盘点:AIGC、AGI、GhatGPT、人工智能大模型必读书单

    文末送书 今天推荐几本AIGC AGI GhatGPT 人工智能大模型领域优质书籍 前言 2023年是人工智能大语言模型大爆发的一年 一些概念和英文缩写也在这一年里集中出现 很容易混淆 甚至把人搞懵 LLM Large Language M
  • 腾讯云HAI:人人都可无门槛AI作画!

    目录 前言 关于HAI HAI优势 开启HAI使用 清理资源 体验心得 结束语 参考文献 前言 随着科技的不断进步和数据驱动的时代到来 越来越多的开发者和数据研究人员需要强大的计算能力来支持他们的工作 尤其是在处理大规模数据 进行机器学习和
  • 使用 PAI-Blade 加速 StableDiffusion Fine-Tuning

    01 背景 Stable Diffusion 模型自从发布以来在互联网上发展迅猛 它可以根据用户输入的文本描述信息生成相关图片 用户也可以提供自己喜爱的风格的照片 来对模型进行微调 例如当我们输入 A photo of sks dog in
  • 年度大盘点:AIGC、AGI、GhatGPT震撼登场!揭秘人工智能大模型的奥秘与必读书单

    这里写目录标题 前言 01 ChatGPT 驱动软件开发 02 ChatGPT原理与实战 03 神经网络与深度学习 04 AIGC重塑教育 05 通用人工智能 前言 在2023年 人工智能领域经历了一场前所未有的大爆发 特别是在语言模型领域

随机推荐

  • 操作系统——文件的基本操作

    创建文件 create系统调用 进行Create系统调用时 需要提供的几个主要参数 1 所需的外存空间大小 如 一个盘块 即1KB 2 文件存放路径 D Demo 3 文件名 这个地方默认为 新建文本文档 txt 操作系统在处理Create
  • 【华为OD机试】荒岛求生【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 有一个荒岛 只有左右两个港口 只有一座桥连接这两个港口 现在有一群人需要从两个港口逃生 有的人往右逃生 有的往左逃生 如果两个人相遇 则PK 体力值大的能够打赢体力值
  • html中hover有静止的命令,我可以通过JavaScript禁用CSS:hover效果吗?

    恐怕没有一个纯JavaScript的通用解决scheme JavaScript不能closuresCSS hover状态本身 不过你可以尝试下面的替代方法 如果您不介意在HTML和CSS中进行一些操作 则无需通过JavaScript手动重置
  • linux分区方案 1t,linux CentOS WEB服务器分区方案

    分区类型 分区的实际大小 解析 SWAP分区 2G 内存为1G 一般为内存的2倍 1G 2G 最少要150 250MB boot 32M 100M 启动分区 最多只要100M左右 opt 100M 1G 附加应用程序 tmp 40M 100
  • APT组织Lazarus近期攻击变化阐述

    Lazarus是来自朝鲜的APT组织 该组织长期对韩国 美国进行渗透攻击 此外还对全球的金融机构进行攻击 堪称全球金融机构的最大威胁 下面为近半年该组织的一些最新动态以及所使用的技术手段 Manuscrypt是该组织最常用的恶意软件家族 此
  • OpenCV VideoCapture.get()参数详解

    param define cv2 VideoCapture get 0 视频文件的当前位置 播放 以毫秒为单位 cv2 VideoCapture get 1 基于以0开始的被捕获或解码的帧索引 cv2 VideoCapture get 2
  • 4个点让你彻底明白Redis的各项功能

    4个点让你彻底明白Redis的各项功能 前言 先看一下Redis是一个什么东西 官方简介解释到 Redis是一个基于BSD开源的项目 是一个把结构化的数据放在内存中的一个存储系统 你可以把它作为数据库 缓存和消息中间件来使用 同时支持str
  • SIGPIPE的设计意图

    SIGPIPE的设计意图 SIGPIPE 是为以下这种情况设计的 grep pattern lt reallyhugefile head grep可能会输出成千上万行文本 但 head 只会读取前10行然后就退出 一旦head退出 grep
  • 《Pytorch深度学习和图神经网络(卷 1)》学习笔记——第八章

    本书之后的内容与当前需求不符合不再学习 信息熵与概率的计算关系 联合熵 条件熵 交叉熵 相对熵 KL散度 JS散度 互信息 无监督学习 监督训练中 模型能根据预测结果与标签差值来计算损失 并向损失最小的方向进行收敛 无监督训练中 无法通过样
  • 如何添加PYNQ-Z2板文件到Vivado

    添加板文件到vivado 先下载pynq z2板文件 PYNQZ2板文件 含约束文件 原理图 zip 下载后将文件复制到 Vivado安装目录 2018 3 data boards board files 重启vivado 完成
  • 重磅!AI与区块链技术知识分享交流会!特邀贾志刚老师、双一流211高校研究生!

    重磅 AI与区块链技术第一次知识交流分享会即将拉开帷幕 本交流会旨在分享交流人工智能 区块链相关内容 包括基础知识分享 前沿论文分享 具体项目实战 提供一个相同领域学者 工作人员在线交流机会 更多精彩内容 尽在微信公众号 AI与区块链技术
  • PCA算法

    https www cnblogs com dengdan890730 p 5495078 html PCA算法是怎么跟协方差矩阵 特征值 特征向量勾搭起来的 PCA Principle Component Analysis 主成份分析 是
  • 2023年7月31日-8月6日,(上午熟悉公司代码,周一到周五晚上优先工作所急视频教程,其他业余时间进行ue视频教程,为独立游戏做准备,本周10小时,合计2199小时,剩余7801小时)

    按照规划 上午熟悉公司源码 下午进行filament和ue渲染 晚上写工作代码 回家后泛读pbrt或者其他书籍催眠 业余学习ue的各种视频教程 为独立游戏做准备 累了就学其他视频教程 随意 可以按照ue 渲染 gt ue osg gt ue
  • testdbg-测试调试器

    http baidutech blog 51cto com 4114344 743464 testdbg 测试调试器 2011 02 24 14 07 00 标签 测试 休闲 调试器 职场 testdbg 原创作品 允许转载 转载时请务必以
  • C#基础与Java的对比

    一 C 简介 C 是微软公司发布的一种面向对象的 运行于 NET Framework之上的高级程序设计语言 C 看起来与Java有着惊人的相似 它包括了诸如单一继承 接口 与Java几乎同样的语法和编译成中间代码再运行的过程 但是C 与Ja
  • REGEXP基础语法

    个人使用https regex101 com 这个比较多一些 大家可以使用 基础用法 限定符 Quantlfier a a出现0次或者多次 a a出现1次或者多次 a a出现0次或者1次 a 6 a出现6次 a 2 6 a出现2 6次 a
  • Labview设计计算机--组合逻辑与时序逻辑(5)

    在写接下来的内容之前 我要强烈推荐一部书 编码 隐匿在计算机软硬件背后的语言 这是一本由浅入深的书 我也是借鉴了书中的很多想法才有勇气尝试在Labview上构建一个简单的计算机 看这本书的门槛不高 大概有高中知识就差不多了 ok 进入正题
  • angular下载文件

    1 window open 打开新页面下载文件 window open url self 优点 最简洁 缺点 当参数错误时 或其它原因导致接口请求失败 这时页面会停留在新打开的页面中 无法监听到接口返回的错误信息 只在页面中直接输出错误 尽
  • 查看linux安装了哪些编译器,如何查看linux已安装的编译器及其版本

    在Linux环境下 新建一个终端 之后在终端直接输入命令 arm linux gcc v 回车之后 即可出现如下的一些信息 此处安装的是交叉编译器gcc 版本4 2 2 Using built in specs Target arm unk
  • 超详细,AI绘画里你不得不知道的SD算法详解

    前言 哈喽 各位小伙伴们大家好 说到AI绘画 可谓是近几年来异军突起 犹如洪水猛兽一般 各种的本土化 商业化 但是相信也有很多朋友跟我一样 对AI绘画的原理一知半解 甚至根本不知道它是怎么工作的 这样只靠着在网上复制粘贴别人的prompt