浅谈文生图Stable Diffusion(SD)相关模型基础
1.U-Net模型基础
1.基础概念
UNet模型是一种基于卷积神经网络的图像分割算法,它采用了U型的网络结构,由编码器(下采样路径)和解码器(上采样路径)两部分组成。
- 编码器负责提取输入图像的特征,
- 解码器则通过上采样操作将特征图恢复到原始输入图像的尺寸,并逐步生成分割结果。
UNet的关键创新在于解码器中引入了跳跃连接(Skip Connections),将编码器中的特征图与解码器中对应的特征图进行连接。这种跳跃连接有助于解码器更好地利用不同层次的特征信息,从而提高图像分割的准确性和细节保留能力。
2.Unet模型的基础结构
图一
Unet可以分为三个部分,如上图所示:
- 第一部分是主干特征提取部分,我们可以利用主干部分获得一个又一个的特征层,Unet的主干特征提取部分与VGG相似,为卷积和最大池化的堆叠。利用主干特征提取部分我们可以获得五个初步有效特征层,在第二步中,我们会利用这五个有效特征层可以进行特征融合。
- 第二部分是加强特征提取部分,我们可以利用主干部分获取到的五个初步有效特征层进行上采样,并且进行特征融合,获得一个最终的,融合了所有特征的有效特征层。
- 第三部分是预测部分,我们会利用最终获得的最后一个有效特征层对每一个特征点进行分类,相当于对每一个像素点进行分类。
3.作用及意义
在Stable Diffusion中,U-Net模型是一个关键核心部分,能够预测噪声残差,并结合Sampling method(调度算法:DDPM、DDIM、DPM++等)对输入的特征矩阵进行重构,逐步将其从随机高斯噪声转化成图片的Latent Feature。
具体来说,在前向推理过程中,SD模型通过反复调用 U-Net,将预测出的噪声残差从原噪声矩阵中去除,得到逐步去噪后的图像Latent Feature,再通过VAE的Decoder结构将Latent Feature重建成像素级图像。
2.VAE模型基础
1.VAE概念
VAE(变分自编码器,Variational Auto Encoder)是一种深度学习模型,用于生成新的数据样本。 它通过引入隐变量来描述复杂分布,从而生成新的数据点。VAE结合了编码器和解码器,编码器负责将输入数据压缩为低维的隐状态,而解码器则将隐状态恢复为原始数据的高品质复制。这种模型在图像生成、自然语言处理等领域有广泛应用。
VAE的核心思想在于利用变分推断来近似复杂的概率分布。它通过引入隐变量来描述数据生成的过程,这些隐变量对模型中可观察变量的输出有影响。通过训练编码器和解码器,VAE能够学习数据的概率分布,并生成新的数据点。具体来说,编码器将输入数据映射到低维隐空间,而解码器则将这个低维隐状态恢复为原始数据的高品质复制。
在AI绘画领域,VAE技术被广泛应用于生成新的绘画作品。例如,触站AI是一个集成了VAE技术的在线绘画模型,用户可以通过简单的勾画几笔来生成真实的、艺术感十足的图像。这种技术不仅提高了绘画作品的生成效率,还释放了用户的创造力和艺术潜能。
2.核心作用
在Stable Diffusion中,VAE(变分自编码器,Variational Auto-Encoder)是基于Encoder-Decoder架构的生成模型。VAE的Encoder(编码器)结构能将输入图像转换为低维Latent特征,并作为U-Net的输入。VAE的Decoder(解码器)结构能将低维Latent特征重建还原成像素级图像。
1.核心作用一:
VAE通过encoder编码器将输入数据压缩至Latent隐空间中,作为Unet模型的输入,最后通过decoder解码器进行图像重建的作用;
图二
如图二,有编码器和解码器组成,当我们输入一个尺寸为 H×W×C 的数据,VAE的Encoder模块会将其编码为一个大小为h×w×c的低维Latent特征,其中f=H/h=W/w为VAE的下采样率(Downsampling Factor)。反之,VAE的Decoder模块有一个相同的上采样率(Upsampling Factor)将低维Latent特征重建成像素级别的图像。
- Q1:什么是隐空间(Latent space)/隐变量(hidden variables)?
- 图三
隐变量:如上图三左半部分
假设:从a很难推导出b
但是从a能够推导出某个中间变量“c”,从“c”能够推导出b;
因此我们要从a推导出b,可以通过从a推导出中间变量“c”,然后再推导出b。这里的中间变量“c”就称为“隐变量”
有时遇到的原始数据建模很困难,此时可以将原始数据装换成另一种格式的数据----“隐变量”
隐空间(latent space):如上图右半部分
隐变量所在空间,这极大地降低了扩散模型的计算复杂度。
- 而VAE模型在编码器之后得到一组维度小于原图维度的隐变量(一组对图片的压缩表示)
2.核心作用二:
不同版本的VAE模型,能够在生成的图片的细节与整体颜色上发生改变,通俗理解:滤镜+微调
图四
通过图四可以清晰看到VAE模型的第二个核心作用;
3.Diffusion Mode基础
1.Diffusion Mode的基础
扩散模型Diffusion Models是一种新型的、先进的生成模型,用于生成与训练数据相似的数据,可以生成各种高分辨率图像。
它通过两个核心过程——前向扩散过程和反向去噪过程——来实现从噪声数据生成复杂样本。
图五
如图五:
-
前向扩散:向原始数据逐步添加噪声的过程,直到数据变为纯噪声。
虽然这个过程本身并不能直接生成图片,但它对于理解扩散模型的工作原理以及构建训练样本的目标(ground truth,简称GT)至关重要。
逆扩散:前向扩散的逆操作,从纯噪声开始,逐步去除噪声以还原出原始数据。
这个过程依赖于模型学习到的如何从噪声中恢复出原始数据的模式。模型通过神经网络学习逆扩散过程,从而能够生成与原始数据相似的样本。
这种模型之所以有效,是因为它能够通过学习去噪步骤,在重建过程中捕捉到数据的复杂结构和分布,尽管直观上加噪看似与生成清晰图像相悖。
扩散模型在图像生成、分类、以及如Stable Diffusion、DALL-E等以文生图应用中展现出了卓越性能,其成功在于其强大的特征学习能力、生成高质量样本的能力,以及在数据有限时的良好泛化性能。
2.为什么要加噪和去噪
提高模型鲁棒性:加入噪声可以使模型更具有鲁棒性,能够更好地处理现实世界中的变化和噪声。在训练过程中,模型需要学会从不完美的数据中提取有用的信息,并且对噪声更具有容忍性。
促进样本多样性:通过引入不同类型和强度的噪声,可以增加训练数据的多样性,从而帮助模型更好地泛化到未见过的数据。这有助于防止过拟合,并提高模型的性能。
解决模型偏差:在一些情况下,模型可能存在偏差,即对数据的错误偏好或错误假设。加入噪声可以帮助模型更好地克服这种偏差,从而提高模型的泛化能力和性能。
模拟真实场景:现实世界中的数据往往会受到各种噪声的影响,例如传感器误差、环境变化等。通过在训练数据中引入类似的噪声,可以使模型更好地模拟真实场景,并提高其在实际应用中的效果。
3.扩散模型的网络结构
图六
利用马尔可夫链来定义扩散步骤,通过每一步的状态转移来逐渐将数据“破坏”成纯噪声。然后,通过训练神经网络来逼近真实的反转扩散过程,扩散模型能够从纯噪声中逐步还原出原始数据。
目前有两种结构:
1.基于UNet的网络结构
图七
2.基于DiT的网络结构
图八
4.图像生成模型Stable Diffusion(SD)基础
1.图像生成模型的发展
图九
2.SD模型的结构
1.基于UNet的SD网络结构
图十
如上图:End-to-End模型,由VAE(左侧红色部分),基于Unet的diffusion mode(中间绿色部分)以及CLIP Text Encoder(右侧白色部分)三个核心组件构成
2.基于DiT的SD网络结构
图十一
DiT(Diffusion Transformer)模型由Meta在2022年首次提出,其主要是在ViT(Vision Transformer)的架构上进行了优化设计得到的。DiT是基于Transformer架构的扩散模型,将扩散模型中经典的U-Net架构完全替换成了Transformer架构。
3.SD文生图工作流程
图十二
- 输入:(文本emdedding)将输入的文本(prompt)通过Text Encoder提取出Text Embeddings特征(77x768);(初始化latent噪音矩阵)同时初始化一个Latent空间的随机高斯噪声矩阵(维度为64x64x4,对应512x512分辨率图像)。
- 生成过程:(图文融合)将Text Embeddings特征和随机高斯噪声矩阵通过CrossAttention机制送入U-Net中,(去噪)结合Scheduler algorithm(调度算法)迭代去噪,(输出)经过N次迭代后生成去噪后的Latent特征。
- 输出:(VAE构建)将去噪后的Latent特征送入VAE的Decoder模块,重建出像素级图像(512x512分辨率)。
以上就是本次分享的关于文生图SD模型相关的模型知识,个人观点,希望有所帮助
相关文章:

