Stable Diffusion——基础模型、VAE、LORA、Embedding各个模型的介绍与使用方法
前言
Stable Diffusion(稳定扩散)是一种生成模型,基于扩散过程来生成高质量的图像。它通过一个渐进过程,从一个简单的噪声开始,逐步转变成目标图像,生成高保真度的图像。这个模型的基础版本是基于扩散过程的,但也有一些改进版本,包括基于变分自动编码器(VAE)、局部正则化的自动编码器(LORA)和嵌入式扩散等。
1.基础模型
Stable Diffusion Checkpoint模型是生成图像所必须的基础模型,也称之为大模型。要使用Stable Diffusion出图之前必须配备一个主模型才能开始创作。这个主模型包含了生成图像所需的所有信息,无需额外的文件或组件。这些主模型的文件通常比较大,大小在2GB到7GB之间。它们的文件后缀通常是“ckpt”或“safetensors”。
不同的主模型具有不同的特点,它们在创作风格和擅长的领域上有所侧重。因此,在选择主模型时,需要考虑自己的创作需求和偏好。不同的主模型可以帮助你实现不同风格的图像生成。
一些流行和常见的Checkpoint模型包括“Anything”系列(如v3、v4.5、v5.0)、“AbyssOrangeMix3”、“ChilloutMix”、“Deliberate”,以及“国风系列”等等。这些Checkpoint模型都是从Stable Diffusion的基础模型训练而来,它们使用不同的数据进行训练,以生成特定风格或对象的图像。
需要注意的是,通常情况下是不会使用官方自带的大模型来进行创作出图的,因为它们的效果较差。但是如果想要自己练大模型,官方自带的大模型系列是一个不错的基础模型,因为它们涵盖了各种风格,属于中性模型。
当在下载模型时,可能会看到带有pruned、emaonly(ema)等后缀,pruned表示完整版,而emaonly表示剪枝版。(模型剪枝是一种通过删除神经网络中的冗余连接或参数来减小模型大小。可以帮助减少模型的存储空间和计算成本,同时在某些情况下还可以提高模型的推理速度。需要注意的是,尽管剪枝版模型在大小上更为轻量级,但在一些情况下可能会牺牲一定的性能。因此,在选择模型时,需要权衡模型大小和性能之间的关系,根据具体的应用场景和需求来做出选择。)但两者在使用上差别不大。如果想要自己练模型,则需要下载完整版。需要注意的是,有些剪枝版可能不带有后缀,有些可能后缀也是prune,因此在具体选择时需要参考相应的版本说明。
Civitai是一个全球性的提供AI艺术资源分享和发现的平台,旨在帮助用户轻松探索并使用各类AI艺术模型。平台用户可以上传和分享自己用数据训练的AI自定义模型,或者浏览和下载其他用户创建的模型。
以我这里使用的秋叶sd-webui-aki-v4.5整合包为例,模型下载之后,放到models/Stable-Diffusion目录。

之后刷新就可以看到相关的模型:

选择要使用的模型之后,可以输入正向提示词和反向提示,然后点生成:


2、外挂VAE模型
VAE模型可以被视作一种类似于颜色滤镜的工具,用于调整和改善生成图片的色彩。它并非在制图时必不可少,而是根据个人绘画需求决定是否采用。在使用某些模型时,有时绘制的图片整体颜色可能会显得较灰暗。在这种情况下,可以使用VAE模型对图片的颜色进行调整,以改善整体视觉效果。

下载或者自己训练出来的VAE模型把它放到models/VAE目录下:

测试VAE模型,左边是没有使用VAE模型的,右边是使用了VAE模型:

