【人工智能前沿弄潮】——生成式AI系列:扩散模型及稳定扩散模型

news2025/2/27 16:32:08

VAE、GAN的出现,使得生成式AI越发火热,如今扩散模型的出现与兴起,更是将AIGC推到了人工智能风口,被视作如今人工智能生成艺术领域取得突破的主要因素。相较于VAE和GAN,扩散模型生成的图片质量更好。随着transformer架构的出现和prompt工程的兴起,根据文本提示生成图像的技术已经越发成熟,稳定扩散模型的出现和发展使得我们可以轻松地通过文本提示创建美妙的艺术插图。所以在本文中,我将解释它们是如何工作的,本次不会堆砌复杂的公式,而是用通俗的语言解释扩散模型以及稳定扩散模型的工作原理。

1、Diffusion Model

1.1 Diffusion Model原理概述

如下图所示,与GAN 利用生成器和判别器进行对抗训练来生成图像不同,扩散模型则是通过对生成的随机噪声进行循环去噪来生成图像,就有点像雕刻一样,一块原石,随着大师一点一点地去除掉多余的部分,剩下的就是完美的艺术品。所使用的随机噪声需要和生成的目标图像具有相同的高宽。

在这里插入图片描述

在扩散模型的去噪过程中,去噪的步骤数(step)是人工提前定好的,如1000等。这个step不仅是步骤数,也代表着噪声的严重程度信息。

每次去噪所的Denoise 模块是同一个,进行反复使用。Denoise模块的输入不仅仅有随机噪声图像,还有其对应的step。

1.2 Denoise模块实现原理

Denoise模块内部有一个Noise Preidicter,如下图所示,其输入是原始噪声图像和step,输出一个噪声图像,这个输出的噪声是一个纯噪声图像,而不是去噪的结果图像,然后再利用输入的原始噪声图像减去生成的纯噪声图像得到去噪结果图像。 这样做是因为训练生成纯噪声要比直接生成去噪后的结果图像要简单,更易训练。当然,大家可以尝试以下直接生成去噪图像。
在这里插入图片描述

1.3 如何训练Noise Preidicter?

首先是训练资料的获取。扩散模型的训练资料是人工自己创造的,如下图所示,就是在原始图像上逐step加噪声, 这个过程叫做Forward Process,也叫Diffusion Process。
在这里插入图片描述

接着就是Noise Preidicter的输入是哪些,Noise Preidicter的输出是哪些。如图,Noise Preidicter的输入是加了噪声后的图像和对应的step。输出则是生成的纯噪声,与之对应的是我们制作数据时所加的纯噪声,也就是我们的ground truth。

在这里插入图片描述

对于文生图,就需要训练数据存在对应的文本信息,在输入原始噪声图像和step的基础上,还需要将图像对应的文字描述信息也加入Denoise模块中(加入到Noise Preidicter中)进行训练。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.4 算法流程伪代码

以下为扩散模型的算法流程的伪代码

在这里插入图片描述

2、Stable Diffusion

稳定扩散模型依据文本提示生成图像,其主要由三部分组成:① text encoder ② Generation Model ③ Decoder,三者分开单独训练,然后再组合起来。模型总体结构如下图所示。
在这里插入图片描述

2.1 Text Encoder

Text Encoder,其将我们的prompt(提示词)进行编码转换,变为生成模型所需要的embedding,GPT、Bert都可以当做Text Encoder。关于Text Encoder在此我们不再赘述。

如下图所示,Text Encoder的效果对生成图像结果的影响很大。

在这里插入图片描述

注:FID越小、CLIP Score越大,生成图像越好。

FID:利用预训练好的CNN网络对生成图像的隐变量进行提取,并通过softmax激活函数对隐变量归一化,将归一化的隐变量结果同利用真实数据所提取的归一化隐变量进行分布距离度量,根据度量结果判定生成图像效果的好坏。分布度量采用的是Frechet距离。建议在sample大量图像再测FID精度比较可靠。

在这里插入图片描述

CLIP:将生成图像和当时训练对应的文字喂到CLIP中,两者的生成向量近则生成图像效果好,向量远则效果差。

在这里插入图片描述

2.2 Generation Model

Generation Model,也就是生成模型,在这里,用的就是我们的稳定扩散模型。模型输入为:①text encoder所生成的embedding ②随机噪声图像(注意这里的随机噪声图像不与我们的目标图像一致,而是其缩小版) ③step。输出为:一个压缩版的中间产物——可以是人类看的懂或者看不懂的。

