SD中的VAE,你不能不懂

news/2024/7/7 19:36:33/文章来源:https://www.cnblogs.com/flydean/p/18281548

什么是VAE?

VAE,即变分自编码器(Variational Autoencoder),是一种生成模型,它通过学习输入数据的潜在表示来重构输入数据。

在Stable Diffusion 1.4 或 1.5 模型中,通过VAE对模型进行部分更新,以提升模型渲染眼睛的能力。通过这种更新,模型在生成图像时能够更准确地捕捉和再现眼睛的细节,从而提高整体图像的真实感和质量。

VAE 由两部分组成:编码器和解码器。编码器将输入数据映射到一个潜在空间,解码器则从这个潜在空间重构数据。

我需要VAE吗?

实际上,你无需安装 VAE 文件即可运行 Stable Diffusion,你使用的任何模型(无论是 v1、v2 还是自定义)都已具有默认 VAE。

当人们说下载和使用 VAE 时,他们指的是使用它的改进版本

当模型训练器使用其他数据进一步微调模型的 VAE 部分时,就会发生这种情况。在这种情况下,并不需要发布整个的大模型,只需要发布其中的VAE部分即可。

使用VAE有什么效果?

VAE(变分自编码器)的改进通常意味着它能够更精确地从潜在空间解码图像,尤其是在处理精细细节方面,比如眼睛和文本的渲染。

在 Stable Diffusion 模型的上下文中,改进的 VAE 解码器可以更有效地捕捉和再现图像中的微妙特征,这对于生成高质量的图像至关重要。

Stability AI 发布了两种微调的 VAE 解码器变体,分别是:

  1. EMA(指数移动平均线):这是一种统计方法,通常用于平滑时间序列数据。在机器学习中,EMA 有时用于模型参数的更新,以实现更稳定的训练过程。
  2. MSE(均方误差):这是一种常用的误差度量方式,用于衡量模型预测值与实际值之间的差异。在自动编码器的上下文中,MSE 可以作为优化目标,帮助模型学习更准确地重构输入数据。

这两种变体可能对应于不同的训练策略或目标函数,旨在优化 VAE 解码器的性能,特别是在渲染细节方面。选择哪一种变体可能取决于特定的应用场景和所需的输出质量。

使用这些微调的 VAE 解码器变体,可以期望在生成的图像中看到以下改进:

  • 更清晰的文本:文本的边缘和字母形状可以更加锐利和准确。
  • 更真实的眼睛渲染:眼睛的细节,如虹膜、瞳孔和反射,可以更加精细和逼真。

下面是一些对比的例子:

image-20240423112006132

那么应该使用哪个呢?

Stability AI 对于 256×256 分辨率图像的评估指出,使用 EMA(指数移动平均线)的 VAE 解码器生成的图像在细节上更加清晰,而使用 MSE(均方误差)的解码器生成的图像则在视觉上更为平滑。

在Stable Diffusion v1.4 和 v1.5 在 512×512 分辨率图像的测试中,可以观察到在某些情况下,尤其是在人脸在图像中占比较小的时候,眼睛的渲染质量有所提升。但是到文本渲染方面并没有太多改善。

所以总结一下,新的 VAE 更新至少不会降低模型的性能,它要么提升了渲染质量,要么保持原有水平。

EMA(指数移动平均线)和 MSE(均方误差)这两种微调的 VAE 解码器变体与 Stable Diffusion v2.0 模型是兼容的。尽管在 v2.0 版本中,它们可能带来的改进效果相对较小,因为 v2.0 本身在渲染眼睛方面已经表现得相当出色。

我应该使用 VAE 吗?

使用 VAE(变分自编码器)的决定确实取决于你对当前结果的满意度以及你对细节改进的追求程度。

  1. 如果对结果已经满意:如果你使用的应用或技术,如 CodeFormer 面部修复,已经能够达到你期望的图像质量,特别是在眼睛等细节部位,那么你可能不需要额外引入 VAE 来进一步提升效果。
  2. 追求所有可能的改进:如果你追求每一个可能的性能提升,哪怕是微小的改进,那么使用 VAE 可能是一个值得考虑的选项。

如何使用VAE?

下载

目前,Stability 发布了两个改进的 VAE 版本。以下是直接下载链接。

https://huggingface.co/stabilityai/sd-vae-ft-ema-original/resolve/main/vae-ft-ema-560000-ema-pruned.ckpt

https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.ckpt