浅谈文生图Stable Diffusion(SD)相关模型基础
1.U-Net模型基础 1.基础概念 UNet模型是一种基于卷积神经网络的图像分割算法,它采用了U型的网络结构,由编码器(下采样路径)和解码器(上采样路径)两部分组成。 编码器负责提取输入图像的特征,…...

Vivado使用VScode编译器
旧版Vivado使用Vscode编译器偶尔会出现VScode界面卡死的情况,在新版的Vivado中(我的是Vivado 2023.2),可以使用如下方式: 在设置中选择Text Editor,选择Custom Editor 在对话框中输入以下语句:…...

CEF127 编译指南 MacOS 篇 - 拉取 CEF 源码(五)
1. 引言 在完成了所有必要工具的安装和配置后,我们进入到获取 CEF 源码的阶段。对于 macOS 平台,CEF 的源码获取过程需要特别注意不同芯片架构(Intel 和 Apple Silicon)的区别以及版本管理。本文将详细介绍如何在 macOS 系统上获…...

Jenkins 中 写 shell 命令执行失败,检测失败问题
由于项目的 依赖复杂,随着版本的增多,人工操作,手误几率太大,我们选取kenins 来自动化发布、更新。 这里主要解决,发布 的 每个阶段,确保每个阶段执行成功。 比如: js 运行,…...

