Stable Diffusion 笔记一:网络结构拆解

news2024/10/7 4:29:04

SD由三大组件组成:VAE,CLIP,Unet。

一VAE:

VAE是Variational Autoencoder的缩写,中文名变分自编码器,是一种基于深度学习的生成模型。

1潜空间图片与像素图片:

像素图片是正常使用的图片,通常包含主体的物体人物角色,和多余的部分空白背景等与主体无关的噪声。

潜空间图片可以理解为是像素图片在高维空间的另一种表达,是像素图片的一种压缩表示。

SD生成的图片是潜空间图片(Latent image)而不是直接使用的图片(Pixel image)。

2VAE编码和解码的过程 

VAE编码器的部分作用是将像素图片编码转为潜空间图片,SD在此潜空间图片上进行迭代生成,迭代后的图片再由VAE解码器部分转换成像素级图片。

编码过程进行了8倍下采样操作,图片尺寸由512变为64,缩小8倍。

解码过程进行了8倍上采样操作,图片尺寸变为512,与目标的原始尺寸一致。

即编码前的图片尺寸与解码后的图片尺寸是match的。

3其他:

潜空间图片通道数目为4是先人实验结论得出的。

4 VAE编码过程:

原始像素图片经过3个 ResidualBlock+DownSample 进行了8倍下采样操作。

再经注意力部分(Attention Block)转换为潜空间图片。

VAE主要的结构是这个注意力模块,存疑?

这个地方也是耗费大量显存的部分。

解码的过程是这个流程反过来。

二CLIP

CLIP的将promt转换成可以用于SD用于生成图片的词向量格式。

1 流程:

文字输入到SD的提示词如:a girl in white dress,

使用tokenizer跟进词库将单词转换为数字即tokens,如:a girl in white dress, -->[0,21,5,128,64]

再通过embedding将tokens转换成768维的特征向量。每一个数字转换成768维的向量。

最后通过Transformer Block 将向量变换转换成可以输入到后续unet的feature map。

2 Transformer 分为 Transformer Encoder 和  Transformer Decoder

Clip中只使用了Transformer Encoder的结构。

三U-net

1网络结构图:

U-net共套了4成这样的网络结构,第4层没有中间的middle Block:Down-->Up的部分。 

2注意力模块的两种形式:

 

 自注意力模块的输入和输出都是自己。

交叉注意力模块的输入一部分是自己,另一部分是其他的一些信息。

3Transformer Block 的encoder和decoder

 

 Encoder结构只使用了自注意力模块,Decoder结构使用了两种注意力模块。

Unet里使用的是TransformerDecoder 

 

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

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

相关文章

(九)springboot实战——springboot3下的webflux项目参数验证及其全局参数验证异常处理

前言 在上一节内容中,我们介绍了如何在webflux项目中自定义实现一个全局的异常处理器ErrorWebExceptionHandler,正常情况下其可以处理我们系统的运行时异常,但是无法处理参数验证的异常WebExchangeBindException,所以这里提供另外…

Amazon CodeWhisperer 代码提示——Golang 测评

前言 官网链接: 亚马逊云科技 Amazon CodeGuru Reviewer 中的 CodeWhisperer 是一种代码提示工具,它使用机器学习和人工智能技术来提高开发人员的代码质量和效率。它可以通过分析代码库中的历史代码和最佳实践,为开发人员提供有关如何改进其…

vue预览pdf文件的几种方法

文章目录 vue预览pdf集中方法方法一:方法二:展示效果:需要包依赖:代码: 方法三:展示效果:需要包依赖:代码:自己调参数,选择符合自己的 vue预览pdf集中方法 我…

selenium-Web界面搜索功能测试

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号:互联网杂货铺,回复1 ,免费获取软件测试全套资料,资料在手,薪资嘎嘎涨 测试环境准备: 1、安装Python 2、安装Ch…

C++面试宝典第25题:阶乘末尾零的个数

题目 给定一个整数n,返回n!(n的阶乘)结果尾数中零的个数。 示例 1: 输入:3 输出:0 解释:3! = 6,尾数中没有零。 示例 2: 输入:5 输出:1 解释:5! = 120,尾数中有1个零。 解析 这道题主要考察应聘者对于数学问题的分析和理解能力,以及在多个解决方案中,寻求最优…

Python 拼接字符串的 7 种方式

忘了在哪看到一位编程大牛调侃,他说程序员每天就做两件事,其中之一就是处理字符串。相信不少同学会有同感。 几乎任何一种编程语言,都把字符串列为最基础和不可或缺的数据类型。而拼接字符串是必备的一种技能。今天,我跟大家一起来…

Github 2024-01-28 开源项目日报Top10

