2、Stable Diffusion

news2024/11/19 1:47:36

2、Stable Diffusion

Stable Diffusion 是一种高效的文本到图像生成模型,它利用扩散模型(Diffusion Model)技术将自然语言描述转换为高质量的图像。其工作原理是通过反向扩散过程,逐渐将噪声引导到符合输入文本描述的图像上。相比其他生成模型(如 GANs),扩散模型在训练稳定性和图像生成质量方面具有显著优势。

Diffusion Model

Diffusion Model论文链接:Denoising Diffusion Probabilistic Models.

在介绍Stable Diffusion之前,必须先对Diffusion Model的原理有所了解,Stable Diffusion就是以Diffusion Model为基础进行构建,Diffusion Model(扩散模型) 是一种生成模型,近年来在图像生成任务中表现优异,尤其是在高质量图像生成方面,如 DALL·E 2Stable Diffusion 等模型的基础就是扩散模型。其核心思想是通过对数据添加噪声,然后逐步学习去噪的过程,从而生成新数据。

本文只介绍他的大致原理,至于为什么公式推导,可以查看Diffusion Model论文原文

扩散模型的工作机制分为两个阶段:正向扩散过程逆向去噪过程

在这里插入图片描述

左边为正向扩散,右边为逆向去噪。在 Diffusion Model 中,逆向过程通常使用U-Net 神经网络来进行训练,该网络通过预测输入噪声中的噪声成分,逐步将噪声图像转换为清晰的图像。同时,利用时间嵌入使模型能够处理不同时间步长的去噪任务,通过最小化噪声预测的损失函数,使模型在去噪过程中逐步恢复图像的细节。

正向扩散过程

在正向过程中,扩散模型对真实数据(如图像)逐步加入噪声,直到将数据变成完全的高斯噪声。这个过程可以通过一系列步骤来模拟,逐步将原始数据扰动成噪声,正向扩散过程遵循预设的马尔可夫链规则。

在这里插入图片描述

逆向去噪过程

逆向过程是生成数据的关键,它从完全的噪声图像开始,逐步去除噪声,以恢复真实的高质量数据。模型在每一步预测并去除噪声,逐渐重建出与训练数据相似的图像。这一步骤类似于学习一个去噪自编码器,通过模型学习每一步去噪操作,逆转噪声的扩散过程,最终生成类似原始分布的数据。

在这里插入图片描述
其中,模型需要学习参数化的 μθ和 Σθ,即如何从噪声数据逐渐还原出清晰的图像。实际上就是计算方差和均值。

损失函数

通常使用均方误差(MSE)作为损失函数,具体形式如下:

在这里插入图片描述

这里,ϵ是添加的真实噪声,而 ϵθ是模型输出的噪声预测。通过最小化该损失,模型能够逐步学会如何从噪声中恢复原始图像。

图像直观解释

上面为正向扩散过程,下面为逆向去噪

在这里插入图片描述

Stable Diffusion

Stable Diffusion论文链接:High-Resolution Image Synthesis with Latent Diffusion Models

上文介绍了Diffusion Model,Stable Diffusion 正是在 Diffusion Model 的基础上进行了改进。简单来说,Stable Diffusion 在逆向去噪过程中,不仅依赖于生成时的噪声信息,还能够引入更多的辅助信息来帮助模型更好地进行逆向去噪。只要这些辅助信息能够被编码成固定维度,就可以融入逆向还原的过程中,从而提升模型训练效果和生成结果的质量。

模型架构图

从图中可以看出,左边粉色的框中是U-Net 编码器-解码器结构,中间绿色框为噪声注入与去噪过程,右边为生成辅助信息的模块(本文使用CLIP),下面将分别解释各个结构的作用与细节。

在这里插入图片描述

U-Net 编码器-解码器结构

上图中左边粉色的框中是U-Net 编码器-解码器结构

  • 编码器:U-Net 结构的一部分,用于提取图像中的特征。编码器逐步将图像中的信息压缩成低维表示,并捕捉多尺度特征,这对于生成过程中的逐步去噪至关重要。

  • 解码器:U-Net 结构的另一部分,逐步还原图像。解码器通过多次跳跃连接(skip connections)从编码器中获取不同层级的特征,并将噪声图像逐渐恢复为高质量图像。

噪声注入与去噪过程

中间绿色框为噪声注入与去噪过程:

  • 正向扩散过程中,Stable Diffusion 将随机噪声逐渐添加到图像中,直到图像变成完全的噪声。
  • 逆向扩散过程通过逐步去除噪声来重建图像,Stable Diffusion 使用 U-Net 结构和条件信息来预测并执行去噪。与传统扩散模型不同,Stable Diffusion 在逆向去噪过程中引入了辅助信息(如文本或其他条件),使得去噪过程不仅依赖于噪声,还能够根据条件输入生成目标结果。具体来说,U-Net 的每一层都应用了注意力机制,允许模型更加有效地捕捉长距离依赖关系。在这个过程中,U-Net 使用图像本身生成查询(q),而使用辅助信息生成键(k)和值(v)。通过计算 q 和 k之间的相似性,模型能够动态地加权和选择与当前特征相对应的值(v),从而实现对特征的生成和优化。这种机制增强了模型在生成图像时的表达能力,使其能更好地符合输入的条件。