在绘图过程中,选择是否使用VAE模型通常对最终生成的图片效果并没有太大的影响。相比之下,VAE模型并不像其他模型(比如LORA模型)那样在绘图中的作用和效果十分明显。在测试中尝试了几个常用的大型模型,发现使用或不使用VAE模型对最终生成的图片效果的区别并不明显。
3、Lora模型
LoRA(Low-Rank Adaptation)是一种大语言模型低秩适配器,最早在2021年的论文《LoRA: Low-Rank Adaptation of Large Language Models》中提出。它的核心思想是通过降低模型可训练参数的数量,尽量不损失模型的性能,从而实现对大语言模型的微调。
在此之前,对于Stable Diffusion这样的模型,要训练大模型的话,通常需要使用Dreambooth等方法。如果对大模型的效果不满意,那么就只能从头开始重新训练,但是这个过程需要高要求的算力,且速度较慢。LoRA的引入极大地降低了训练的门槛,扩大了产出模型的适用范围。这意味着即使是非专业人员也可以在家用电脑上尝试训练自己的LoRA模型,从而更灵活地适应不同的任务和需求。
这里可以将大型模型比作素颜的人,因为它们通常生成的图片与原始数据相似,但可能缺乏一些细节或特定的特征。而LoRA模型则像是进行了化妆、整容或cosplay,它们能够通过增加细节、调整风格或改变外观,使生成的图片更加精美或符合特定的要求。LoRA模型不仅局限于人物,也适用于场景、动漫或其他风格,这使得它们在生成多样化的内容时具有广泛的应用性。大型模型提供了基础,而LoRA模型在此基础上进一步增强和丰富了生成的图片效果。
LoRA模型具有几个明显的优点:
-
性能优势: 使用LoRA时,只需要存储少量被微调过的参数,而不需要保存整个新模型。这使得LoRA模型的存储开销较小。此外,LoRA的新参数可以与原模型的参数合并,不会增加模型的运算时间。
-
功能丰富: LoRA模型维护了模型在微调中的“变化量”,通过用介于0到1之间的混合比例乘以这些变化量,可以控制模型的修改程度。此外,基于同一个原模型独立训练的多个LoRA模型可以同时使用。
这些优点在SD LoRA(中得到体现:
-
模型尺寸小: SD LoRA模型通常都很小,只有几十MB大小,这使得它们在存储和部署时都非常高效。
-
参数合并: SD LoRA模型的参数可以合并到SD基础模型中,得到一个新的SD模型,这有助于简化模型管理和部署过程。
-
画风控制: 可以使用0到1之间的比例来控制SD LoRA新画风的程度,使得用户可以根据需要调整生成图片的风格和效果。
-
多画风混合: 可以将不同画风的SD LoRA模型以不同的比例混合,从而进一步增加生成图片的多样性和可控性。
C站也有开源可用的Lora模型下载,下载之后,把模型放到models/Lora里面,重启或者刷新webui界面:

可以查看Lora的模型:

在WebUI中,点击所需的模型之后,系统会自动在提示词中增加对该模型及其权重的引用。格式如下:
<lora:模型的名字:模型的权重>
这样就可以在提示词中引用所选模型以及其权重了。模型的权重越高生成图片时越贴近模型提供的主体或者风格,权重的取值范围是:0-1。生成图片时可以同时使用多个LoRA模型,最终效果会综合多个模型的风格。

4.Embedding模型
Embedding可以被理解为一组提示词的集合,将这些提示词汇总到一个文件中。当需要使用这些提示词时,只需调用这个Embedding文件,就相当于输入了很多的提示词,这对用户来说非常方便。
Embedding可以用于正向提示词,也可以用于负向提示词。但在大多数情况下,它通常用于负向提示词,因为负向提示词的数量通常很多,而且复用性较高。例如,在人物绘图时,对于描述手指可能会使用诸如“坏的手指”、“多余的手指”、“缺失的手指”等多个负向提示词,同样的情况也适用于其他身体部位如腿、手等。这导致在绘图时需要频繁输入这么多的负向提示词,因此有时候负向提示词的数量远远超过正向提示词。
为了方便用户操作,减轻用户编写提示词的麻烦,常用的负向提示词会被打包在一起。这样用户只需要使用一个关键词,就可以代替输入很多的负向提示词,达到一词顶百词的效果。
由于Embedding模型是一组提示词的集合,所以Embedding模型文件通常不大,大小一般在几十KB到几百KB之间。
在C站上面,在搜索条件中通过Embedding关键字过滤出所有的Embedding模型。


相关文章:
Stable Diffusion——基础模型、VAE、LORA、Embedding各个模型的介绍与使用方法
前言 Stable Diffusion(稳定扩散)是一种生成模型,基于扩散过程来生成高质量的图像。它通过一个渐进过程,从一个简单的噪声开始,逐步转变成目标图像,生成高保真度的图像。这个模型的基础版本是基于扩散过程…...
Python自动化部署与配置管理:Ansible与Docker
Ansible 和 Docker 是两种常用于自动化部署和配置管理的工具。Ansible 是一个基于 Python 的自动化运维工具,可以配置管理、应用部署、任务自动化等。而 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&…...
《摔跤吧爸爸》19岁女星突患皮肌炎离世
从确诊到离世仅10天……罕见病“皮肌炎”! 曾凭借在知名电影《摔跤吧!爸爸》中饰演童年时期“小芭比塔”一角而广受喜爱的年轻演员苏哈尼巴特纳格尔不幸离世,年仅19岁。她的突然逝世引发了全球关注,据苏哈妮的家人表示࿰…...
用结构体数组,完成宠物信息登记管理。
管理宠物的名字,品种,年龄。 实现功能如下: 1.插入宠物信息 2.遍历宠物信息 #include <stdio.h> #define N 100 typedef struct chongwu { char name[20]; char pingz[10]; int age; }cw; void intset_cw(cw *ptr,int *pnum) { printf("请…...
频率主义线性回归和贝叶斯线性回归
整体概述 频率主义(Frequentist)线性回归和贝叶斯(Bayesian)线性回归是统计学中用于数据分析和预测的两种主要方法,特别是在建模关于因变量和自变量之间线性关系的上下文中。尽管两种方法都用于线性回归分析ÿ…...
【感知算法】Dempster-Shafer理论(下)
尝试DS理论应用到自动驾驶地图众包更新。 地图特征变化判断 a mass function is applied to quantify the evidence of the existence. existence state: existenct、non-existent、tenative、conflict ∃ ∄ Ω ϕ \exist \\ \not\exist \\ \Omega \\ \phi ∃∃Ωϕ ma…...
通过conda安装cudatoolikit和cudnn
通过conda安装cudatoolikit和cudnn 安装cudatoolkit安装cudnn安装cudatoolkit-dev 安装cudatoolkit conda install cudatoolkit11.3 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ 安装cudnn conda install cudnn8.5 -c https://mirrors.tuna.tsinghua.edu.…...
vue中使用jsx语法
请注意,在 Vue 中使用 JSX 时,你仍然需要通过 h 函数(通常是一个别名,对应于 createElement 函数)来创建虚拟 DOM 元素。在下面的例子中,h 函数作为 render 函数的参数传入,但在 JSX 语法中你通…...
我的NPI项目之Android USB 系列(一) - 遥望和USB的相识
和USB应该是老朋友了,从2011年接触Android开发开始,就天天和USB打交道了。那时候还有不 对称扁头的usb/方口的usb,直到如今使用广泛的防反插USB3.0 type-C。 但是,一直有一个不是很清楚的问题萦绕在心头,那就是。先有…...
K8s进阶之路-命名空间级-服务发现 :
服务发现: Service(东西流量):集群内网络通信、负载均衡(四层负载)内部跨节点,节点与节点之间的通信,以及pod与pod之间的通信,用Service暴露端口即可实现 Ingress&#…...
智慧公厕管理系统:让城市智慧驿站更加智慧舒适
智慧公厕管理系统是城市智慧驿站中不可或缺的一部分,它通过全方位的信息化解决方案,为公共厕所的使用、运营和管理提供了一种智能化的方式。作为城市智慧驿站的重要组成部分,智慧公厕管理系统发挥着重要的作用,为城市社会民生提供…...
图形渲染基础学习
原文链接:游戏开发入门(三)图形渲染_如果一个面只有三个像素进行渲染可以理解为是定点渲染吗?-CSDN博客 游戏开发入门(三)图形渲染笔记: 渲染一般分为离线渲染与实时渲染,游戏中我们用的都是…...
每日学习总结20240219
每日总结 20240219 1.文件类型.csv CSV文件是一种以逗号分隔值(Comma-Separated Values)为标记的文本文件,它可以用来存储表格数据。每一行表示一条记录,而每一条记录中的字段则使用逗号或其他特定的分隔符进行分隔。 常用场景…...
K8s进阶之路-安装部署K8s
参考:(部署过程参考的下面红色字体文档链接就可以,步骤很详细,重点部分在下面做了标注) 安装部署K8S集群文档: 使用kubeadm方式搭建K8S集群 GitBook 本机: master:10.0.0.13 maste…...
springboot集成elk实现日志采集可视化
一、安装ELK 安装ELK组件请参考我这篇博客:windows下安装ELK(踩坑记录)_windows上安装elk教程-CSDN博客 这里不再重复赘述。 二、编写logstash配置 ELK组件均安装好并成功启动,进入到logstash组件下的config文件夹,创建logstash.conf配置…...
leetcode 148. 排序链表 java解法
Problem: 148. 排序链表 思路 这是一个链表排序的问题,由于要求时间复杂度为 O(nlogn),适合使用归并排序(Merge Sort)来解决。 解题方法 首先,使用快慢指针找到链表的中间节点,将链表分成两部分。然后&…...
【MATLAB源码-第140期】基于matlab的深度学习的两用户NOMA-OFDM系统信道估计仿真,对比LS,MMSE,ML。
操作环境: MATLAB 2022a 1、算法描述 深度学习技术在无线通信领域的应用越来越广泛,特别是在非正交多址接入(NOMA)和正交频分复用(OFDM)系统中,深度学习技术被用来提高信道估计的性能和效率。…...
运动重定向学习笔记
目录 深度学习 重定向 2020年的模型: 重定向之后的bvh: 深度学习 重定向 输入是bvh,输出也是bvh...
导出Excel,支持最佳
列表信息导出为Excel文件, 依赖pom: Sheet, Row:<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId> </dependency>XSSFWorkbook <dependency><groupId>org.apache.poi</…...
【WPF】获取父控件数据
MaxHeight"{Binding PathActualHeight, RelativeSource{RelativeSource ModeFindAncestor, AncestorTypeUserControl}}" 参考文献 https://www.cnblogs.com/-Timosthetic/p/16021865.html...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