根据Github Trendings的统计,今日(2024-01-28统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目3TypeScript项目2Rust项目1HTML项目1JavaScript项目1Cuda项目1C#项目1非开发语言项目1 Nuxt&#…

Spring Boot通过配置文件支持数据库自定义表名

直接上干货: 例如一个叫xxx的项目,yml文件里加上这段 xxxproject:db:xxxTable: xxx_dbname #自定义的数据库表名创一个Configuration类放表名和Mapper // XxxProjectAutoConfiguration.javaConfiguration MapperScan(basePackages "cn.com.xxxp…

蓝牙----蓝牙连接建立_连接建立

蓝牙----蓝牙连接建立_连接建立 蓝牙连接建立过程图1.主机扫描到广播包1.1判断是否是自己关心的广播包1.2广播地址添加到扫描列表 2.主机扫描结束,建立连接3.主从连接成功后,执行连接建立后事件3.1.主机将连接句柄和设备地址添加到连接列表3.2.主机进行G…

ad18学习笔记十六:v割

所谓“V割”是印刷电路板(PCB)厂商依据客户的图纸要求,事先在PCB的特定位置用转盘刀具切割好的一条条分割线,其目的是为了方便后续SMT电路板组装完成后的分板之用,因为其切割后的外型看起来就像个英文的“V”字型&…

msfconsole实战使用(结合靶场演示)

msfconsole实战使用 前言 MSFconsole(Metasploit Framework Console)是Metasploit框架的一部分,是一个功能强大的渗透测试工具。Metasploit框架是一个开源的安全工具,旨在开发、测试和执行针对计算机系统的攻击。MSFconsole是Me…

SpringMvc切换Json转换工具

SpringBoot切换使用goolge的Gson作为SpringMvc的Json转换工具 <!-- gson依赖 --> <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId> </dependency>Configuration public class JsonWebConfig {B…

ThreadLocal学习笔记

ThreadLocal类图 ThreadLocal/InheritableThreadLocal/ \TransmittableThreadLocal(阿里巴巴) TransmissibleThreadLocal(阿里巴巴)ThreadLocal 这是Thread类的局部变量&#xff0c;每个线程私有。 它主要用于解决多线程中的数据共享问题&#xff0c;保…

把数组中的key都取出来然后去重

今日接到一个小需求&#xff0c;一张表有类似这样的数据&#xff1a;&#xff08;下面是一行&#xff09; 但是每行的数据&#xff0c;主要是key不一样&#xff0c;我们想把所有的key取出来&#xff0c;并且做个去重。 首先我先在mysql中&#xff0c; SELECT GROUP_CONCAT(RE…

在租户内启用SharePoint Embedded

要开启 SharePoint Embedded&#xff0c;你得是管理员&#xff0c;然后按照这些步骤操作&#xff1a; 登录到你的 SharePoint 管理中心。在左边的菜单里找到“设置”选项&#xff0c;点进去。 3. 在设置页面里找到“SharePoint Embedded 应用”。 4.如果这个功能还没开启&…

高阶测试开发必备技能: k8s入门!

现在稍微有点规模公司都是基于docker容器化部署技巧&#xff0c;K8s现在主流&#xff0c;应用最广的容器集群管理技术。 k8s全称kubernetes&#xff08;首字母为 k、首字母与尾字母之间有 8 个字符、尾字母为 s&#xff0c;所以简称 k8s&#xff09;&#xff0c;基于Docker容器…

Top-level await is not available in the configured target environment

当在使用 Vite 进行项目构建时&#xff0c;可能会遇到如下错误提示&#xff1a;ERROR: Top-level await is not available in the configured target environment。 问题原因 这个错误通常是由于项目配置中的目标浏览器环境不支持 JavaScript 的 top-level-await 特性。top-le…

探索Viper-适用于GoLang的完整配置解决方案

前言 对于现代应用程序&#xff0c;尤其大中型的项目来说&#xff0c;在程序启动和运行时&#xff0c;往往需要传入许多参数来控制程序的行为&#xff0c;我们可以通过命令行参数&#xff0c;环境变量&#xff0c;配置文件等方式来将参数传递给程序。而Viper库为Golang语言开发…

Mac安装配置maven

Mac安装配置maven 官网下载地址&#xff1a;https://maven.apache.org/download.cgi 下载好以后解压配置 maven 环境变量 打开终端&#xff0c;输入命令打开配置文件./bash_profile open ~/.bash_profile输入i进入编辑模式,进行maven配置; MAVEN_HOME为maven的本地路径 ex…

VR全景技术对党建宣传有什么好处,如何应用在党建宣传

引言&#xff1a; 近年来&#xff0c;随着VR&#xff08;虚拟现实&#xff09;全景技术的不断发展&#xff0c;其在各个领域的应用也愈加广泛。在党建宣传方面&#xff0c;VR全景技术正逐渐成为一种创新而强大的工具&#xff0c;为组织的思想宣传提供了全新的方式。 一&#x…