生成辅助信息的模块

论文中使用文本数据作为辅助数据进行辅助,那么就使用到将文本翻译成图像特征的模型。

CLIP 是一个能够将图像和文本映射到相同特征空间中的模型。在 Stable Diffusion 中,CLIP 主要用于提供文本指导,即根据输入的文本描述来生成符合语义的图像。CLIP 提供的文本和图像特征嵌入被整合到扩散模型的逆向去噪过程中,以确保生成的图像与输入文本描述相符。

加入了辅助信息,为什么可以使用和Diffusion Model一样的原理?

由上文中给出Diffusion Model的正向扩散和逆向去噪过程的公式证明,同样的加入辅助信息后,证明仍使用贝叶斯公式,只是加了一个辅助公式。

Stable Diffusion 中,我们引入了条件信息 c(例如文本嵌入),以帮助生成与特定条件相符的图像。在逆向去噪过程中,辅助信息的引入不会改变基本的推理逻辑。可以通过以下步骤证明这一点:

  1. 引入条件信息

在逆向去噪的情况下,模型不仅依赖于噪声图像 Xt,还依赖于条件信息 c。因此,逆向去噪的公式可以扩展为:

在这里插入图片描述

  1. 预测均值与方差的条件化

在这个公式中,μθ和 Σθ 的计算是条件化的,即它们不仅依赖于当前的噪声图像 Xt,还依赖于辅助信息 c。例如,模型可以用 CLIP 提供的文本嵌入作为条件信息,来影响去噪的均值和方差的预测。

  1. 保持逆向逻辑不变

尽管我们引入了辅助信息,逆向去噪的推理逻辑仍然保持不变,因为模型的目标仍然是最小化与真实数据分布的距离。损失函数的形式可以写作:

在这里插入图片描述

这里 ϵθ 是模型预测的噪声,依然使用均方误差(MSE)来计算模型输出与真实噪声之间的差异。

  1. 总结

因此,Stable Diffusion 在引入辅助信息的同时,可以仍然使用与传统扩散模型相同的逆向去噪推理逻辑。这是因为辅助信息通过影响模型的均值和方差预测来引导生成过程,而不改变生成的基础机制。模型依然在每个时间步上逐步去噪,通过保留原有的逆向逻辑,结合条件输入,从而生成符合条件的高质量图像。

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

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

相关文章

HTB:Three[WriteUP]

使用OpenVPN连接并启动机器 1.How many TCP ports are open? 使用nmap对靶机进行扫描:nmap -sV 10.129.233.85 可见仅开启了 22、80 共2个端口 2.What is the domain of the email address provided in the "Contact" section of the website? 直接对…

探索自闭症寄宿学校:为孩子的未来铺设坚实基石

在自闭症儿童教育的广阔天地中,寄宿学校以其独特的教育模式和全方位的关怀体系,为这些特殊孩子提供了一个安全、稳定且充满爱的成长环境。这些学校不仅关注孩子们的学习与康复,更致力于培养他们独立生活的能力,为他们的未来铺设坚…

java 解析excel (网络资源)

在Java中解析Excel文件,可以使用Apache POI库。以下是一个简单的例子,展示如何使用Apache POI读取一个Excel文件(假设为.xlsx格式)的内容。 首先,确保你的项目中包含了Apache POI的依赖。如果你使用Maven,…

【muduo源码分析】「阻塞」「非阻塞」「同步」「异步」

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 引言何为「muduo库」安装muduo库阻塞、非阻塞、同步、异步数据准备数据准备 引言 从本篇博客开始,我会陆续发表muduo库源码分析的相关文章。感谢大家的持续关注!!…

ORM的了解

什么是ORM?为什么要用ORM?-CSDN博客 C高级编程(99)面向资源的设计思想(ORM)_c orm-CSDN博客 ORM:Object-Relational-Mapping 对象关系映射 -------------------------- 我想对数据库中的表A进行增删改…

International Journal of Metalcasting是否值得投稿?

International Journal of Metalcasting期刊如何? 投稿快不快?这是一本材料科学3区期刊,冶金工程3区期刊,是美国铸造协会(American Foundry Society)创办,Springer International Publishing出版的期刊,旨在促进金属铸造领域的…

电脑使用adb工具连接手机,全文完整教程

