Stable Diffusion模型阅读笔记

news2024/9/21 0:46:28

Stable Diffusion模型

什么是Stable Diffusion模型

一般而言,扩散是在图像中反复添加小且随机的噪声。与之相反,Stable Diffusion模型是一种将噪声生成为图像的机器学习模型。经过训练,它可逐步对随机高斯噪声进行去噪以获得感兴趣的样本,如无条件图片生成(unconditional image synthesis)、图片修复(inpainting)、图片超分(super-resolution)、类别条件图片生成(class-condition)、文图生成(text-to-image)、布局条件图片生成(layout-to-image)等。训练的神经网络通常为U-Net。

扩散模型的主要缺陷在于其去噪过程的耗时与内存消耗十分昂贵。进程变慢以及大量内存的消耗是此类模型的特点。造成这一缺陷的主要原因是它们在像素空间进行了大量的运算。

Latent Diffusion的引入

通过在较低维度的潜空间上应用扩散过程而非使用实际的像素空间,Latent Diffusion降低了模型对计算资源的消耗。

Latent Diffusion模型的组成

Latent Diffusion模型有三个主要组成部分:

Variational autoencoders (VAE)

Variational autoencoders由编码器(encoder)和解码器(decoder)组成。前者忽略图片中的高频信息,只保留重要的深层特征,将图像转换为低维潜空间中的表示,该表示可作为下一组件U-Net的输入。后者则将潜空间中的表示转化为图像。

在训练过程中,利用编码器获得正向扩散过程中输入图像的潜表示(latent)。而在推理过程中,解码器可以用来把潜表示转化为图像。

U-Net

该模块由以残差模块组成的编码器和解码器组成。编码器压缩图像,解码器则将低分辨率图像解码为高分辨率图像。

为防止U-Net在下采样时丢失重要信息,在编码器的下采样与解码器的上采样之间添加了连接。

在Stable Diffusion模型中使用的U-Net模型中的解码器与编码器之间增加了用于对文本嵌入的输出进行调节的交叉注意层。

Text-Encoder

文本编码器是一个基于transformer的编码器,它将标记序列映射至潜在文本嵌入序列,使得输入的文字被转换为U-Net可以理解的嵌入空间以指导模型对潜表示的去噪。

Latent Diffusion有效的原因 


U-Net在低维空间上操作,与像素空间中的扩散相比,降低了计算复杂度与内存消耗。

训练细节

该模型的训练数据为LAION-5B及其子集。

训练Latent Diffusion模型时:

  • 图像首先由编码器进行编码转换为低维潜空间中的表示(自编码器将输入图像进行下采样使其缩放8倍,并将原始大小为的图像映射为尺度是的潜表示)。

  • 输入的文字则被ViT-L/14文本编码器转换。

  • 转换所得的文本嵌入序列通过交叉注意层插入U-Net中。

  • 计算U-Net预测结果与潜表示中掺入噪声的结果之间的重构误差。

模型训练采用了多块A100显卡,使用AdamW优化器,batchsize设为2048。训练时,首先预热10000步,使得学习率从增至,其后保持恒定直至训练结束。

Stable Diffusion模型的推理过程

img2img

1. 输入图片,利用编码器获取其对应的初始潜表示。如下图所示,若输入的RGB图像为的分辨率,那么输出的潜表示向量维度为。

模型的编码器部分结构

2. 调用文本解码器将prompt解析为模型可理解的文本嵌入序列。

3. 将输入图片的潜表示和噪声混合后,与文本嵌入序列一起送入采样模型,然后将所得结果输入模型的解码器获得当前结果。

4. 循环2、3两步,将所得输出存入图片序列。

Latent Diffusion模型推理机制

模型超分辨效果优秀的原因

Stable Diffusion模型所采用的超分辨方法效果十分显著,它能够有效消除低分辨率图像中的振铃和overshoot伪影。取得如此效果的原因在于:

  • 引入高阶退化过程模拟更为真实的退化,包含多个重复的经典退化过程,每个过程具有不同的退化超参数:

采用二阶退化,模拟模糊、噪声、缩放、JPEG压缩等实际退化。

  • 采用U-Net结构,并引入skip-connection方案,保证模型在获取图像深层信息的同时保留一部分高频信息。

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

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

相关文章

Apache Hop Transforms Samples【持续完善中】

Samples transforms 1、abort-basic.hpl 根据筛选器行转换的结果中止此管道 第一步:添加Data grid转换,Meta部分维护字段。 Data部分维护数据,如下图。 第二步:添加filter rows,如下图 按照如下截图进行修改: 第三步:添加Abort 第四步:执行截图如下:

[附源码]Python计算机毕业设计Django学生综合数据分析系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Golang 【basic_leaming】fmt.Print, fmt.Printf, fmt.Println 的区别

阅读目录fmt 包fmt.Print 原样输出fmt.Printf 格式输出fmt.Println 值 空格 输出换行输出Println 和 Print 区别Println 和 Printf 区别变量类型推导方式定义变量使用 Printf打印一个变量的类型fmt 包 fmt format,是一种格式化输出函数汇总包,用于格式…

这款国产API工具也太强了吧!让我放弃了postman

为什么弃用postman转用Eolink? 程序员在接口开发完成后都通常需要自测,当返回结果根据符合预期时,则表示代表接口可用。自己以前用的是postman来进行接口测试,但postman只能进行接口测试,有局限性、很多场景不能满足我的需求&am…

jenkins集成sonarqube

