Stable Diffusion VAE:改善图像质量的原理、选型与使用指南

news2024/9/24 15:19:27

VAE Stable Diffusion(稳定扩散)是一种用于生成模型的算法,结合了变分自编码器(Variational Autoencoder,VAE)和扩散生成网络(Diffusion Generative Network)的思想。它通过对变分自编码器进行改进,提高了生成样本的质量和多样性。

VAE Stable Diffusion的核心思想是使用扩散生成网络来替代传统的解码器。扩散生成网络是一个逐步生成样本的过程,每一步都通过对噪声进行扩散来生成样本。这种逐步生成的过程可以提高生成样本的质量,并且可以控制生成样本的多样性。

这话太学术性了。说人话就是在Stable Diffusion中使用VAE能够得到颜色更鲜艳、细节更锋利的图像,同时也有助于改善脸和手等部位的图像质量。

VAE在生成图像过程中的作用可以通过下面的图简单了解下:

原始图像,比如高维度 512*512的,会经过encoder编码生成低维度的大小 比如 64*64,编码后的图像跟原始图像位于不同的空间中,前者在一个叫latent 空间中,后者是像素 pixel空间。在latent空间中生成后的图像再经解码还原到像素空间,即人类看见的图像,这个过程中,图像会有信息损失,而VAE就充当了上述编解码器的角色,好的VAE模型能够较好的保证图像质量。

PastelMix model:

Deliberate model

常见 VAE 模型类型

一般情况下,我们只需要重点关注 Stability AI 推出的 EMA (Exponential Moving Average)和 MSE (Mean Square Error )两个类型的 VAE 模型即可。

•stabilityai/sd-vae-ft-ema[1]

•stabilityai/sd-vae-ft-mse[2]

就使用经验而言,EMA 会更锐利、MSE 会更平滑。

除此之外,还有两个比较知名的 VAE 模型,主要用在动漫风格的图片生成中:

•WarriorMama777/OrangeMixs[3]

•hakurei/waifu-diffusion-v1-4[4]

除了上面的几种 VAE 模型之外,有一些模型会自带自己的 VAE 模型,比如最近发布的 SDXL 模型,在项目中,我们能够看到模型自己的 VAE 模型。

•stabilityai/stable-diffusion-xl-refiner-1.0/vae[5]

•stabilityai/stable-diffusion-xl-base-1.0/vae[6]

在 Stable Diffusion 的世界,修复人脸主要依赖的是下面两个项目的能力:

•TencentARC/GFPGAN[7]

•sczhou/CodeFormer[8]

前文提到的 Stability AI 推出的常用的 VAE 模型,是基于 LAION-Aesthetics[9]和 LAION-Humans,对 CompVis/latent-diffusion[10] 项目进行了模型微调而来的模型。而这两个数据集特别针对人对于图片的喜爱程度进行了整理,其中后者包含大量的人脸。

所以,在经过高质量的图片、大量人脸数据的训练后,VAE 模型对于改善图片色调,以及轻微修正图片中的人脸,也具备了一些能力。

Stable Diffusion 最好的VAE

  • kl-f8-anime (Anything V3) – for anime art (created by Hakurei by finetuning the SD 1.4 VAE on several anime-styled images).【11】
  • kl-f8-anime2 – for anime art, improved colors (use of red hue is dimmed down).【12】
  • vae-ft-mse-840000-ema-pruned – for realistic models or styles (created by StabilityAI).【13】
  • OrangeMixs – for anime art.【14】
  • Color101 – for improving colors and color depth.【15】

在Stable Diffusion中,不管是V1,V2,还是其他基础模型,如果本身对图像质量没有苛刻要求,其实是不需要额外部署VAE模型的,因为现在很多模型中都已经集成了VAE,比如  Anything VAE 已经集成到 Anything 模型了,再额外增加模型也没有效果。但是通过使用额外的VAE能够胜过默认提供的内置模型。当确实需要下载部署额外VAE时候,将下载的模型放置在目录(以AUTOMATIC1111’s WebUI为例):

*\stable-diffusion-webui\models\VAE

如果有多个VAE,你可以在UI Settings中选择你更喜欢的VAE:

Selecting VAE manually from AUTOMATIC1111 WebUI’s Settings. Settings -> Stable Diffusion -> SD VAE -> Choose your preferred VAE

