LoRA模型是轻型的Stable Diffusion模型,是对标准的Checkpoint模型进行微调制作而成的。LoRA比通常的Checkpoint模型小10到100倍,这使得它们对那些喜欢收集大量模型的人或组织非常有吸引力。 这是一篇为之前没有使用过LoRA模型的读者写的。您将在这篇文章中了解LoRA模型是什么,在哪里可以找到它们,以及如何使用它们。最后,您会看到一些使用LoRA模型的例子。

LoRA模型是什么?

LoRA(Low-Rank Adaptation)是一种用来微调Stable Diffusion模型的训练技术。 也许会有读者问了,我们已经有了Dreambooth和textual inversion等训练模型的技术,为什么会需要LoRA呢?因为LoRA在生成的模型文件大小和模型包含的信息之间提供了一个很好的平衡。Dreambooth生成的模型很强大,但是生成的模型文件比较大,大多是2-7GB。Textual inversions生成的模型文件通常很小,约为100KB,但是包含的信息却不够丰富。 LoRA介于两者之间:生成的模型文件不会非常大,通常在2-200MB之间,另外模型包含的信息也够用。 那些喜欢试用新模型的Stable Diffusion的用户会发现他们的本地存储空间会很快被填满,因为Checkpoint模型文件很大,只用我们的本地存储很难同时维护这么多的文件。LoRA则不同,我们可以在本地同时保存很多不同的LoRA模型。 和textual inversion类似,我们不能单独使用LoRA模型,它们必须与Checkpoint模型一起使用。LoRA 通过对附带的模型文件进行微小修改来修改生成图像的样式。

LoRA模型的工作原理

LoRA 对Stable Diffusion的关键部分cross-attention layer进行了微小的调整。Cross-attention layer是模型中图像和提取词交汇的部分,研究人员发现,对模型的这一部分进行微调就可以实现不错的训练效果。Cross-attention layer是下图Stable Diffusion模型中的黄色部分。

LoRA模型会对Cross-attention层进行微调(U-Net噪声预测器的QKV部分)。(来自Stable Diffusion论文)

Cross-attentention的权重存储在矩阵中,这些矩阵就像我们使用的Excel电子表格一样,是一列列一排列的数字。LoRA模型通过将权重添加到这些矩阵中来达到对模型进行微调的目的。 如果需要存储相同数量的权重数据,LoRA模型文件如何才能做到更小呢?LoRA模型使用的方法是将一个矩阵分解成两个更小的(低秩)矩阵,这样可以减少存储的数据数量。下面我们举例说明。 假设模型有一个1000行2000列的权重数据矩阵。这就需要在模型文件中存储 2,000,000 个数字(1,000 x 2,000)。LoRA将矩阵分解为1,000乘2的矩阵和2乘2,000的矩阵。这样就只有6,000个数字(1,000 x 2 + 2 x 2,000),少了333倍。这就是LoRA模型文件更小的原因。

LoRA将一个较大的矩阵分解成两个较小的低秩矩阵

在上图的例子中,分解后的矩阵的秩(rank)为2,这比分解前的维数低得多,因此分解后的矩阵被称为低秩矩阵。分解后的矩阵的秩最小可以为1。 不过LoRA这么计算会有什么坏处吗?研究人员研究发现,在cross-attention中的这个改动并不会对模型的微调能力产生太大影响,所以我们现在就有了这么多的LoRA模型。

哪里可以找到LoRA模型?

Civitai,也就是我们通常所称的C站有最多的LoRA模型,不过现在Civitai从中国大陆已经不能访问了。Civitai里面的LoRA模型非常多,良莠不齐。 Hugging Face是另一个拥有很多LoRA模型的站点,相比Civitai,Hugging Face里面的LoRA模型会少一点。因为国内网络的原因,Hugging Face也会经常抽疯打不开。

Hugging Face中的LoRA模型

如何使用LoRA模型

可以在提取词中加入<lora:filename:multiplier>来使用对应的LoRA模型。 您可以调整multiplier来提高或降低效果。将multiplie设置为0将禁用对应的LoRA模型。您可以在0到1之间调整样式效果。 有些LoRA模型是用Dreambooth训练的。您需要包含一个触发关键字来使用这些LoRA模型。您可以在模型页面找到触发关键字。与embedding类似,您可以同时使用多个LoRA模型。您也可以将它们与embedding一起使用。 <lora:filename:multiplier>短语不是提取词的一部分,它将在应用LoRA模型后被移除。这意味着您不能使用类似[keyword1:keyword2: 0.8]的提取词语法。

疏可走马

疏可走马LoRA模型可以带来了时尚的中国水墨画主题。疏可走马的意思是指画中的留白(中国画中比较常见)大到可以让一匹马穿过。我们用疏可走马LoRA搭配国风Checkpoint模型来使用,这里需要用到触发关键词shukezouma。

正向提取词:masterpiece, best quality, Chinese painting, half body, 1 female, perfect symmetric face, (beautiful detailed eyes:1.1), (shukezouma:0.5), <lora:Moxin_Shukezouma11:1>, detailed Chinese dress, mountains, flowers

负向提取词:nsfw, low quality, disfigured, ugly, bad, immature, b&w, odd eyes, inaccurate eyes, extra digits, fewer digits, extra fingers, no bad hands, no distorted fingers

使用疏可走马LoRA

Homura Akemi

Homura Akemi是一个日本动画的角色,喜欢日本动画的读者或许会喜欢。

正向提取词:akemi homura,1 girl, long black hair, purple eyes, <lora:akemi_homura:1>

负向提取词:nsfw, low quality, disfigured, ugly, bad, immature, b&w, odd eyes, inaccurate eyes, extra digits, fewer digits, extra fingers, no bad hands, no distorted fingers

使用akemi_homura LoRA

CyberpunkElements

这个LoRA模型把各种能体现赛博朋克风格的放在了一起。

正向提取词:master piece, best quality, 1 cyberpunk girl wearing iron armor, (small breast:1.1), <lora:CyberpunkElements:1>

负向提取词:nsfw, low quality, disfigured, ugly, bad, immature, b&w, odd eyes, inaccurate eyes, extra digits, fewer digits, extra fingers, no bad hands, no distorted fingers

使用CyberpunkElements LoRA

总结

LoRA模型是Checkpoint模型的小型修改器,您可以通过在提取词中加入一个短语来使用它们。LoRA模型提供了很多不同风格的小模型,您可以使用一个合适的Checkpoint模型,然后搭配自己喜欢风格的LoRA模型来生成您想要的图片。

订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
在线客服
在线客服
QQ客服
旺旺客服