Java程序打包成exe,无Java环境也能运行
Java程序开发完成后,通常情况下以jar包的形式发布。但有时我们需要给非软件开发人员使用程序,如制作好窗体应用,把它发给没有java开发环境的人使用,此时就需要制作exe安装包。本文介绍如何将java程序制作成exe安装包,并…...

【java 正则表达式 笔记】
文章目录 快速入门匹配中文或数字或大小写字母(一个或多个) 正则表达式底层实现(重要)mather.find() 完成的任务mather.group(0) 分析 正则表达式基本语法元字符转义字符区分大小写限定字符选择匹配符特殊字符字符匹配符定位符 分组、捕获和反向引用捕获特别分组反向引用经典结…...

基于PWLCM混沌映射的麋鹿群优化算法(Elk herd optimizer,EHO)的多无人机协同路径规划,MATLAB代码
一、麋鹿群优化算法EHO 基本概念 麋鹿群优化算法(EHO,Elephant Herding Optimization)是2024年提出的一种启发式优化算法,它的灵感来自麋鹿群的繁殖过程。麋鹿有两个主要的繁殖季节:发情和产犊。在发情季节࿰…...

Vue2五、自定义指令,全局局部注册、指令的值 ,插槽--默认插槽,具名插槽 ( 作用域插槽)
一、自定义指令 使用步骤 1. 注册 (全局注册 或 局部注册) ,在 inserted 钩子函数中,配置指令dom逻辑 2. 标签上 v-指令名 使用 1、自定义指令(全局) Vue.directive("指令名",{ 指令的配置项 insert…...

Pika Labs技术浅析(五):商业智能技术
Pika Labs 的商业智能旨在通过联机分析处理(OLAP)和数据仓库(Data Warehouse)等技术,帮助企业用户高效地进行数据分析和决策支持。 一、商业智能技术模块概述 Pika Labs 的商业智能技术模块旨在通过集成数据仓库和联机…...

YOLO-World:Real-Time Open-Vocabulary Object Detection
目录 摘要 Abstract YOLO-World 1 模型架构 1.1 Text Encoder 1.2 YOLO Backbone 2 RepVL-PAN 2.1 T-CSPLayer 2.2 I-Pooling Attention 2.3 预测 3 消融实验 3.1 预训练数据 3.2 RepVL-PAN的消融实验 3.3 文本编码器 4 效果展示 4.1 零样本 4.2 根据词汇表检…...

Fastjson <= 1.2.47 反序列化漏洞复现
0x01 前言 Fastjson 是一个 Java 语言编写的高性能功能完善的 JSON 库,可以将 Java 对象转换为 JSON 格式,也可以将 JSON 字符串转换为 Java 对象,在中国和美国使用较为广泛。 0x02 漏洞成因 Fastjson < 1.2.68 版本在处理反序列化对象时…...

鸿蒙项目云捐助第二十一讲云捐助项目物联网IoT模拟器的使用
鸿蒙项目云捐助第二十一讲云捐助项目物联网IoT模拟器的使用 在前面的内容中,已经实现了云捐助物联网IoT的产品及设备设置,并且使用华为云Iot设备的在线调试工具进行命令下发的调试,这里也可以通过华为Iot物联网提供的MQTT模拟器进行连接。 …...

大数据技术原理与应用期末复习-知识点(二)
HBASE Hbase与传统关系数据库的对比分析 1.数据类型: 关系型数据库采用关系模型 Hbase采用更简单的数据模型(把数据存储为未经解释的字符串) 2.数据操作: 关系数据库:增删改查等 Hbase:插入 查询 删…...

高效准确的PDF解析工具,赋能企业非结构化数据治理
目录 准确性高:还原复杂版面元素 使用便捷:灵活适配场景 贴心服务:快速响应机制 在数据为王的时代浪潮中,企业数据治理已成为组织优化运营、提高竞争力的关键。随着数字化进程的加速,企业所积累的数据量呈爆炸式增长…...

C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
一、介绍 栈和队列是限定插入和删除只能在表的“端点”进行的线性表,是线性表的子集,是插入和删除位置受限的线性表。 (操作受限的线性表) 二、栈 1)概念: 栈(stack)是一个特殊的线性表,是限…...

读书笔记~管理修炼-缄默效应
缄默效应:学会正确批评下属 员工明明犯了错误,却不及时告知你,总是拖到最后一刻无法弥补时才不得不承认出了问题——你遇到过这样的问题吗? 这其实是缄默效应在发挥作用。 在职场中,即使再扁平化的环境&…...

视频会议系统会前预约模块必须包含哪些功能?
视频会议系统会前预约模块必须包含哪些功能? 视频会议系统的会前预约模块是企业高效管理会议资源、提升会议效率的重要工具。一个完善的会前预约模块必须包含一系列功能,以确保会议的顺利进行和资源的合理分配。以下是对视频会议系统会前预约模块必须包…...

RabbitMQ中的Topic模式
在现代分布式系统中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个广泛使用的开源消息代理,支持多种消息传递模式,其中 Topic 模式 是一种灵活且强大的模式,允许生产者…...

tslib(触摸屏输入设备的轻量级库)的学习、编译及测试记录
目录 tslib的简介tslib的源码和make及make install后得到的文件下载tslib的主要功能tslib的工作原理tslib的核心组成部分tslib的框架和核心函数分析tslib的框架tslib的核心函数ts_setup()的分析(对如何获取设备名和数据处理流程的分析)函数ts_setup()自身的主要代码ts_setup()对…...

Ubuntu vi(vim)编辑器配置一键补全main函数
1.打开对应的配置文件 vi ~/.vim/snippets/c.snippets 2.按G将光标定位到文件末尾 3.按i进入插入模式 以tab键开头插入下的内容,空行也要加 tab键 4.:wq保存退出 5.再打开任意一个新的 .c文件后,插入模式输入 main 然后按tal键就能补全了...

验证码机制
偶然间看到了验证码机制,顺便总结一下: 首先,验证码是从后端生成的,随机生成; 【后端永远认为前端有可能会被伪造】 1.后端调用相关的绘图第三方类库,或是(平台PHP、.NET、java)系…...

【CVE-2024-56145】PHP 漏洞导致 Craft CMS 出现 RCE
大多数开发人员都同意,与 15 年前相比,PHP 是一种更加理智、更加安全和可靠的语言。PHP5早期的不良设计已让位于更好的开发生态系统,其中包括类、自动加载、更严格的类型、更理智的语法以及一大堆其他改进。安全性也没有被忽视。 register_globals一些老读者可能还记得和的…...

使用FakeSMTP创建本地SMTP服务器接收邮件具体实现。
以下代码来自Let’s Go further节选。具体说明均为作者本人理解。 编辑邮件模版 主要包含三个template: subject:主题plainBody: 纯文本正文htmlBody:超文本语言正文 {{define "subject"}}Welcome to Greenlight!{{end}} {{def…...

【网络安全】逆向工程 练习示例
1. 逆向工程简介 逆向工程 (RE) 是将某物分解以了解其功能的过程。在网络安全中,逆向工程用于分析应用程序(二进制文件)的运行方式。这可用于确定应用程序是否是恶意的或是否存在任何安全漏洞。 例如,网络安全分析师对攻击者分发…...

Oracle Database 21c Express Edition数据库 和 Sqlplus客户端安装配置
目录 一. 前置条件二. Win10安装配置Oracle数据库2.1 数据库获取2.2 数据库安装2.3 数据库配置确认2.4 数据库访问 三. Win10配置Oracle数据库可对外访问3.1 打开文件和打印机共享3.2 开放1521端口 四. 端口与地址确认4.1 查看监听器的状态4.2 Win10查看1521端口是否被监听4.3 …...

arcgisPro将面要素转成CAD多段线
1、说明:正常使用【导出为CAD】工具,则导出的是CAD三维多线段,无法进行编辑操作、读取面积等。这是因为要素面中包含Z值,导出则为三维多线段数据。需要利用【复制要素】工具禁用M值和Z值,再导出为CAD,则得到…...

相机内外参知识
已知相机的内外参数矩阵,可以求得相机在世界坐标系下的原点坐标。这里需要理解几个概念: 内参数矩阵(Intrinsic Matrix): 描述相机本身的属性,比如焦距、主点位置等。外参数矩阵(Extrinsic Matrix…...

从代币角度介绍solana账户体系
1、solana 的账户概念介绍 Solana的账户体系是其区块链的核心组成部分,它允许数据和价值在链上存储和转移。以下是Solana账户体系的一些关键特点: • 账户模型: • 在Solana上,所有数据都存储在所谓的“账户”中,类似…...

前端引入字体文件
1. 字体下载 阿里矢量图图标库地址 https://www.iconfont.cn/,页面打开后选中,素材库 > 字体库 左侧两个标签页可以切换,右侧放大镜图标可以搜索自己需要的字体 字体预览区域可以自行调整进行字体预览 右上角点击字体包下载,下…...

qemu启动后网络怎么设置?配合qemu-system-riscv64的命令设置
QEMU启动的时候,可以选择组网方式,一般有两种选择,user模式和tap模式 user模式就是用NAT,tap模式就是用bridge网桥模式。以前也有过一次实践:FreeBSD RISCV 在QEME中实践-网络配置_pkg.txz: not found-CSDN博客 user…...