一、在linux上面安装sonarqube 相关文件下载地址 (1)下载sonarqube-9.6.1.59531.zip解压 (2)创建用户 useradd sonar passwd sonar(3)赋权 chown -R sonar.sonar /opt/sonarqube/sonarqube-9.6.1.59531(4)切换用户&#xff0c…

【C++】C++11新特性

目录 一.列表初始化initializer_list 1.什么是列表初始化 2.列表初始化的原理 二.auto/decltype/nullptr 1.auto - 自动类型推导 2.decltype - 指定类型 3.nullptr - C空指针 三.范围for 四.右值引用/移动构造/移动赋值/万能引用/完美转发 1.什么是右值 2.左值与右值…

react面试题总结一波,以备不时之需

React组件的构造函数有什么作用?它是必须的吗? 构造函数主要用于两个目的: 通过将对象分配给this.state来初始化本地状态将事件处理程序方法绑定到实例上 所以,当在React class中需要设置state的初始值或者绑定事件时&#xff…

首版20年后开源反病毒引擎 ClamAV 1.0 发布

导读ClamAV 是一个开源的(GPL)反病毒引擎,用于检测木马、病毒、恶意软件和其他恶意威胁。它为用户提供了许多实用程序,包括一个可扩展的多线程守护程序、一个命令行扫描器和一个自动更新数据库的高级工具。 ClamAV 是一个开源的&a…

rust编译器教我做人,为啥还要学习rust语言,因为想使用rust做一些底层服务,更深入的研究技术。

目录1,继续学习Rust语言,确实学习成本很高,学了两周还在学习入门概念,和编译器斗争2,rust学习曲线非常高,为啥还要坚持学习,一直想写一些服务研究研究底层的技术啥的3,rust对前端也有…

git回退版本 简单易懂

进行git版本回退的时候 查看git提交的版本 使用git log查看提交日志: git loggit log命令显示从最近到最远的提交日志 如果嫌输出信息太多,可以试试加上–prettyoneline参数,代码如下: $ git log --prettyoneline 日志会进行减少 根据…

【分布式系统】分布式缓存Redis集群原理与环境搭建

文章目录集群原理缓存分片算法Hash算法一致性Hash算法二者区别集群方案通信协议缓存路由缓存扩展保障可用性搭建redis安装步骤集群安装基本配置启动节点创建集群访问集群添加主节点加入集群分配槽添加从节点切换从节点删除节点手动切换故障升级节点问题记录安装gccjemalloc/jem…

3.21 小红书薯条改版了,都改了些什么呢?【玩赚小红书】

一、薯条是什么? 咱们在座的大部分都是小红书深度用户,相信对薯条再熟悉不过了。 「薯条」 就是小红书自助式的投放工具,通过投放薯条,能给我们提供更多的曝光度,带来更多的赞藏评,从而提高内容的转化率&…

通信原理 | 彻底搞懂卷积

先从多项式运算说起 下面这个多项式,大家应该都会算: 一般做法是先逐项相乘,再合并同类项,需要两步才能完成,那有没有一步就能完成的方法呢? 下面的方法就可以做到 总结这种计算过程: 反褶:多项式按照x的降幂排列,将其中任意一个多项式各项按照升幂排列。 平移:将…

加拿大学生服务部门都有哪些?

咱们今天来聊聊和同学们密切相关的大学里的学生服务部门都有哪些?同学们有了各种问题可以去找谁解决?知道了这些团队,同学们远在千里上着网课,就不会有孤立无援的感觉啦。 1. Registrition Office 这是负责新生注册管理的部门。大…

(附源码)ssm在线学习系统 毕业设计 261624

摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存…

安装阿里的龙蜥系统

1.打开VMware workstations 点击文件 选择新建虚拟机 2.选择虚拟机类型的配置 3.如何安装操作系统 4.选择操作系统的版本 5.修改虚拟机名称和位置 6.设置指定磁盘的容量 默认20G 7.检查新建虚拟机所有参数检查选择的所有参数是否有误,没问题就点完成&#xff0…

java面试强基(19)

HashMap 和 Hashtable 的区别? 线程是否安全: HashMap 是非线程安全的,Hashtable 是线程安全的,因为 Hashtable 内部的方法基本都经过synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMap 吧!&am…

CCES软件开发ADSP-21489的详解

作者的话 21489和21479在自己写代码C编程的开发模式下,可以使用 Visual DSP软件,也可以使用 CCES 软件。CCES 软件是基于 Eclipse内核的,所以你会发现使用起来跟很多其他的调试工具很类似。本篇会简单的讲一下如何用CCES 软件来做开发。 PS…

【发福利啦!】畅享上百万卡时NPU普惠算力,启智与昇思MindSpore社区联合推出算力支持计划

启智社区与MindSpore联合,为MindSpore开发者提供 365天*24小时 上百万卡时的MindSporeNPU普惠算力,欢迎MindSpore产学研开发者申请,基于MindSpore开发你自己的模型算法套件和应用 嘿~因为了解到日理万机的你可能没有时间仔细阅读完整篇文章&…

[windows] opencv + ffmpeg + h264 + h265 源码编译教程

1 前言 此方法可支持读写 H264/H265编码的视频 2 环境准备 官网下载 msys 安装 建议默认路径安装,避免不必要的麻烦 打开MSYS2 MSYS命令行 打开后,能看见下图中的MSYS标记 在MSYS 命令行上执行下面命令安装依赖库,安装的时候建议每个…