Stable Diffusion VAE

这篇具有很好参考价值的文章主要介绍了Stable Diffusion VAE。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

Stable Diffusion在逐步去噪的过程中,按照图片的原尺寸进行运算,由于图片尺寸的太大,需要很大的计算量。sd通常是在latent space(潜在空间)运算的,相当于在压缩的图片上运算的,然后再恢复到原尺寸。VAE的encode和decode就是sd连接latent space原真实图的通道。

sd生图的时候,有无VAE的区别很大,效果图如下。

VAE,作为生成式模型,有许多应用。VAE在Stable Diffusion中是重要的一环,我们从sd的角度解析一下VAE。

VAE全称Variational Autoencoder(变分自编码器),主要有encode和decode两个过程,encode将图片转到latent space,是一个压缩的过程,压缩时只保留了关键信息,可以再通过decode复原图片。压缩再复原的过程并不是无损的。encode过程主要是一些卷积运算和下采样,和ResNet很类似,就不赘述了。

encode

首先展示encode过程,原图如下,尺寸512 × 512:

Stable Diffusion VAE,stable diffusion

latent space的图片如下,尺寸64 × 64,这个图片是我放大后截屏的,放64 × 64的图太小了,平台的水印太大:

Stable Diffusion VAE,stable diffusion

这个图的颜色不太正,有可能是我相关系数没调整好,但是可以看到相应的结构信息都保存下来了,我使用的是sd提供的vae模型,代码如下:

import cv2
import torch
import numpy as np 
from PIL import Image  
from diffusers.models import AutoencoderKL
vae = AutoencoderKL.from_pretrained("stabilityai/sd-vae-ft-ema")

image = Image.open("1.png")  
image = image.convert('RGB')  
  
tensor = torch.from_numpy(np.array(image)).float().div(255.0)
tensor = tensor.unsqueeze(0)  
tensor = tensor.permute(0, 3, 1, 2)  
latents = vae.encode(tensor,return_dict=False)
latents = latents[0].mean

def quantize(latents):
  quantized_latents = (latents / (255 * 0.18215) + 0.5).clamp(0,1)
  quantized = quantized_latents.cpu().permute(0, 2, 3, 1).detach().numpy()[0]
  quantized = (quantized * 255.0 + 0.5).astype(np.uint8)
  return quantized

zx = quantize(latents)   
imageOut = cv2.cvtColor(zx, cv2.COLOR_RGBA2BGRA)  
cv2.imwrite('2.png', imageOut)

其中quantize函数是用的deephub的,https://colab.research.google.com/drive/1Ci1VYHuFJK5eOX9TB0Mq4NsqkeDrMaaH?usp=sharing#scrollTo=K29uYxMZTD82

vae模型是从diffusers导入的,运行代码自动下载,也就是和sd用的模型是一样的,具体的模型信息在下载的时候有,这里也可以改成你想用的模型。

decode

该过程输入是latent space的结果,再解码为尺寸512 × 512的图片,如下:

Stable Diffusion VAE,stable diffusion

可以看到基本还原了图片,通过多组对比,我们可以看到复原的图片和原图仍有差别,但是复原的图片质量是很高的。代码如下,我们只需要接着上面的写就行,输入是latents:文章来源地址https://www.toymoban.com/news/detail-778703.html

decodeOut = vae.decode(latents,return_dict=False)
decodeOut  = decodeOut[0].permute(2, 3, 1, 0).squeeze()
numpy_img = decodeOut.detach().numpy()
numpy_img = numpy_img*255
numpy_img = cv2.cvtColor(numpy_img, cv2.COLOR_RGB2BGR)
cv2.imwrite('3.png', numpy_img)

