科技 > 人工智能 > 神经网络

Stable Diffusion之最全详解图解

161人参与 2024-08-05 神经网络


在这里插入图片描述

在这里插入图片描述

1. stable diffusion介绍

stable diffusion是2022年发布的深度学习文本到图像生成模型。它主要用于根据文本的描述产生详细图像,尽管它也可以应用于其他任务,如内补绘制、外补绘制,以及在提示词指导下产生图生图的转变。

它是一种潜在扩散模型,由慕尼黑大学的compvis研究团体开发的各种生成性人工神经网络之一。它是由初创公司stabilityai、compvis与runway合作开发,并得到eleutherai和laion的支持。 截至2022年10月,stabilityai筹集了1.01亿美元的资金。

stable diffusion的源代码和模型权重已分别公开发布在github和hugging face,可以在大多数配备有适度gpu的电脑硬件上运行。而以前的专有文生图模型(如dall-e和midjourney)只能通过云计算服务访问。

1.1 研究背景

ai 绘画作为 aigc(人工智能创作内容)的一个应用方向,它绝对是 2022 年以来 ai 领域最热门的话题之一。ai 绘画凭借着其独特创意和便捷创作工具迅速走红,广受关注。举两个简单例子,左边是利用 controlnet 新魔法把一张四个闺蜜在沙滩边上的普通合影照改成唯美动漫风,右边是 midjourney v5 最新版本解锁的逆天神技, 只需输入文字“旧厂街风格,带着浓浓 90 年代氛围感”即可由 ai 一键生成超逼真图片!
在这里插入图片描述
stable diffusion,是一个 2022 年发布的文本到图像潜在扩散模型,由 compvis、stability ai 和 laion 的研究人员创建的。要提到的是,stable diffusion 技术提出者 stabilityai 公司在 2022 年 10 月完成了 1.01 亿美元的融资,估值目前已经超过 10 亿美元。

1.2 学术名词

学术名词相关解释
diffusion model扩散模型,一款支持文本生成图像的算法模型,目前市面上主流的 dall e、midjourney、stable diffusion 等 ai 绘画工具都是基于此底层模型开发的
latent diffusion model即潜在扩散模型,基于上面扩散模型基础上研制出的更高级模型,升级点在于图像图形生成速度更快,而且对计算资源和内存消耗需求更低
stable diffusion简称sd模型,其底层模型就是上面的潜在扩散模型,之所以叫这个名字是因为其研发公司名叫stability ai,相当于品牌冠名了
stable diffusion web ul简称sd webui,用于操作上面stable diffusion模型的网页端界面,通过该操作系统就能控制模型出图,而无需学习代码

2.stable diffusion原理解析

2.1 技术架构

stable diffusion是一种扩散模型(diffusion model)的变体,叫做“潜在扩散模型”(latent diffusion model; ldm)。扩散模型是在2015年推出的,其目的是消除对训练图像的连续应用高斯噪声,可以将其视为一系列去噪自编码器。stable diffusion由3个部分组成:变分自编码器(vae)、u-net和一个文本编码器。与其学习去噪图像数据(在“像素空间”中),而是训练vae将图像转换为低维潜在空间。添加和去除高斯噪声的过程被应用于这个潜在表示,然后将最终的去噪输出解码到像素空间中。在前向扩散过程中,高斯噪声被迭代地应用于压缩的潜在表征。每个去噪步骤都由一个包含resnet骨干的u-net架构完成,通过从前向扩散往反方向去噪而获得潜在表征。最后,vae解码器通过将表征转换回像素空间来生成输出图像。研究人员指出,降低训练和生成的计算要求是ldm的一个优势。

去噪步骤可以以文本串、图像或一些其他数据为条件。调节数据的编码通过交叉注意机制(cross-attention mechanism)暴露给去噪u-net的架构。为了对文本进行调节,一个预训练的固定clip vit-l/14文本编码器被用来将提示词​转化为嵌入空间。
在这里插入图片描述

(以上图片来自于网络)

2.2 原理介绍