资源链接:

[1] stabilityai/sd-vae-ft-ema: stabilityai/sd-vae-ft-ema · Hugging Face

[2] stabilityai/sd-vae-ft-mse: stabilityai/sd-vae-ft-mse · Hugging Face

[3] hakurei/waifu-diffusion-v1-4: hakurei/waifu-diffusion-v1-4 · Hugging Face

[4] stabilityai/stable-diffusion-xl-refiner-1.0/vae: stabilityai/stable-diffusion-xl-refiner-1.0 at main

[5] stabilityai/stable-diffusion-xl-base-1.0/vae: stabilityai/stable-diffusion-xl-base-1.0 at main

[6] stabilityai/sdxl-vae: stabilityai/sdxl-vae · Hugging Face

[7] TencentARC/GFPGAN: GitHub - TencentARC/GFPGAN: GFPGAN aims at developing Practical Algorithms for Real-world Face Restoration.

[8] sczhou/CodeFormer: GitHub - sczhou/CodeFormer: [NeurIPS 2022] Towards Robust Blind Face Restoration with Codebook Lookup Transformer

[9] LAION-Aesthetics: LAION-Aesthetics | LAION

[10] CompVis/latent-diffusion: GitHub - CompVis/latent-diffusion: High-Resolution Image Synthesis with Latent Diffusion Models

[11] vae/kl-f8-anime2.ckpt · hakurei/waifu-diffusion-v1-4 at main

[12] vae/kl-f8-anime2.ckpt · hakurei/waifu-diffusion-v1-4 at main

[13] vae-ft-mse-840000-ema-pruned.safetensors · stabilityai/sd-vae-ft-mse-original at main

[14] VAEs/orangemix.vae.pt · WarriorMama777/OrangeMixs at main

[15] https://civitai.com/models/70248/color101-vae

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

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

相关文章

【贪心+01背包】Tower

这是个很经典的问题 Tower - 洛谷 题意: 思路: 首先可以确定是个背包而且肯定要排序,但是根据什么排序不确定 因为交换相邻两个箱子只有对自身产生影响,所以可以贪心地考虑这两个箱子如何摆最优,而又因为本身上面的…

无人机编队路径规划算法的Matlab实现

室内多智能体协同控制是指在密闭空间内的各个无人机及无人车在运动时能够相互之间保持一定的相对距离,并在速度及位置上按照预设路线或命令进行运动的过程。本平台的多智能体协同定位采用光学运动捕捉技术,并通过WiFi网络实现多机、多车间的通信&#xf…

13-1_Qt 5.9 C++开发指南_多线程及QThread 创建多线程程序_ThreadSignal

一个应用程序一般只有一个线程,一个线程内的操作是顺序执行的,如果有某个比较消耗时间的计算或操作,比如网络通信中的文件传输,在一个线程内操作时,用户界面就可能会冻结而不能及时响应。这种情况下,可以创…

2023年第四届“华数杯”数学建模思路 - 案例:感知机原理剖析及实现

# 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 一、感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法,其原理可以看下图: 比如说我们有一个坐标轴(图中的…

火车头伪原创插件怎么用【php源码】

这篇文章主要介绍了儿童学python编程哪个学校好,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。 1、python几岁学比较好 python建议8岁到10岁以上的孩子学习,详细介…

聊天系统登录后端实现

定义返回的数据格式 # Restful API from flask import jsonifyclass HttpCode(object):# 响应正常ok 200# 没有登陆错误unloginerror 401# 没有权限错误permissionerror 403# 客户端参数错误paramserror 400# 服务器错误servererror 500def _restful_result(code, messa…

线性代数基础一 行列式

前言 行列式在线性代数中具有非常重要的地位,很多线性代数的问题都可以转化为计算行列式来解决。 集合 集合的表示方法:常用的有列举法和描述法。 列举法:常用于表示有限集合,把集合中的所有元素一一列举出来,写在大括号内&am…

grid map学习笔记3之详解grid_map_pcl库实现point cloud点云转换成grid map栅格地图

文章目录 0 引言1 grid_map_pcl示例1.1 主要文件1.2 示例数据1.3 启动文件1.4 配置文件1.5 主要实现流程1.6 启动示例1.7 示例结果 2 D435i 点云生成栅格地图2.1 D435i 点云文件2.2 修改启动文件2.3 测试和结果2.4 修改配置文件2.5 重新测试和结果 0 引言 grid map学习笔记1已…

