当前位置: 首页 > news >正文

浅谈文生图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年提出的一种启发式优化算法,它的灵感来自麋鹿群的繁殖过程。麋鹿有两个主要的繁殖季节:发情和产犊。在发情季节&#xff0…...

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 库&#xff0c;可以将 Java 对象转换为 JSON 格式&#xff0c;也可以将 JSON 字符串转换为 Java 对象&#xff0c;在中国和美国使用较为广泛。 0x02 漏洞成因 Fastjson < 1.2.68 版本在处理反序列化对象时…...

鸿蒙项目云捐助第二十一讲云捐助项目物联网IoT模拟器的使用

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

大数据技术原理与应用期末复习-知识点(二)

HBASE Hbase与传统关系数据库的对比分析 1.数据类型&#xff1a; 关系型数据库采用关系模型 Hbase采用更简单的数据模型&#xff08;把数据存储为未经解释的字符串&#xff09; 2.数据操作&#xff1a; 关系数据库&#xff1a;增删改查等 Hbase&#xff1a;插入 查询 删…...

高效准确的PDF解析工具,赋能企业非结构化数据治理

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

C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码

一、介绍 栈和队列是限定插入和删除只能在表的“端点”进行的线性表&#xff0c;是线性表的子集&#xff0c;是插入和删除位置受限的线性表。 &#xff08;操作受限的线性表&#xff09; 二、栈 1&#xff09;概念&#xff1a; 栈(stack)是一个特殊的线性表&#xff0c;是限…...

读书笔记~管理修炼-缄默效应

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

视频会议系统会前预约模块必须包含哪些功能?

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

RabbitMQ中的Topic模式

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

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键开头插入下的内容&#xff0c;空行也要加 tab键 4.:wq保存退出 5.再打开任意一个新的 .c文件后&#xff0c;插入模式输入 main 然后按tal键就能补全了...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...