深入浅出理解 AI 生图模型

目录

引言

一、Stable Diffusion原理

首先

随后

最后

二、DDPM模型

1 资料

2 原理

扩散过程

反向过程

3 公式结论

三、优缺点

优点:

缺点:

四、改进与完事

LDM代表作

原理概括

 Latent Space(潜空间)

五、总结


引言

众所周知,视频是图片连起来快速播放的,所以Stable Diffusion可能是sora参考的重要模型之一。
随着深度学习和生成模型的发展,扩散模型在生成领域也取得了显著进步。这类扩散模型通常分为扩散过程和逆扩散过程。

扩散过程是对数据(如图像)逐步加入噪声,而逆扩散过程则是从噪声中逐渐消除噪声以生成数据。这类模型在图像生成、文本到图像的转换等领域有广泛应用,如DALL-E 2和Stable Diffusion等。

Stable Diffusion(稳定扩散)严格说来它是一个由几个组件(模型)构成的系统,而非单独的一个模型。

一、Stable Diffusion原理

首先

用户输入的Prompt会被Text Encoder(文本编译器)处理,转化为一系列词特征向量。这一步骤会生成77个长度相同的向量,每个向量都包含768个维度。这些向量实际上是将文本信息转化为机器能够理解和处理的数字序列。

随后

这些特征向量会与一张随机图(可视为充满电子雪花或信息噪声的图像)一同输入到Image Information Creator中。在此环节,机器首先将这些特征向量和随机图转换至Latent Space(潜空间)。接着,根据这些特征向量的指引,机器会对随机图进行“降噪”处理,生成一个“中间产物”。这个中间产物虽然对人类而言是难以理解的数字图像,但它已经蕴含了用户Prompt中描述的信息。

最后

这个中间产物会经过Image Decoder(图片解码器)的处理,转化为一张真实可见的图片。

这个过程中,扩散模型功不可没,今天主要讲讲扩散模型的代表DDPM

二、DDPM模型

