在Stable Diffusion网络中,通常会下载社区中的LoRA模型,并对CLIP模型和Unet的CrossAttention的线性层进行微调。相应的被微调的层会有 'lora_up'
和 'lora_down'
两组参数,分别对应上述的 A
和 B
矩阵。参考高手的代码,只需根据LoRA保存的层的名称找到Stable Diffusion对应的参数,然后对原始网络的参数进行更新即可。
文章目录
- 初识LoRA
- LoRA核心解析
- LoRA风格滤镜的视角
- LoRA下载和安装
- 如何使用 LoRA
- 套用 LoRA 的效果
初识LoRA
尽管每个checkpoint都是Stable Diffusion模型,但由于受到不同图片训练的影响,神经元权重各异,因此各有各的风格。然而这时会发现一些问题:
- checkpoint文件非常大,大小不等,多为2 ~ 7 GB,如果需要多种风格,将占用大量硬盘空间
- 每个checkpoint不能在运算图操作时直接叠加,需要通过Checkpoint Merger混合,生成新的checkpoint才能使用
- 如果要微调模型训练新的风格,由于模型过大,需要大量硬件资源
LoRA核心解析
LoRA方法简单来说,就是通过注入方式,在大型语言模型中的每个transformer block前插入一层可训练层(rank-decomposition matrices)。在微调训练时固定模型所有神经元权重,仅训练注入的可训练层的权重,从而使训练参数量大幅降低。权重参数下降意味着文件大小也缩小,因此LoRA只有几百MB(通常是151 MB)。
LoRA风格滤镜的视角
如果以上解释过于学术,也可以简单地将LoRA视为风格滤镜。在Prompt中添加LoRA引用,就能大幅改变算图的结果,甚至能同时应用多个LoRA以获得混合风格。比起更换模型或进行checkpoint合并,使用LoRA更具灵活性和变化性。
LoRA下载和安装
直接在 Civitai 中选择LoRA选项进行网页过滤选择。
选择对应LoRA选项卡,进入下载。
将下载好的文件放到目录 \models\Lora
下即可。
在SD页面点击对应位置就可以看到自己下载的LoRA模型啦。
如何使用 LoRA
希望使用的LoRA,WebUI会自动在提示符中加入LoRA的名称。熟悉名称可以直接输入。
LoRA 名称冒号旁边的数字,在实际应用中被称为权重。这是一个极为重要的概念。权重可以理解为套用的比例,直接影响LoRA的最终效果。具体来说,当这个数值越大时,LoRA的效果就越明显。反过来说如果这个数值偏小,LoRA的效果则会相对弱一些。
套用 LoRA 的效果
我们使用动漫插件模型,使用一个LoRA就是我们的强哥。
对于动漫小说视频如果想要固定角色的话这个技能是必不可少的。我们可以看到在批量生产图片的时候效果控制的还是很不错的。
同时也可以使用2个相同属性的LoRA,例如人物的进行面部融合使用。例如我们使用某岩和某田融合之后。
<lora:sexyBeauty_v05:0.7> <lora:sallyJingTian_sally:0.4>
<lora:sexyBeauty_v05:0.4> <lora:sallyJingTian_sally:0.7>