如果你已经玩了一段时间的sdAI,你肯定见过LoRA和Embedding这两个词。它们就像是给你的AI模型加装的“插件”,能帮你画出特定的角色、风格或者调整画面细节。但是,很多人其实并没完全搞明白这两者到底有什么不同,以及什么时候该用哪个。
简单来说,它们解决的问题不一样,原理也完全不同。把它们用对地方,可以让你的出图效率和效果都好很多。
LoRA是“微调手术”,Embedding是“关键词打包”
我们先从它们是什么说起,用个好懂的比喻。
想象一下,你的AI大模型(Checkpoint)是一位全能画师,什么都会画一点,但可能画不好某个特定的动漫角色,比如“孙悟空”。
- LoRA:这时候,LoRA就像是给这位画师做了一次“微调手术”。它不改变画师的整个大脑,只是在他大脑里负责画画风格和辨认角色的特定区域(也就是模型的某些权重层)加了点新东西。 这次手术很小,所以LoRA文件通常不大,一般在几十到几百MB。 手术后,这位画师就学会了如何精准画出“孙悟空”的脸、服装和神态。因为改动了模型本身的网络结构,LoRA能够学习到更复杂的细节,比如特定人物的相貌、服装风格,甚至是某种固定的构图。
- Embedding:Embedding(也叫Textual Inversion)则完全是另一回事。 它不对画师做任何手术。它更像是一个“关键词打包工具”。你发现每次想让画师画“赛博朋克风格”,都要输入一大堆复杂的提示词,比如“霓虹灯、未来城市、机械义体、潮湿街道……”。为了省事,你把这一大堆词打包成一个新词,比如就叫“cyberpunk_style”。这个新词就是Embedding。它本质上没教给画师任何新东西,只是把你已经知道的、能被模型理解的提示词组合起来,变成一个方便调用的“快捷方式”。 所以Embedding文件非常小,通常只有几十KB。
所以,最大的区别在于:LoRA是给模型增加了新的知识,而Embedding只是将模型已有的知识进行了重新组合和调用。 这就决定了它们各自的适用场景。
什么时候用LoRA?
当你需要模型画出它本身“知识库”里没有,或者画不好的具体、复杂的东西时,就应该用LoRA。 LoRA在“无中生有”方面表现更好。
典型场景:
- 特定角色或人物:这是LoRA最常见的用途。比如,你想画一个特定的游戏角色、动漫人物,甚至是现实中的朋友。大模型可能根本不认识这个人,或者画出来完全不像。通过用这个人的几十张照片训练一个LoRA,模型就能准确地画出他的样貌。
- 特定的艺术风格:比如你想模仿某个特定画家的风格,而这个画家的风格非常独特,无法用简单的提示词(如“梵高风格”)来描述。你可以用这位画家的大量作品训练一个风格LoRA。
- 特定的服装或物品:你想画一套设计非常复杂的科幻盔甲,或者某个特定款式的连衣裙。这些细节很难用语言精确描述,用LoRA来学习这些视觉特征就非常合适。
如何正确使用LoRA:
使用LoRA通常需要两个步骤:
- 第一步:在提示词中引用LoRA文件。 在AUTOMATIC1111这类工具中,语法通常是
<lora:文件名:权重>。 比如<lora:goku_style_v1:0.8>。权重值(0到1之间)用来控制LoRA效果的强度,权重越高,LoRA的特征就越明显。 - 第二步:加入触发词(Trigger Words)。 很多LoRA在训练时会设定一个或多个触发词。你必须在提示词里写上这些词,LoRA的效果才会完全展现出来。 比如,一个孙悟空的LoRA,触发词可能是“goku”。你可以在下载LoRA的页面(比如Civitai)上找到这些触发词。
举个例子,一个完整的提示词可能是这样的:“1boy, goku, fighting, <lora:goku_style_v1:0.8>”。这里,“goku”是触发词,“<lora:goku_style_v1:0.8>”是调用LoRA文件并设置其强度。
什么时候用Embedding?
当你想优化或固定某些模型已经能理解,但不容易用简单词汇精确控制的概念时,就用Embedding。它擅长“调用和组合”。
典型场景:
- 画风和概念的快捷调用:就像前面说的,你可以把一长串描述画风的词打包成一个Embedding。比如,创建一个“Ghibli_style”的Embedding,代替“studio ghibli style, animated, vibrant colors, detailed background”等一堆词。
- 负面提示词(Negative Prompts):这是Embedding一个非常好用的地方。很多人会把一长串常用的负面提示词(比如“low quality, worst quality, deformed, blurry, ugly”)打包成一个Embedding,比如叫“bad_quality”。这样,每次只需要在负面提示词框里输入“bad_quality”就行了,非常方便。 很多通用的负面Embedding(如“verybadimagenegative”)在网上可以直接下载使用。
- 修正和微调:有时候模型画手或者画脸容易出问题,可以用一些专门训练用来修正这些问题的Embedding。它们通过调用模型已有的“正确”知识,来压制那些“错误”的画法。
如何正确使用Embedding:
使用Embedding比LoRA简单得多。你只需要把下载好的Embedding文件放到指定的文件夹里(通常是 stable-diffusion-webui/embeddings),然后在提示词里直接输入文件名(不带后缀)就可以了。
比如,你下载了一个叫“bad_quality.pt”的负面Embedding,直接在负面提示词框里写“bad_quality”就行。如果想调整它的强度,可以用括号和权重,比如“(bad_quality:1.2)”。
LoRA和Embedding可以一起用吗?
当然可以,而且这是非常常见的做法。 它们的作用层面不同,一起用可以起到互补的效果。
想象一下这个流程:
- 选择一个基础大模型(Checkpoint):比如你选了一个擅长画写实风格的模型。
- 用LoRA来定义核心主体:你用一个特定人物的LoRA来生成你想画的角色。提示词里加入
<lora:character_A:0.9>和触发词。 - 用Embedding来调整风格和规避错误:你在正面提示词里加入一个风格Embedding,比如“film_grain_style”,让画面更有电影感。同时,在负面提示词里加入一个通用的负面Embedding,比如“EasyNegative”,来避免画面出现常见崩坏。
这样一套组合拳下来,你就能在写实大模型的基础上,画出具有特定人物、特定胶片风格且质量较高的图片。这比单纯靠手写一大堆提示词要高效和可控得多。
最后要注意一点,LoRA和Embedding都和训练它们的基础大模型版本有关。比如,一个基于SD 1.5版本模型训练的LoRA或Embedding,用在SDXL模型上可能会完全没效果或者出现奇怪的结果。 所以在下载和使用时,最好确认一下它们是为哪个模型版本制作的。





评论前必须登录!
注册