在这里插入图片描述

在制作训练数据时,噪声不再是加在原始图像上,而是加在利用编码器对原始图形进行提取编码的压缩版隐变量特征图上(对应着推理时模型输出的中间产物)。训练时的Denoise模块的输入输出也相应改变,输入为加了噪声的中间产物、text encoder所生成的embedding和step,输出为纯噪声。

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

2.3 Decoder

Decoder是把Generation Model生成的中间产物转换为我们目标图像的部分,给我们的感觉有点像语义分割模型的解码器,或者超分网络模型。我们可以直接将训练好的VAE的解码器当作Decoder。

在这里插入图片描述

Decoder的训练只需要图像,不需要对应文字。

若Generation Model所生成的中间产物是人可看懂的小图的情况时——Decoder输入为影像的下采样结果,输出为原始影像。我们可以将自己可获取图像数据进行下采样,将下采样结果作为Decoder的输入,将原始影像作为输出进行Decoder的训练。

在这里插入图片描述

若Generation Model所生成的中间产物是人类看不懂的压缩图(latent representation),我们则需要AUTO-ENCODER来帮我们还原生成的目标图像。

在这里插入图片描述

2.4 示例模型

如下图我们可以看到,Stable Diffusion、DALL-E系列、Imagen等都是上述的结构模式。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Uniapp当中使用腾讯位置路线规划插件保姆教学

首先我们在使用腾讯地图插件之前我们需要先做几点准备 1:我们需要在腾讯地图位置服务当中注册账号以及在控制台当中创建应用和创建key 这里在创建应用当中应用类型一定要选出行类型,否则后期可能会出现问题。 我们创建完应用之后,点击创建…

elementUi表单恢复至初始状态并不触发表单验证

elementUi表单恢复至初始状态并不触发表单验证 1.场景再现2.解决方法 1.场景再现 左侧是树形列表,右侧是显示节点的详情,点击按钮应该就是新增一个规则的意思,表单内容是没有改变的,所以就把需要把表单恢复至初始状态并不触发表单…

线性代数(三) 线性方程组向量空间

前言 如何利用行列式,矩阵求解线性方程组。 线性方程组的相关概念 用矩阵方程表示 齐次线性方程组:Ax0;非齐次线性方程组:Axb. 可以理解 齐次线性方程组 是特殊的 非齐次线性方程组 如何判断线性方程组的解 其中R(A)表示矩阵A的…

Hugging News #0414: Attention 在多模态情景中的应用、Unity API 以及 Gradio 主题构建器

社区动向 Attention 在视觉领域的应用 注意力机制改变了许多学科的深度学习研究,从 NLP 开始扩展到视觉、语音等。注意力机制的使用在深度学习研究中变得越来越流行,理解和解释注意力机制的内部工作是至关重要的。 我们发布了一个教程,介绍…

面试官:前面我们聊了主从和哨兵,那今天来聊一聊集群吧

目录 秃顶面试官:简单介绍下什么是Redis Cluster呢? 秃顶面试官:那集群的缺点有哪些呢? 秃顶面试官:说说如何搭建集群呢? 秃顶面试官:集群内部是如何通信的呢? 秃顶面试官:线上…

three.js上传模型文件并加载显示

效果大概这样&#xff0c;这个宝箱模型是直接初始化就显示的&#xff0c;人物模型是自己本地添加上去的&#xff0c;代码如下。 <template><div class"container" ref"container"><el-row><el-col :span"24"><div c…

固态硬盘恢复数据,5步搞定!

“不知咋回事&#xff0c;我的固态硬盘突然就有问题了&#xff0c;很多重要的文件也一起丢失了。我正在很努力的解决这个问题&#xff0c;但可惜我对电脑的使用了解比较少&#xff0c;有没有电脑高手可以帮帮我呀&#xff1f; 固态硬盘&#xff0c;通常被称为SSD&#xff0c;它…

stable-diffusion 模型效果+prompt

摘自个人印象笔记&#xff0c;图不完整可查看原笔记&#xff1a;https://app.yinxiang.com/fx/55cda0c6-2af5-4d66-bd86-85da79c5574ePrompt运用规则及技巧 &#xff1a; 1. https://publicprompts.art/&#xff08;最适用于OpenArt 线上模型 https://openart.ai/&#xff09;…

近地面无人机植被定量遥感与生理参数反演技术

