大家好,我是程序员晓晓
今天给大家介绍一下如何进行Lora训练,制作自己的电子老婆。
什么是lora?
在官网的解释说明中:「A LoRA is a type of training method for fine-tuning Stable Diffusion models.」
什么意思?
这里引入了一个 fine-tuning 概念,也叫做“微调”训练,
那什么是微调训练呢,假设我们想训练一个图像模型来生成我们自己相似的图像。
从头开始训练模型对大多数人来说将是非常昂贵和令人望而却步的。
与其从头开始训练新模型,我们可以重用现有模型作为起点。
我们可以采用像 Stable Diffusion v1.5(其其他DreamBooth模型也可以) 这样的模型,并在」 更小的数据集**「(我们的图像)上对其进行训练,创建一个模型,该模型同时擅长生成真实图像的广泛任务和」** 生成我们相似图像的狭窄任务。
「相」 比较DreamBooth(也就是我们常说的大模型),LoRA 「具有更快的训练过程的优势, 更低的 GPU 要求, 和更小的输出」。常常运用于训练特定的画风或人物等。
Lora的用途非常广泛,常见的用法一般有:质量改进(例如细节调整器)、风格/美学、人物或人物、衣服或物品等等。
下面是在是否使用lora的情况生成的一些照片:
无lora
彩绘lora
无lora
汉服lora
无Lora
线线稿Lora
简而言之,通过lora和大模型的搭配使用,我们可以实现不同的效果。
lora的下载与基础使用
在哪里下载lora:
能科学上网的童鞋可以直接去C站下载Lora模型,c站右侧可以筛选对应的模型分类
需要下载哪个lora直接点进去下载即可
不能科学上网的童鞋可以在LibLib进行lora下载,方式和上述基本一致
Lora的基本使用:
在webui中我们一般可以通过三种方式来使用Lora。
直接通过点击lora模型来生效(推荐使用):
在我们webui右侧有这么一个按钮,点击它可以打开我们的扩展模型 然后我们会展开如下界面,这时我们点击lora模型来使用它(注:所有的模型种类都可以在对应存储位置下建立文件夹,然后做好分类,这样我们在使用的时候更加清晰明了)
在提示词框内自行输入:
我们在提示词框内输入 <l: 时会自动为我们模糊匹配对应的lora信息,直接选择需要的即可。结合Additional Networks:
WEB-UI界面中可以通过Additional Networks来选择需要的lora,如果没有先点击刷新模型列表。需要注意的是Additional Networks是需要在扩展中安装的,秋叶包自带了,如果你没有可以在扩展中搜索Additional Networks进行下载即可。注意:使用这种方式不会在提示词框内显示lora关键词。image.png
❝
目前这种方式使用的比较少,还是推荐第一种,效率更高些。不过第三种方式一般会结合一些脚本进行使用,比如xyz脚本
❞
应用实践:
lora可以单独使用,也可以组合使用的,通过不同的组合来实现不同的效果
「脸模+盲盒」Prompt:
best quality,masterpiece,(photorealistic:1),(realistic:1.2),1girl,front view,looking_at_viewer,
加上:lora:女性脸模taiwanDollLikeness_v20:0.8,
再加上:lora:blindbox_v1_mix:1,full body, chibi,
Prompt:
1girls,
mecha,mech clothes,Glowing muscle lines,robot,
(masterpiece, best quality, high quality, highres, ultra-detailed),
加上机甲lora(这个lora有触发词):
mecha musume,mechanical parts,robot joints,headgear,<lora:AMechaSSS[color_theme,mecha musume, mechanical parts,robot joints,headgear]:0.8>,
再加上霓虹灯Lora:
CyberpunkAI,neon,lora:CyberPunkAI:0.8,
❝
这里举了两个例子,具体的应用大家可以自己先去尝试下,后面会单独出几期商业化实战案例的教学。
❞
容易出现的问题:
我明明使用了Lora,为什么没有效果。很多初学者在使用Lora的时候往往会遇到明明**「使用了Lora却没有生效」**的问题。
出现这种情况的原因一般有以下几种:
一些lora在训练时加入了触发词,你可以简单理解为就是给lora起了名字,喊这个名字的时候别人就知道用了什么lora。
那怎么知道用了**「什么触发词」**呢?
可以直接到C站你下载的lora模型查看或者直接使用C站助手,下载C站助手我们可以下载模型的预览图,然后我们就可以通过点击预览图上的第三个标签来自动加入当前模型的触发词。
(关于C站助手的下载可以看文末扫描获取)
❝
注意:使用C站助手时要科学上网
❞
Lora 「权重不够」,可以适当的调整Lora权重,可以按照lora作者的建议来进行调整
「大模型的影响」,目前一些大模型的训练其实是 「过拟合」 的(可以理解为训练过度了),导致lora对它的影响比较小,这个时候可以通过 「更换大模型」 来解决这个问题,一般像chilloumix的泛化性就表现不错。
如何训练一个属于自己的lora
上面我们叙述了lora的基本使用,还是很简单的。那么如果我们想要的lora在C站上没有怎么办,我们是不是可以训练一个属于自己的lora。然后也可以开放出去给别人使用。
下面咱们就开始Lora训练的学习吧,这里的lora训练我将以秋叶大佬的lora整合包来进行训练,非常适合小白入门。
最近热播大剧长相思很火,不知道大家有没有看过,然后身边一些人被长相思中的涂山璟圈粉了,所以本次教程咱们就以涂山璟为例作为教学。训练一个涂山璟的脸模。
「因为涉及到公众人物,这里郑重声明:只做教学使用,不允许商用!!!」
训练前的准备工作:
❝
涉及的软件我都放在网盘内了,通过文末扫描获取。
❞
准备素材:
「1、准备多少张素材合适?以下是一些经验值。」
人物Lora:20张左右
场景建筑类:120张左右
「2、如何选材?什么样的素材适合于你的lora训练呢?这里以脸模为例,下面是我们选材要考虑的点。」
不同的面部表情
构图角度(面部特写,半身照,近景,远景,正面,侧面)
灯光(明光、暗光)
图片质量(能够清晰的表现出人脸特征即可)
因为训练的是脸模,所以我们选取的素材的考虑就是基于不同情况下脸的表现形式,确定了这些,我们就大致知道了我们需要什么样的图片。
素材裁剪:
先自己批量获取某个人物的形象照片,然后批量裁剪,保存到你本地。我这里裁剪为了768*768。你可以根据需要进行裁剪,一般512*512就可以了。
安装整合包
下载下来后更新一下版本(整合包在文末领取) 放入你的素材图片❝
这里的tsjv1是我随便起的名称,然后在tsjv1下再新建一个文件夹,这个文件夹有一定的起名规则。按照 数字_名称。
前面的数字表示每张图片要训练的步数,后面的名字可以自己起。一般脸模就起名face,身体就起名body。这样更好辨识。
将你的素材图片放入这个文件夹下(我这里就是:E:\AI\sdTools\lora-scripts-v1.5.1\train\tsjv1\30_face)
❞
开始训练
打tag:
你可以理解为图片上的特征信息,像我们平时生成图片所编写的提示词其实就是一个个的tag。它通过标签化来标明一张图片中所包含的信息。
打开启动脚本 通过WD标签器自动打标path就是你刚刚数字_名称那个图片的路径。
threshold表示阈值标准,一般调整为0.35。它的意思就是通过算法模型训练的tag结果中,保留阈值大于0.35的tag。
additional_tags表示附加的提示词,一般是lora的触发词。你也可以不写,我这里就填写tushanjing,solo,
设置完成后点击启动
使用BooruDatasetTagManager批量优化tag,通过文件导入我们的素材目录。
优化tag是一个重要而繁琐的事情,这里需要注意的点是因为我们训练的是脸模,所以我们要保留人物的脸部特征,那我们就可以不需要五官类的描述词。
怎么理解呢?举个例子,比如人物脸部识别出来的tag是:tushanjing、1boy、long hair、blue eyes、roman nose。
当我们把五官类的描述删除后,人物的特征就和tushanjing、1boy这样的tag绑定在一起了。当使用tushanjing、1boy这样的tag,描述的就是这个人物的脸部特征。如果我们保留了五官的形容,泛化性会变好,但结果可能就是和要训练的人物不像
设置参数与训练:
优化tag完回到启动器页面,配置一些参数关于这些参数的含义由于篇幅原因和复杂程度我会在后面的高级篇单独说明,你可以先按照我的配置。
这里有几个要注意的地方:
1、底模的文件路径一定要准备到具体的文件名,不要包含中文
2、训练集路径可以是相对路径,也可以是绝对路径。按照你的实际目录修改
3、图片的尺寸设置,如果你的机器配置不错的话可以设置为768*768。一般就是512*512就可以了。我准备的图片素材是768*768,所以这里也填写了768*768
4、网络维度设置我这里改成了64*64,不同的维度会决定最终的模型文件大小。
5、这里的keep_tokens我标注为2,因为我有两个触发词。
image.png
训练完成后控制台会提示,训练完成的保存保存在output目录下❝
这里我们可以看到loss这个值,一般来说保持在0.085上下是个不错的效果。我这里没有优化tag和调整其他参数,这个值有点偏高了。
❞
验收成果:
看看训练的效果怎么样,把output中的几个模型文件移动到我们本地的lora文件夹目录下,然后开启Additional network和xyz脚本。填入提示词:
填写基本参数信息和启用Additional Networks(填写一个就可以了):
打开xyz脚本,X轴输入我们训练的5个模型,Y轴填入权重。
可以通过xy轴的变化选择你最喜欢的模型,定义合适的权重。
我这个效果没达到预期,哈哈,主要搜索的素材其实没有那么符合要求,参数和tag上也没怎么调整。
今天主要带大家入个门,下期我会从素材到最终参数的调整做一期完整的教学,再来看看优化后的结果。
一个小案例:
结合我们上面说过的多lora使用,我们来做一个涂山璟的盲盒吧。
这个还是蛮可爱的,哈哈~
总结:
到这里lora的基本使用和lora的模型训练就讲完啦,希望对你有所收获。
大家可以自己先试一试,练成自己的第一炉仙丹~
因为考虑到一些软件的更新,我把本地的卸载掉重新安装的,这样至少在这个时间节点上和大家是保持一致的,如果你觉得对你有所帮助,不妨点个关注吧,非常感谢~。
写在最后
感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。
AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。
一、AIGC所有方向的学习路线
AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、AIGC必备工具
工具都帮大家整理好了,安装就可直接上手!
三、最新AIGC学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、AIGC视频教程合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。