到了这里,关于Stable Diffusion VAE的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Stable Diffusion 硬核生存指南:WebUI 中的 VAE

    本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0) 本文作者: 苏洋 创建时间: 2023年07月30日 统计字数: 11485字 阅读时间: 23分钟阅读 本文链接: https://soulteary.com/2023/07/30/stable-diffusion-hardcore-survival-guide-vae-in-webu

    2024年02月14日
    浏览(55)
  • 最新版本 Stable Diffusion 开源 AI 绘画工具之 VAE 篇

    VAE:是 Variational Auto-Encoder 的简称,也就是变分自动编码器 可以把它理解成给图片加滤镜,现在的很多大模型里面已经嵌入了 VAE ,所以并需要额外添加 VAE 如果你发现生成的图片在色彩,细节上有些颜色缺失或者失真,基本就是该模型中没有 VAE 导致的,需要手动使用 VAE 点

    2024年02月13日
    浏览(105)
  • Hugging Face使用Stable diffusion Diffusers Transformers Accelerate Pipelines VAE

    A library that offers an implementation of various diffusion models, including text-to-image models. 提供不同扩散模型的实现的库,代码上最简洁,国内的问题是 huggingface 需要翻墙。 A Hugging Face library that provides pre-trained deep learning models for natural language processing tasks. 提供了预训练深度学习模型,

    2024年02月07日
    浏览(49)
  • Stable Diffusion VAE:改善图像质量的原理、选型与使用指南

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

    2024年02月14日
    浏览(49)
  • 关于【Stable-Diffusion WEBUI】基础模型对应VAE的问题

    本篇主要提及模型的VAE,通常情况下我们不用考虑它,但是有些特别是早期模型并没有整合VAE…… 更多不断丰富的内容参考:🔗 《继续Stable-Diffusion WEBUI方方面面研究(内容索引)》 VAE (Variational Auto-Encoder 变分自动编码器) 虽然简称是编码器,实际上是编码解码器(我们用到

    2024年02月09日
    浏览(55)
  • AI绘画软件Stable Diffusion模型/Lora/VAE文件存放位置

    建议直接去civitai.com找模型,如果无法找到可以在幕后模型区找也可以去, 下载好后放入对应的文件夹。进入127.0.0.1:7680 左上角刷新即可看到新的模型。 大模型 大模型特指标准的 latent-diffusion 模型。拥有完整的 TextEncoder 、 U-Net 、 VAE 。 由于想要训练一个大模型非常困难,需

    2024年01月22日
    浏览(43)
  • Stable Diffusion——基础模型、VAE、LORA、Embedding各个模型的介绍与使用方法

    Stable Diffusion(稳定扩散)是一种生成模型,基于扩散过程来生成高质量的图像。它通过一个渐进过程,从一个简单的噪声开始,逐步转变成目标图像,生成高保真度的图像。这个模型的基础版本是基于扩散过程的,但也有一些改进版本,包括基于变分自动编码器(VAE)、局部

    2024年02月22日
    浏览(43)
  • Stable Diffusion WebUI 里不显示 VAE 模型、CLIP 终止层数?一分钟解决!

    上一篇已经在 Mac 上安装部署了 Stable Diffusion WebUI,没有装好的小伙伴可以看这里:在男朋友的 Mac 上部署 Stable Diffusion(超详细,含踩坑点,AI 绘画入门保姆级教程) 但是起来了之后,发现貌似少了一些东西。这是起来的画面: Windows 的小伙伴用秋叶大佬或者星空大佬的部署

    2024年02月14日
    浏览(42)
  • 理解 Stable Diffusion、模型检查点(ckpt)和变分自编码器(VAE)

            在探索深度学习和人工智能领域的旅途中,理解Stable Diffusion、模型检查点(ckpt)以及变分自编码器(VAE)之间的关系至关重要。这些组件共同构成了当下一些最先进图像生成系统的基础。本文将为初学者提供一个详细的概述,帮助您理解这些概念以及它们是如何协同工作

    2024年01月21日
    浏览(44)
  • AI绘画——Stable Diffusion模型,变分自编码器(VAE)模型 , lora模型——调配设置与分享

    目录 Stable Diffusion模型 模型调配 模型设置  变分自编码器(VAE)模型  模型调配 模型设置   lora模型(原生)(插件) 模型调配 模型设置   AI生成prompt及模型分享 Stable Diffusion模型 pastel-mix+对应的VAE  Stable Diffusion模型国风+Lora模型 墨心+疏可走马 Stable Diffusion模型国风+Lo

    2024年02月04日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包