stable diffusion 技术,作为 diffusion 改进版本,通过引入隐向量空间来解决 diffusion 速度瓶颈,除了可专门用于文生图任务,还可以用于图生图、特定角色刻画,甚至是超分或者上色任务。作为一篇基础原理介绍,这里着重解析最常用的“文生图(text to image)”为主线,介绍 stable diffusion 计算思路以及分析各个重要的组成模块。

下图是一个基本的文生图流程,把中间的 stable diffusion 结构看成一个黑盒,那黑盒输入是一个文本串“paradise(天堂)、cosmic(广阔的)、beach(海滩)”,利用这项技术,输出了最右边符合输入要求的生成图片,图中产生了蓝天白云和一望无际的广阔海滩。
stable diffusion 组成
在这里插入图片描述
stable diffusion 的核心思想是,由于每张图片满足一定规律分布,利用文本中包含的这些分布信息作为指导,把一张纯噪声的图片逐步去噪,生成一张跟文本信息匹配的图片。它其实是一个比较组合的系统,里面包含了多个模型子模块,接下来把黑盒进行一步步拆解。stable diffusion 最直接的问题是,如何把人类输入的文字串转换成机器能理解的数字信息。这里就用到了文本编码器 text encoder(蓝色模块),可以把文字转换成计算机能理解的某种数学表示,它的输入是文字串,输出是一系列具有输入文字信息的语义向量。有了这个语义向量,就可以作为后续图片生成器 image generator(粉黄组合框)的一个控制输入,这也是 stable diffusion 技术的核心模块。图片生成器,可以分成两个子模块(粉色模块+黄色模块)来介绍。下面介绍下 stable diffusion 运行时用的主要模块:

1.文本编码器(蓝色模块),功能是把文字转换成计算机能理解的某种数学表示,在第三部分会介绍文本编码器是怎么训练和如何理解文字,暂时只需要了解文本编码器用的是 clip 模型,它的输入是文字串,输出是一系列包含文字信息的语义向量。

2.图片信息生成器(粉色模块) 是 stable diffusion 和 diffusion 模型的区别所在,也是性能提升的关键,有两点区别:

① 图片信息生成器的输入输出均为低维图片向量(不是原始图片),对应上图里的粉色 44 方格。同时文本编码器的语义向量作为图片信息生成器的控制条件,把图片信息生成器输出的低维图片向量进一步输入到后续的图片解码器(黄色)生成图片。(注:原始图片的分辨率为 512512,有rgb 三通道,可以理解有 rgb 三个元素组成,分别对应红绿蓝;低维图片向量会降低到 64*64 维度)

② diffusion 模型一般都是直接生成图片,不会有中间生成低维向量的过程,需要更大计算量,在计算速度和资源利用上都比不过 stable diffusion;

那低维空间向量是如何生成的?是在图片信息生成器里由一个 unet 网络和一个采样器算法共同完成,在 unet 网络中一步步执行生成过程,采样器算法控制图片生成速度,下面会在第三部分详细介绍这两个模块。stable diffusion 采样推理时,生成迭代大约要重复 30~50 次,低维空间变量在迭代过程中从纯噪声不断变成包含丰富语义信息的向量,图片信息生成器里的循环标志也代表着多次迭代过程。

(3) 图片解码器(黄色模块) 输入为图片信息生成器的低维空间向量(粉色 4*4 方格),通过升维放大可得到一张完整图片。由于输入到图片信息生成器时做了降维,因此需要增加升维模块。这个模块只在最后阶段进行一次推理,也是获得一张生成图片的最终步骤。

扩散过程

在这里插入图片描述

3.1 diffusion前向过程

在这里插入图片描述

diffusion的前向(q)和逆向§过程
在这里插入图片描述

3.2 diffusion逆向(推断)过程

在这里插入图片描述

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

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

巧用Stable Diffusion,实现不同风格的LOGO设计|实战篇幅,建议收藏!

08-05

2023-5 一种基于特征差分卷积神经网络的变化检测方法

08-05

Stable Diffusion — ControlNet 超详细讲解

08-05

pytorch写一个神经网络训练示例代码

08-05

使用自己的数据利用pytorch搭建全连接神经网络进行回归预测

08-05

【NLP基础知识五】文本分类之神经网络文本分类、多标签分类

08-05

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论