安装

如果你用的是webUI。那么将下载的 VAE 文件放在目录中:'stablediffusion-webui/models/VAE'即可。

Linux 和 Mac OS用户

为方便起见,请在 Linux 或 Mac OS 的 stable-diffusion-webui 目录下运行以下命令,会自动下载并安装 VAE 文件。

wget https://huggingface.co/stabilityai/sd-vae-ft-ema-original/resolve/main/vae-ft-ema-560000-ema-pruned.ckpt -O models/VAE/vae-ft-ema-560000-ema-pruned.ckpt

wget https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.ckpt -O models/VAE/vae-ft-mse-840000-ema-pruned.ckpt

在webUI中使用VAE

要在 AUTOMATIC1111 GUI 中使用 VAE,请单击左侧的“设置”选项卡,然后单击“VAE”部分。

SD VAE 下拉菜单中,选择要使用的 VAE 文件。

image-20240423112845339

如果你的页面没有这个选项,那么可以到设置->user interface->quick settings list中把sd_vae加上即可:

image-20240423113023470

点我查看更多精彩内容:www.flydean.com

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VSCODE 编辑markdown 文件

因为Obsidian版权问题,改用vscode编辑器 编辑markdown 文件 1.使用VSCODE 编辑markdown 文件 首先分别下载 Markdown 和markdown PDF 第三方插件 2.保存文件为md 格式,如果需要缓存图片,可以点击右上角的预览模块。就可以看图片了(window 和linux 服务器都是/ 分隔符) 如…

如何从服务器bios清除磁盘数据

解决问题并查找根源: 一、服务空间不足,服务无法部署或服务不可用 二、清理了大日志文件,但是空间还是不足 1.首先是通过df -h命令查看磁盘的使用情况,主演是看Avail(可用)和Use(已用)的占用百分比,如下所示: df -h Filesystem Size Used Avail Use% Mounted on /dev/m…

《安富莱嵌入式周报》第339期:单片机运行苹果早期Mac系统模拟器,2GHz示波器有源探头,下一代矩阵开关面包板,卡片式声音分贝器,HP经典示波器,ReRAM

周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 视频版 https://www.bilibili.com/video/BV1Kf421Q7Lh目录1、开源2GHz的示波器有源探头 2、模拟矩阵开关面包板Jumperless推出下一代Jumperless V5 3、软件相关…

IBM服务器SQL/ Oracle数据库修复

一、故障诊断: 1.使用IBM服务器管理工具(如IBM Storage Manager)连接到服务器,检查当前存储状态和数据库状态。 2.查看错误日志和系统日志,确定数据库损坏的具体原因,如硬盘故障、RAID阵列崩溃、文件系统损坏等。 风险评估: 1.评估数据库损坏的严重程度和恢复的可能性。…

对vue3中update:属性的理解

最近看到了一个项目中代码,类似于update:count。 对此不太明白用法,这里经过理解之后,记录一下。 大概是这样的这里的场景是父组件中引入了子组件,在父组件中有一个变量count,并将count传入到了子组件。 现在假设父组件上有个按钮,其作用是每次按下,就对父组件中的count…

Vue props的多类型定义报错的问题

报错内容:The "maxHeight" property should be a constructor vue/require-prop-type-constructor 代码中是这样实现的:解决办法: 改成数组型是就可以了

WPF进度条中间写百分比数字

我发现很多同学把思维固话了,通常我们需要实现的进度条是我在网上看到好多例子,但是都没有我的简单,他们不是重写ProcessBar就是使用模板, 可以将TextBlock提取出来啊,灵活一点单独绑定 然后一句代码Panel.ZIndex="1"就搞定了<StackPanel><Button Cont…

mysql连表查询出现数据重复

当我们连表查询遇见数据重复的时候 出现了 好多条 id一样的数据 是错误的 所以我们需要用到distinct关键字进行处理 保证我们数据的唯一性 接下来一个小知识 就是distinct关键字的使用 感谢观看 谢谢

Django中配置media媒体资源 - 存放用户上传的文件

1. 创建media文件夹 2. 配置settings.py# 指定媒体url MEDIA_URL = /media/ # 指定存放媒体文件的文件夹 MEDIA_ROOT = os.path.join(BASE_DIR, media)3. 在urls.py中添加from django.conf import settings from django.conf.urls.static import staticurlpatterns = [path(adm…

OMV数据恢复NAS阵列丢失