海外网红营销:如何利用故事打造独具魅力的品牌形象?

随着全球数字化时代的来临,品牌推广已经从传统的广告宣传方式逐渐转变为更加注重故事性和情感共鸣的营销手段。故事营销在品牌塑造和传播过程中发挥着重要作用,它能够吸引消费者的注意力,加深品牌与受众的情感连接,从而为品牌带来…

uniapp开发微信小程序--自定义顶部导航栏

一、实现效果: 二、代码实现: 1.在pages.json文件中,单页面定义导航栏,添加以下代码: "navigationStyle": "custom" //自定义导航栏如图所示: 2.在components文件夹下,…

用于毫米波天线的新型无卤素超低传输损耗多层电路板R-5410

3月3日消息,松下公司宣布,其工业解决方案公司已经实现了R-5410的商业化,这是一种无卤素、超低传输损耗的多层电路板(MLCB)材料,适用于毫米波天线。将于2021年3月开始量产。 毫米波雷达是汽车、通信等行业的…

uC-OS2 V2.93 STM32L476 移植:环境搭建篇

前言 uC-OS2 是比较经典的 RTOS,如今软件授权已经改为 Apache License Version 2.0,意味着可以免费商用了 当前 uC-OS2 的最新版本是: V2.93,打算研究一下 RTOS 的设计思想,所以想在已有的开发板:NUCLEO-L…

Mybatis,Spring,SpringMVC项目创建

先做一些设置 file——setting——maven 创建项目maven项目 主方法下和java平行 创建完成 接下里就是导依赖了 spring和mybatis创建文件是一样的,就是配置不一样 SpringMVC前面和Mybatis和Spring是一样的,后面需要web 然后是new——projectStructure …

【数字IC基础】从触发器到亚稳态

从触发器到亚稳态 单稳态和双稳态三态门单稳态电路双稳态电路 锁存器SR锁存器 触发器电平触发的触发器SR触发器D锁存器(电平触发的D触发器) 边沿触发的触发器边沿触发 D 触发器脉冲触发的触发器 建立时间和保持时间恢复时间和去除时间亚稳态亚稳态的产生…

C++ | 哈希表的实现与unordered_set/unordered_map的封装

目录 前言 一、哈希 1、哈希的概念 2、哈希函数 (1)直接定址法 (2)除留余数法 (3)平方取中法(了解) (4)随机数法(了解) 3、哈…

.net 6升级.net7 容器报错is not supported on this platform.

一、生成验证码报错 System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform.Tue, Aug 1 2023 9:57:37 pmat System.Drawing.Image..ctor()Tue, Aug 1 2023 9:57:37 pmat System.Drawing.Bitmap..ctor(Int32 width, Int32 height) 二…

keil使用printf函数重定串口输出,程序卡在Reset_Handler

最近在做国产芯片GD32F103项目,使用printf()函数重定向USART0串口输出,发现程序没有运行,单步调试发现,程序卡在startup_gd32f10x.s文件的Reset_Handler处,记录一下解决方法。 解决办法: 1、引用头文件#in…

Git rebase和merge区别详解

文章目录 变基的基础用法变基过程中的冲突解决冲突后无法push问题更新变基后的代码更有趣的变基用法变基的风险用变基解决变基变基 vs 合并 此文在阅读前需要有一定的git命令基础,若基础尚未掌握,建议先阅读这篇文章Git命令播报详版 在 Git 中整合来自不…

【ChatGPT辅助学Rust | 基础系列 | 函数,语句和表达式】函数的定义,使用和特性

文章标题 简介一,函数1,函数的定义2,函数的调用3,函数的参数4,函数的返回值 二,语句和表达式1,语句2,表达式 总结: 简介 在Rust编程中,函数,语句…

hadoop与HDFS交互

一、利用Shell命令与HDFS进行交互 在进行HDFS编程实践前,需要首先启动Hadoop。可以执行如下命令启动Hadoop: cd /usr/local/hadoop ./sbin/start-dfs.sh #启动hadoop Hadoop支持很多Shell命令,其中fs是HDFS最常用的命令,利用fs…