遥感&#xff08;RS-Remote Sensing&#xff09;——不接触物体本身&#xff0c;用传感器收集目标物的电磁波信息&#xff0c;经处理、分析后&#xff0c;识别目标物&#xff0c;揭示其几何、物理性质和相互关系及其变化规律的现代科学技术。 换言之&#xff0c;即是“遥远的感…

领克08,开创「芯」时代

中国汽车产业&#xff08;自主品牌&#xff09;的持续向上&#xff0c;正带动本土智能化核心供应链&#xff0c;尤其是关键算力芯片&#xff08;SoC&#xff09;的本土创新。 高工智能汽车研究院监测数据显示&#xff0c;今年1-6月中国市场&#xff08;不含进出口&#xff09;自…

Unity游戏源码分享-精品即时战略游戏_官网60美刀素材

Unity游戏源码分享-精品即时战略游戏_官网60美刀素材 下载地址&#xff1a;https://download.csdn.net/download/Highning0007/88204017

visual studio 2022安装本地的nuget包

工具->选项->Nuget包管理器->程序包源 然后右击解决方案->管理解决方案的Nuget包

探秘Java的Map集合:键值映射的奇妙世界

文章目录 1. 单列集合 vs. 双列集合2. Map接口&#xff1a;键与值的契约3. 深入探索HashMap3.1 特性与构造方法3.2 常用方法3.3 遍历HashMap 4. 美妙的LinkedHashMap 在Java编程中&#xff0c;集合是不可或缺的重要部分&#xff0c;它为我们提供了各种数据结构和算法的实现。其…

(一)创建型设计模式:3、建造者模式(Builder Pattern)

目录 1、建造者模式含义 2、建造者模式的讲解 3、使用C实现建造者模式的实例 4、建造者模式的优缺点 5、建造者模式VS工厂模式 1、建造者模式含义 The intent of the Builder design pattern is to separate the construction of a complex object from its representatio…

实例036 使窗体标题栏文字右对齐

实例说明 窗口标题栏中的文字是窗口的重要说明&#xff0c;该文字可以标示窗口的功能、状态或名称等信息&#xff0c;一般该文字是居左显示的&#xff0c;在本例中设计一个标题栏文字右对齐的窗口。本实例运行结果如图1.36所示。 技术要点 在C# 2.0中实现这一功能非常容易&am…

【LeetCode】45. 跳跃游戏 II - 贪婪算法

目录标题 2023-8-11 09:49:25 45. 跳跃游戏 II 2023-8-11 09:49:25 自己没做出来&#xff0c;废物Orz class Solution {public int jump(int[] nums) {int length nums.length;int end 0;int maxPosition 0;int steps 0;for (int i 0; i < length - 1; i) {maxPosit…

Maven在IDEA2021版本中全局配置(一次配置处处生效)

前言 我们在开发中&#xff0c;Maven是必不可少的&#xff0c;但是每次都需要设置一遍Maven的仓库和settings.xml。真的是心累&#xff0c;今天教大家全局配置一下。再也不要每次项目都配了&#xff0c;Maven还经常出问题。 解决方案 友情提示&#xff1a;小编的IDEA版本为2…

前沿分享-你好,我的括约肌

通过智能主动植入物彻底改变严重压力性尿失禁的治疗&#xff0c;是利用嵌入式系统和微技术领域的最新技术的解决方案。 由 肌机电系统&#xff08;MEMS&#xff09; 驱动&#xff0c;放置在尿道周围&#xff0c;旨在根据患者的活动自动控制&#xff0c;无需手动调整。 当患者从…

Streamlit 入门教程:构建一个Dashboard

Streamlit 是一个用于创建数据科学和机器学习应用程序的开源 Python 库。它的主要目标是使开发人员能够以简单的方式快速构建交互式的数据应用&#xff0c;而无需过多的前端开发经验。Streamlit 提供了一种简单的方法来转换数据脚本或分析代码为具有可视化界面的应用程序&#…

【Tool】win to go 制作随身硬盘

前言 话说我一冲动买了512G固态硬盘&#xff0c;原本是装个ubuntu系统的&#xff0c;这个好装&#xff0c;但是用处太少&#xff0c;就像改成win10的 经历一堆坑之后&#xff0c;终于使用WTG安装好了 步骤 1.下载个WTG辅助工具 Windows To Go 辅助工具|WTG辅助工具 v5.6.1…