针对OMV数据恢复中NAS阵列丢失、RAID设备消失以及文件系统损坏的情况的操作。 一、确认故障现象: 1.检查OMV管理界面,确认RAID设备是否已消失,文件系统是否无法访问。 2.记录所有相关错误信息和日志,以便后续分析。 评估数据重要性: 确定丢失数据的重要性和紧急性,以便制…

联想服务器阵列数据恢复Raid5/0/6数据库RaidZ/虚拟机

针对联想服务器阵列数据恢复,特别是涉及RAID 5/0/6、数据库RAID Z以及虚拟机的情况 一、RAID 5/0/6 数据恢复故障诊断 确定故障类型:首先需要明确是RAID 5/0/6阵列中的哪一部分出现故障,如硬盘掉线、阵列卡损坏、意外断电等。 收集信息:记录服务器型号、RAID配置、硬盘序列…

NAS阵列恢复数据数据恢复开盘

NAS阵列数据恢复,尤其是涉及开盘(即物理层面打开硬盘外壳以进行内部修复或数据提取)的情况,是一个复杂且技术密集型的过程。 一、故障诊断: 1.确定NAS阵列中数据丢失或无法访问的具体原因,如硬盘物理损坏、RAID阵列崩溃、文件系统故障等。 2.记录所有硬盘的序列号、型号及…

2024 年人工智能和数据科学的五个主要趋势

引言 2023年,人工智能和数据科学登上了新闻头条。生成性人工智能的兴起无疑是这一显著提升曝光度的驱引言2023年,人工智能和数据科学登上了新闻头条。生成性人工智能的兴起无疑是这一显著提升曝光度的驱动力。那么,在2024年,该领域将如何继续占据头条,并且这些趋势又将如何…

线段树的基本知识和初级运用

主要介绍了线段树的基本知识点和初级运用前言 线段树绝对是出题人最爱考的高级数据结构了。它快、灵活、码量也大,相当考验 OIer 的综合能力。所以好好学习一下线段树是相当必要的。 基础 线段树是基于二叉树的。通过为二叉树的每个节点赋予线段的意义,线段树可以维护很多的区…

信息摘要技术

信息摘要 定义 信息摘要就是原数据通过某个算法生成一个固定长度的单向散列值。 特点 1、输出长度固定:无论输入的长度和值如何,计算得到的哈希值长度总是固定的。 2、不可逆性(单向):不可能使用散列值推出原文件内容 3、无碰撞性:想要找到两个不同的输入值,使它们哈希后…

完美解决stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.

解决方案:node版本太高了,我同时说他环境是node14的,我就来了个14.18的,结果还是不是,应该是14系列,我的二级版本还是高了。 python什么的安装了没什么用!!! 一步一步来,先解决第一部分: 错误提示的意思是说我没有python,我电脑里确实没有下载python,但实际上不用下…

DVT:华为提出动态级联Vision Transformer,性能杠杠的 | NeurIPS 2021

论文主要处理Vision Transformer中的性能问题,采用推理速度不同的级联模型进行速度优化,搭配层级间的特征复用和自注意力关系复用来提升准确率。从实验结果来看,性能提升不错 来源:晓飞的算法工程笔记 公众号论文: Not All Images are Worth 16x16 Words: Dynamic Transfor…

论文查重

代码说明 类的设计 PaperPlagiarismChecker 类 这个类是算法的核心,负责实现论文查重的具体逻辑和计算。它可能包含以下主要函数: calculateCosineSimilarity(String text1, String text2): 计算两个文本之间的余弦相似度。这是核心的相似度计算函数。 getWordFrequency(Stri…

常见排序原理及 python 实现

时间复杂度与空间复杂度 常用O(1)或O(n)表示,其中1表示一个单位(最简单的单位,可以是多个或1个,但在时间上总体是较低且连续的),时间通常指的是程序运行时间,空间则是指程序在运行时所占用的内存空间。各个阶段的复杂度可用下面的顺序比较: O(1) < O(logn) < O(n) &…

【日记】在街上跳舞被同事看见了(470 字)

正文昨晚跳舞,照例在街上表演,被单位里的保洁阿姨撞见了…… 我以为这就完了,结果她还拍了视频发给做饭阿姨。晚上吃饭无意间聊起才知道有这回事。我竟一时间不知该哭还是该笑…….今天非常非常闲。虽然不是没工作,只是我懒得去做,堆在那里罢了。下午还差点跟主管吵起来(…