目录 前言 正文 前置条件 打开开发者选项 打开usb调试 连接步骤 1、保证电脑和手机在同一网络下 2、打开电脑cmd窗口。 3、在cmd窗口输入adb connect手机IP地址 4、验证 扩展 问题解决 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝…

D16【python接口自动化学习】-python基础之内置数据类型

day16 字典的常见操作(下) 学习日期:20240923 学习目标:内置数据类型--25 常见常新:字典的常见操作(下) 学习笔记: 字典的高级用法 # 字典的高级用法 # setdefaul函数 tom_mail …

CHI trans简介--Retry

总目录: CHI协议简读汇总-CSDN博客 Retry trans flow requester发送一个请求,该请求没有protocol credit(P-Credit); 也就是说,该请求不保证completer一定能够接收该trans;completer返回一个retry resp, RetryAck, 给到Requester;completer再…

关于GPIO输入模式的配置选择

GPIO(通用输入输出)口是嵌入式系统中的重要组成部分,输入模式使得微控制器能够与外部世界进行交互。本文将探讨GPIO输入模式中的浮空输入、上拉输入和下拉输入的配置、使用场景及注意事项,并提供一些决策指导,帮助读者…

技术速递|加入 .NET 智能组件生态系统

作者:Daniel Roth - 首席产品经理 排版:Alan Wang .NET 智能组件是一组示例嵌入式 UI 组件,使得在应用中轻松添加 AI 启用的功能变得更加简单,例如从剪贴板数据自动填写表单、智能文本补全以及语义搜索等场景。.NET 智能组件演示了…

【STM32开发环境搭建】-3-STM32CubeMX Project Manager配置-自动生成一个Keil(MDK-ARM) 5的工程

目录 1 KEIL(MDK-ARM) 5 Project工程设置 2 MCU和嵌入式软件包的选择 3 Code Generator 3.1 STM32Cube Firmware Library Package 3.2 Generated files 3.3 HAL Settings 3.4 Template Settings 4 Advanced Settings 5 自动生成的KEIL(MDK-ARM) 5 Project工程目录 结…

【hot100-java】【划分字母区间】

R9-贪心算法篇 印象题: 我记得,先用字典记录每个字母出现的下标,取出首个字母的下标j,然后我们for循环遍历一次,如果该下标大于 j,就要变化新的首字母,如果相等就说明一个字符串完成,如果小于就…

自动蛋鸡饲料机组:粉碎搅拌一步到位

蛋鸡养殖如何科学、高效地喂养蛋鸡,直接关系到蛋品的产量与质量。一款让养殖户赞不绝口的“黑科技”——蛋鸡饲料粉碎搅拌机组! 传统的蛋鸡饲料加工方式,往往依赖人工或简单机械,不仅效率低下,还难以保证饲料的均匀度…

MySQL 5.8 Performance Schema 配置详解

MySQL 5.8 Performance Schema 配置详解 MySQL 的 Performance Schema 是一个用于监控和优化数据库性能的子系统,专门用来收集 MySQL 服务器的运行情况和性能指标。它的核心原理是通过“生产者”和“消费者”的概念来采集和存储数据库中的事件信息,帮助…

第十四周周报:Transformer for CV

目录 摘要 Abstract 一、Swin Transformer 1.1 输入 1.2 Patch Partition 1.3 Linear Embedding 1.4 Patch Merging 1.5 Swin Transformer Block 1.6 代码 二、MLP-Mixer 2.1 网络模型整体结构 2.2 Mixer Layer 2.3 MLP 总结 摘要 本篇博客介绍了采用类似于卷积…

MySQL篇(leetcode刷题100(查询))(二)(持续更新迭代)

目录 一、普通查询 1. 可回收且低脂的产品(简单) 1.1. 题目描述 1.2. 解题思路 2. 寻找用户推荐人(简单) 2.1. 题目描述 2.2. 解题思路 3. 大的国家(简单) 3.1. 题目描述 3.2. 解题思路 4. 文章浏…

【JavaEE初阶】文件IO(下)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 文件内容操作 打开 关闭文件 文件描述符表 字节流 读文件 写文件 字符流 读文件 写文件 Scanner 示例一:通过scanner读取文件中的数字 示例二:扫描指定⽬录 示例三:实…

JUC第23讲:Java线程池最佳实践

JUC第23讲:Java线程池最佳实践 本文是JUC第23讲,先介绍为什么使用线程池;然后结合实际业务,讲解如何使用线程池,以及使用过程中踩过的坑。 1、Java线程池概述 1.1、什么是线程池? 线程池是一种用于管理和…

彩虹易支付最新版源码及安装教程(修复BUG+新增加订单投诉功能)

该系统也没版本号,此版本目前是比较新的版本,增加了订单投诉功能,和一个好看的二次元模板。 此版本是全开源版,无一处加密文件,系统默认是安装后是打不开的, 本站特别修复了BUG文件,在PHP7.4环境下也没问…