1 资料

  1. 代表之作:Denoising Diffusion Probabilistic Models(https://arxiv.org/abs/2006.11239)
  2. 官方代码:https://github.com/hojonathanho/diffusion

2 原理

DDPM模型通常指的是去噪扩散概率模型(Denoising Diffusion Probabilistic Models)

扩散过程

在扩散过程中,一张图片会逐渐添加高斯噪声,直至其变成随机噪声。

反向过程

而反向过程则是一个去噪过程,它根据扩散过程中学习到的图片风格,对随机噪声进行去噪,最终生成一张与学到的风格相同的图片。

DDPM模型的本质作用是学习训练数据的分布,从而生成尽可能符合训练数据分布的真实图片。6b82cc92220c40beb28a4405b6e88337.png

 (上图,为其马尔可夫链)

3 公式结论

164f7f97562a4485ae2823ebb288127c.png

 想看推导过程的可以看原论文Denoising Diffusion Probabilistic Models

三、优缺点

DDPM模型(深度确定性策略梯度模型)在强化学习领域具有其独特的优点和缺点。下面是对其优缺点的简要分析:

优点:

  1. 高效的动作采样:相较于其他强化学习方法(如基于采样的策略梯度方法),DDPM采用了确定性策略,这意味着在给定状态下,动作是唯一的,不需要进行采样。这大大减少了计算量,提高了训练效率。
  2. 稳定的训练过程:DDPM通过引入目标网络和软更新机制,使得训练过程更加稳定。这有助于避免训练过程中的震荡和发散,使得模型更容易收敛到好的解。
  3. 良好的性能:在连续动作空间的强化学习任务中,DDPM通常能够表现出良好的性能。它能够有效地处理复杂的状态空间和动作空间,从而解决一系列具有挑战性的任务。

缺点:

  1. 对超参数敏感:DDPM的性能在很大程度上取决于超参数的选择,如学习率、折扣因子等。不合适的超参数可能导致模型训练不稳定或性能不佳。因此,在实际应用中,需要进行大量的超参数调优。
  2. 难以处理高维输入:当状态空间或动作空间维度较高时,DDPM可能会面临挑战。高维输入可能导致模型复杂度增加,训练难度加大,甚至可能引发过拟合等问题。
  3. 对噪声敏感:由于DDPM采用确定性策略,它可能对输入中的噪声较为敏感。在实际应用中,如果状态表示或奖励函数存在噪声,可能会影响模型的稳定性和性能。

需要注意的是,以上优缺点是基于一般情况的总结,具体表现可能因任务和数据集的不同而有所差异。在实际应用中,应根据具体情况选择合适的模型和方法。

四、改进与完事

然后我又看到了这篇

LDM代表作

High-Resolution Image Synthesis with Latent Diffusion Models

https://arxiv.org/abs/2112.10752

原理概括

为了降低训练扩散模型的算力,LDMs使用一个Autoencoder去学习能尽量表达原始image space的低维空间表达(latent embedding),这样可以大大减少需要的算力。

1816a0ea5ec948799a82b57ac4fea7d9.png

 Latent Space(潜空间)

这里用了潜空间,在噪声环节,机器首先将这些特征向量和随机图转换至Latent Space(潜空间)。接着,根据这些特征向量的指引,机器会对随机图进行“降噪”处理,生成一个“中间产物”。1299d62c62824d0198f91323d85b3373.png

 (以上是Wiki上的简单定义https://zh.m.wikipedia.org/zh-cn/%E6%BD%9C%E7%A9%BA%E9%97%B4_(%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0)

五、总结

AI绘画的未来发展方向看起来充满了无限可能。随着人工智能技术的不断进步,像Stable Diffusion这样的AI绘画将会更加智能化,能够更好地模仿人类艺术家的风格和技巧,使非艺术家也能创作出优秀的绘画作品。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

提高安全投资回报:威胁建模和OPEN FAIR™风险分析

对大多数人和企业来说,安全意味着一种成本。但重要的是如何获得适合的量,而不是越多越好。然而,你如何决定什么时候可以有足够的安全性,以及你如何获得它?则完全是另一回事。 该篇文章是由The Open Group安全论坛主办&…

【PyTorch】进阶学习:一文详细介绍 load_state_dict() 的应用场景、实战代码示例

【PyTorch】进阶学习:一文详细介绍 load_state_dict() 的应用场景、实战代码示例 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入…

vb.net+zxing.net随机彩色二维码、条形码

需要zxing库支持ZXing.NET Generate QR Code & Barcode in C# Alternatives | IronBarcode 效果图: 思路:先生成1个单位的二维码,然后再通过像素填充颜色,颜色数组要通过洗牌算法 洗牌算法 Dim shuffledCards As New List(…

C#控制台贪吃蛇

Console.Write("");// 第一次生成食物位置 // 随机生成一个食物的位置 // 食物生成完成后判断食物生成的位置与现在的蛇的身体或者障碍物有冲突 // 食物的位置与蛇的身体或者障碍物冲突了,那么一直重新生成食物,直到生成不冲突…

GenAI开源公司汇总

主要分类如下: 1. 基础模型:这些是机器学习和AI的核心模型提供商,它们提供基础的算法和技术支持。 2. 模型部署与推断:提供云服务和计算资源,帮助用户部署和运行AI模型。 3. 开发者工具:支持AI/ML的开发…

【网络原理】TCP 协议中比较重要的一些特性(三)

目录 1、拥塞控制 2、延时应答 3、捎带应答 4、面向字节流 5、异常情况处理 5.1、其中一方出现了进程崩溃 5.2、其中一方出现关机(正常流程的关机) 5.3、其中一方出现断电(直接拔电源,也是关机,更突然的关机&am…

拜占庭将军问题相关问题

1、拜占庭将军问题基本描述 问题 当我们讨论区块链共识时,为什么会讨论拜占庭将军问题? 区块链网络的本质是一个分布式系统,在存在恶意节点的情况下,希望 整个系统当中的善良节点能够对于重要的信息达成一致,这个机…

Python语言基础与应用-北京大学-陈斌-P40-39-基本扩展模块/上机练习:计时和文件处理-给算法计时-上机代码

Python语言基础与应用-北京大学-陈斌-P40-39-基本扩展模块/上机练习:计时和文件处理-给算法计时-上机代码 上机代码: # 基本扩展模块训练 给算法计时 def factorial(number): # 自定义一个计算阶乘的函数i 1result 1 # 变量 result 用来存储每个数的阶…

第十三篇:复习Java面向对象

文章目录 一、面向对象的概念二、类和对象1. 如何定义/使用类2. 定义类的补充注意事项 三、面向对象三大特征1. 封装2. 继承2.1 例子2.2 继承类型2.3 继承的特性2.4 继承中的关键字2.4.1 extend2.4.2 implements2.4.3 super/this2.4.4 final 3. 多态4. 抽象类4.1 抽象类4.2 抽象…

微信小程序关闭首页广告

由于之前微信小程序默认开启了首页广告位。导致很多老人误入广告页的内容,所以想着怎么屏蔽广告。好家伙,搜索一圈,要么是用户版本的屏蔽广告,或者是以下一个模棱两可的答案,要开发者设置一下什么参数的,如…

ZK vs FHE

1. 引言 近期ZAMA获得7300万美金的投资,使得FHE获得更多关注。FHE仍处于萌芽阶段,是未来隐私游戏规则的改变者。FHE需与ZK和MPC一起结合,以发挥最大效用。如: Threshold FHE:将FHE与MPC结合,实现信任最小…

Kafka MQ 生产者

Kafka MQ 生产者 生产者概览 尽管生产者 API 使用起来很简单,但消息的发送过程还是有点复杂的。图 3-1 展示了向 Kafka 发送消息的主要步骤。 我们从创建一个 ProducerRecord 对象开始,ProducerRecord 对象需要包含目标主题和要发送的内容。我们还可以…

Python基础(七)之数值类型集合

Python基础(七)之数值类型集合 1、简介 集合,英文set。 集合(set)是由一个或多个元素组成,是一个无序且不可重复的序列。 集合(set)只存储不可变的数据类型,如Number、…

高德 Android 地图SDK 去除logo

问题 高德 Android 地图SDK 去除logo 详细问题 笔者进行Android 项目开发,接入高德地图SDK。但是默认在地图左下角有高德地图logo,现需要去除该logo 期望效果 解决方案 import com.amap.api.maps.UiSettings; UiSettings settingsmMapView.getMap(…

CSS-DAY3

CSS-DAY3 2024/2/7 盒子模型 页面布局要学习三大核心, 盒子模型, 浮动 和 定位. 学习好盒子模型能非常好的帮助我们布局页面 1.1 看透网页布局的本质 网页布局过程: 先准备好相关的网页元素,网页元素基本都是盒子 Box 。利用 CSS 设置好盒子样式&a…

c++之旅第七弹——继承

大家好啊,这里是c之旅第七弹,跟随我的步伐来开始这一篇的学习吧! 如果有知识性错误,欢迎各位指正!!一起加油!! 创作不易,希望大家多多支持哦! 一.继承和派生…

夜间8点到12点能干点啥副业?

们放松和追求个人兴趣的时候,也是一段时间可以用来开展副业的机会。以下是一些适合晚上从事的副业的建议。 1.【千金宝库】软件做任务赚钱 【千金宝库】任务平台是为那些没有资源和人脉的人准备的。它非常适合那些没有时间限制、没有门槛的学生,平时玩…

以太网传输图片工程出现的问题总结(含源码)

本文对以太网传输图片的工程曾经出现过的问题及解决思路进行整理,便于日后出现类似问题能够快速处理。也指出为什么前文在FIFO IP设计时为啥强调深度的重要性。 1、问题 当工程综合完毕之后,下载到板子,连接以太网口,相关硬件如下…

0G联合创始人MICHAEL HEINRICH确认出席Hack.Summit() 2024区块链开发者大会

随着区块链技术的不断发展和应用,全球开发者瞩目的Hack.Summit() 2024区块链开发者大会即将于2024年4月9日至10日在香港数码港盛大举行。此次大会由Hack VC主办,并得到AltLayer和Berachain的协办,同时汇聚了Solana、The Graph、Blockchain Ac…

Vue | 使用 ECharts 绘制折线图

目录 一、安装和引入 ECharts 二、使用 ECharts 2.1 新增 div 盒子 2.2 编写画图函数 2.3 完整代码结构 三、各种小问题 3.1 函数调用问题 3.2 数据格式问题 3.3 坐标轴标签问题 3.4 间隔显示标签 参考博客:Vue —— ECharts实现折线图 本文是在上…