SD-AI(5)lora模型的训练认知

声明:学习使用SD软件请遵守相关法律规定,不得将产出内容进行不合法操作使用。
本文中出现的所有SD产出图片仅用于学习交流,禁止非法使用,禁止商用。
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一
因相关法律规定,文章内不会出现NSFW相关图像内容。
内容基于2023年5月SD发展状况所写。
内容仅为个人经验和理解。
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一
四、模型训练:
1.lora原理。
1-1.LoRA 是什么?
在三、3-1.中我们有过对lora的初步了解。

从应用结果上看,Lora 属于调整优化型的模型。
优化方向包含以下↓类型以及更多其他类型。

当使用Lora的时候,会有对应的结果产生。
示例,在同一组词条下,不用lora与代入使用一个虚拟人Lora的对比结果。


加入lora↓


如你所见,同样的数据在有lora和无lora下的结果是不一样的,与底模契合度高的模型,产生的差异会小,契合度低的模型,产生的差异会大。
1-2.SD的工作原理:
1-2-1.基本识别:为什么AI能够识别你所提供的词或自然语言?
因为它之前用对应的词条内容做过训练。
所以在你提供对应的词时,AI可以进行对应的数据调用。
如,输入“条纹衬衫”↓,得到下面的结果。


但如果是这样的一件衣服↓,我们想要让它复现,应该输入什么词?

一件带有蓝色大理石花纹的灰色长裙?
或者别的?
测试一下↓

显然它没有理解到我们要什么。
将描述换成“一件带有蓝色大理石花纹的灰色无袖全身裙”


显然,它仍然无法理解我们想要的。
改为结合图片使用↓

肉眼可见的,它仍然无法理解。
当加入lora后,可以得到想要的效果。


1-2-2.为什么会出现这样的结果?
当你给AI一个提示,无论是词或者图或两个一起。
AI在拿到你的提示后,会寻找其中的数字特征。
然后再到自己的数据库中,寻找与它找到的数字特征接近的其他数字特征。
假设AI认为他找到的数字特征内容与你提供的数字特征内容差异小于3个数位就是你所给的提示内容,那么它就会认为你要的内容就是这个。
而调用的数据库中不存在你需求的数字特征,则不做提取或根据提取到的其他数值特征自由发挥。
数字特征不是图像上的特征,而是数学上或组合公式上的特征,其识别方式和用眼睛看完全不同。
逻辑示例1:
提示“凳子”→AI识别该内容→通过词库转化为数字特征→寻找与该数字特征相近似的所有数字特征内容→圈定数字特征范围开始输出(图像开始出现噪点)→生产的结果与提示内容进行对比→排除差异过大的值内容,向着差异更小的内容值靠近(图像内容开始逐渐清晰)→重复排除与靠近的过程→直到迭代步数结束或差异值达到预定范围后结束。
迭代步数结束都未达到预定范围的内容,在图像上会出现明显的模糊,变形,扭曲等结果,以及没有实现你想要的内容。
而达到预定范围后结束,虽然实现你想要的内容,但其他你未指定的内容,它会自由发挥,随意进行关联组合。
因此,虽然它叫做绘图,但实际上,它是一个图像内容的筛选组合工具,而且是一个相对粗糙的筛选组合工具,并不能根据图片进行图像上的直接绘图。
逻辑示例2:
提示“1个女孩”,
与静态物体不同的是,静态物体通常可以单独存在于一个空间内,自身可以不携带其他物体。
但人不一样,有头,有四肢,有手脚,有穿着。
而在各个大的模块分类中,又有各种细分,
头由发、耳、面、形等组成,
面中又有眉毛、眼睛、鼻子、嘴巴,张开嘴还有牙齿、舌头、口腔。
臂有上下肢,头身有脖子链接,男性还有喉结。
女性身体有性别特征。
手脚有掌、指节、指甲等。
服装更是多样化。
因此,人这类带有多重必要特征的提示词,AI需要进行的基础特征对比量远比一般的静态物体要高。
当只是输入“1个女孩”时,则需要的各个内容AI会根据能够表现出“1个女孩”这个词特征的内容进行随机组合。




如果我们需要控制更多的内容,则通过添加tag词或者模型来进行内容的控制。
tag使用方式可以在↓进行学习。
SD-AI(3)模型的认识和使用
一幅图理想情况下是符合所有的提示内容。
但词组有上限,太多了AI也会识别不过来,对比组合也会出现各种不匹配的问题,且数据库中不一定有你想要的内容。
所以结果通常是图片符合了内容A,就不符合内容B。
lora则可实现替代一部分tag定向组合的方式以及同时向数据库补充内容的效果。
但lora一定是能够实现所有效果吗?
未必。
1-3.权重:
玩过电商或流量的伙计都知道,各个渠道中的流量分配是由综合权重决定的。
搜索权重高,则商品展示靠前、视频内容靠前、图文内容靠前、网站搜索结果靠前。
广告权重高,则花钱多,花的效率高的靠前。
在SD中同样有权重这一概念,并且是数值化的可视权重值。
在【SD-AI(3)模型的认识和使用】中也有讲到tag词的加权与降权。
1-3-1:怎么理解权重?
你人在上海,打算去旅游,你是开车?还是打车?还是坐飞机?还是坐地铁?还是坐动车?
显然,没有目的没法决定。
这时你设定一个目标,要去成都太古里看人文风景,但你单程预算只有3000元。
你怎么实现这一目标?
全程开车,累。
全程打车,贵。
全程坐飞机,到不了。
全程坐动车,到不了。
全程坐地铁,没通那么远。
这时候就需要对你的行程进行组合。
市内交通,跨城交通,市内交通。
市内拥堵,那么打车和开车都不是首选,权重自然低,
飞机动车显然没有市内使用条件,直接没权重,
地铁能无视堵车和红绿灯问题,公交能在短距离上有足够的优势,显然要达到你的目的,这俩在市内交通中的权重应该拉高,即优先选择。
而跨城交通,公交地铁没使用条件,直接没权重,
开车打车都可以,但开车费油,打车费钱,你的兜里揣多少和你的身体状态决定你使用这俩的权重高低。
飞机和动车在花费上比打车低,疲劳程度上比开车低,显然要达到目的,这俩在跨城交通中的权重应该拉高,即优先选择。
1-3-2:调整权重的目的:
回到SD,权重的目的在于帮助你更好的达成你想要的效果(目的)。
示例:一张熊猫人图。

目标,在保持动作和基本内容的同时进行2D或3D的优化。
那么,拆解目标后,第一步首先是做定型。
如果无法定型,改再多的画风也白搭。
只有定型后,才能向着2D的其他画风,或2.5D,3D等进行迁移。
因此,从目标结果上,定型的权重最高,所有的数据项设置,应为定型来服务。
所以启用ControlNet以固定形态。

原图放入图生图,然后输入tag为线条填充内容,

然后决定你要优化的方向。
如果要选择保持2D,那就选择2D类的基础模型,
如果选择转为3D,就选择3D类的模型。
如,我们选择保持2D,选择动漫类的底模进行生产,得到如下结果。

如果要朝着3D方向但非真实化方向,则选择3D类的底模,或添加3D类的lora模型,可得到如下结果。

但由于模型的一些基础内容权重过高,导致我们的帽子发生了形变。
这时候就需要利用其他方式来解决这一问题。
如,帽子的词更改为消防帽或者其他包裹头部的帽子。
使“包裹头部的帽子”从只有图样的低权重变为图+文的双重权重叠加,增加它出现的概率。


当使用消防帽这个词将头包裹住了,但又不想要火,则可以再添加“没有火”或“禁止火”之类的词,将火排除在外。
也就是火出现的权重从消防帽的连带存在中剔除。

或者使用火焰lora,将其权重调整为负,也能起到相同的作用。


权重不够或者过重时,自行对数值进行调整以到达想要的效果。
只要能够达到目的,lora本身是什么不重要,用于什么东西不重要,重要的是通过调整Lora的权重组合实现你想要的内容。



若忘记如何调整权重,可复习【SD-AI(3)模型的认识和使用】中的内容。
1-3-3:训练集的文本权重:
与使用时的权重调整一样,lora训练时同样存在“权重”这一概念。
在文本框内,默认越靠前的词,学习时的识别和训练权重越高。

在混合应用时,结果表现也会相对更靠前。
2.Lora的数据调用:
和上面1-2-2的问题结果一样,两者遵从同一类调用逻辑。
区别在于,在使用lora的时候,数据库的调用权重为:
lora数据库权重>底模数据库权重。
可以理解为,在排队的时候,lora享有排队的优先权,而底模在lora之后。
逻辑示例:一个穿着夏季服装和丝袜的美女在室外。
此时同时启用一个连衣裙lora,一个丝袜lora,一个人物lora。
当权重一致时,得到以下结果。


锁定种子700660503,关闭lora,得到以下结果↓


两者对比,可以很明显的看出背景、人像、服装、上身姿态、鞋子等都不一致。
在同一种子编号条件下造成这些区别的原因就在于:
对于我们输入的提示内容,
前者,AI在做完识别后,优先从lora模型中调用对应的内容,然后再用底模补充其他内容。
后者,AI在做完识别后,直接调用底模中的对应内容进行生成。
而使用的lora中,根据lora说明,它们分别造成的影响范围如下↓

所以出现它们的结果既有差异,又有重复或类似的情况。
在上图的基础上,继续将输入框内容从自然描述调整为tag词,其他不变,得到以下结果↓


然后启用lora,但此次调整lora权重,得到如下结果↓


然后关闭其中两个lora,调整袜子颜色,得到以下结果↓


对比以上内容,可以看到在同一种子条件下,lora的作用影响。
那么,造成这些差异的细节是什么样的?
对于上面的内容,
自然段内容为:
A beautiful woman wearing summer clothes and stockings is outdoors
提取关键词后为:
1个美女,夏季服装,长筒袜,在户外。
tag段内容为:
1girl, dress,stockings, handbag, outdoors,
两者描述看似一样,生成结果也接近,但实际并不一样。
前者的描述段,实际控制只有4个对象,后者的描述段,要多出一个名为“手提包”的控制对象。
这些控制对象,就是作为使用者要求AI必须要出现的对应结果。


在绘制过程中,虽然AI会随机生成内容,但无论怎么改变,作为控制对象的这5个tag对应的特征值都会表现在最终的图像效果中。
在有lora的情况下,则表现为:
AI按照输入顺序识别提示词转化为特征值→从lora模型中寻找对应的特征值进行表达。
lora中不存在对应的特征值,也没有相似的特征值→进入底模数据库中寻找对应的特征值表达→返回lora的数据库寻找与底模提供的特征值近似的lora数据库中的特征值。
对于AI的数据调用来说,它并不会去理解你用自然语言表达的想要的内容,只是寻找特征值近似的内容进行数据调用,排除特征值偏差过大的内容。
只要最终结果符合控制要求,偏差值小于一定程度,对它来说任务就算完成。
但当要求太过复杂、采样步数过少或调用多个lora内容的某段特征值重合,就会出现AI画完但实际没画完的情况。

也因此,我们训练lora,大多数时候是需要让它尽可能符合我们的提示词,以达到获取最优解的目的,而不是随机结果。
但一个lora越是与提示词接近,与控制目标越接近,其变化也就越小,甚至没有变化。
3.模型训练(内容基于个人测试,不代表通用和一定正确)。
目前应用的训练包有很多类型,但本篇内容仅基于秋葉的本地lora训练包进行讲解。
秋葉一键lora训练包原址(含下载地址):
B站,视频编号:
BV1fs4y1x7p2
先看完秋葉大佬的视频再继续看下面的内容。
3-1.train训练运行文本:

底模路径:
该位置的底模名称可修改,将自己要用的底模放入训练包的
sd-models文件夹中,再将底模名称填写至训练文本的路径处即可。
示例,
"./sd-models/model.ckpt"
"./sd-models/chilloutmix_NiPrunedFp32.safetensors"
"./sd-models/uberRealisticPornMerge_urpmv13.safetensors"
训练数据集路径:
确定内容为"./train\xunlian" 即可,检查train文件夹下是否存在对应的名称为“xunlian”的文件夹。

没有就去上方看秋葉大佬的视频。
图片分辨率:
必须是 64 倍数。
默认为512*512。
理论上,这个尺寸可以无限放大,但在8G显存的最低要求下,
可以训练的图像素点最好不超过921600个。
换成方图也就是960*960。
长图512*1800或1800*512。
超过这个像素点当然也能训,但需要更好的GPU,更高质量的原始图片,否则单纯的抬高训练集像素意义不大。
batch_size:
默认为1,如果你的显存只有8G,一般不动这个值。
如果你的显存为12或更高,可以调整数值为2。
个人对该数值的理解是参照对比。
训练集通常会有很多张图片,
假设这些图都是李四今天穿的同一件衣服,但展现角度不同,其中有正面,有背面,有侧面,有光线影响,有远有近。
那么,只存在张三时,他会告诉你:
他看到李四今天穿了一件红色的衣服。
他看到李四今天穿了一件绿色的衣服。
他看到李四今天穿了一件深红色的衣服。
最后得到的结果就是李四今天穿了一件红绿混合的衣服,其中部分红色较深。
这是batch_size为1时的理解。
但当batch_size为2时,
张三告诉你:他看到李四今天穿了一件红色的衣服。
王五告诉你:他与张三在同一时间同一位置看到李四穿了一件绿色的衣服。
这时就会出现对比。
AI会去印证,为什么会有两个不同的结果,从而实现位置的相对确认。
但这个值并不是越高越好,
过高的时候,也会出现混乱,可以理解为人多嘴杂。
需要根据具体的物体类型和需求进行调整。
最大训练 epoch与每 N 个 epoch 保存一次:
属于总步数的一部分。
总步数=图片数量*图片训练次数*epoch值;
通常建议会设置epoch值到10-16,但实物类一般用不到那么多,数值到9,每2个 epoch 保存一次就能找到不错的结果。
如果做物体复现,最大训练 epoch 7,每 1 个 epoch 保存一次都足够找到想要的结果。
dim与alpha:
默认32和16。
实物需要结合图片量和图片训练次数以及你的目标决定。
如果是材质一类的,一张图片,重复10-20次,3个epoch,学习率默认值下,那么dim与alpha可以设置到64与32。
如果重复5-10次,其他不变,dim与alpha可以设置到128和64;
如果是凹凸表面,总步数200,dim最多也就到64。
一般物体,dim与alpha设置为64/32或32/16就足够。
clip_skip:
训练风格类模型,改为2的泛用性和易用性更好。
训练指定物体类模型,用1的复现性和泛用性更好。
学习率:
$lr = "1e-4":可理解为基础学习率;
$unet_lr = "1e-4":数值与上方保持一致;
$text_encoder_lr = "1e-5":数值为上方的1/10至1/2;
描述段不改变,数值改变即可。
公式如下↓
1e-4=1乘以10的-4次方=0.0001;
2e-4=2乘以10的-4次方=0.0002;
1e-5=1乘以10的-5次方=0.00001;
2e-5=2乘以10的-5次方=0.00002;
9e-5=9乘以10的-5次方=0.00009;
以此类推。
各个训练对象采用的学习率对象并不一样,需要根据具体的物体来决定。
文本学习率可在图像学习率的十分之一至一半。
另,如果使用的alpha值为8或4,需要提高默认学习率。
模型保存名称:
这个自定义就行,之前输出中文会乱码,现在据描述是更新后可以输出中文,但没有测试。
不过没有影响,可以在文件产出后的output文件中修改名称,附加网络加载不影响使用。
我自己通常用一下方式命名
"000XXX(编号序列)-XXX(品牌或类型)-XXXX(具体产品名)"
模型保存格式:
检查你的格式是否为 "safetensors",不是就改成这个。
$network_weights:
在一个原有模型的基础上继续进行训练迭代。
在此行内容中的 ""中填写需要继续训练的模型位置。
如,在训练文件夹的根目录下新建一个“ercixunlian”的文件夹,
然后在此行文段中将 ""更改为
"./ercixunlian/XXXXXXX(需要二次训练的模型名称).safetensors"
优化器设置:
3月的版本默认为use_8bit_adam。
后续有更新其他优化器。
如果你的文本中存在其他优化器描述,则通过修改“=”符号后面的数值进行开启或关闭。

1=打开;
0=关闭;
如果没有对应的优化器,则到秋葉、星空的B站或者笑脸网站去下载。
通常都有使用说明。
如果已经安装对应的优化器但在文本内没有,则自行添加描述段即可。
如,我的版本一开始没有lion优化器,在文件更新后,文件有了但文本没有。
则添加了以下描述段到文本中进行开启。
$use_lion = 1 # use lion optimizer | 使用 lion 优化器

优化器的使用:
目前测试来说,优化器的作用就像是你中午吃了什么一样。
中午吃了炸鸡汉堡,口干舌燥想喝水。
中午吃了火锅,想喝点快乐水。
中午吃了面条,喝了汤,不用再额外添加什么。
完全取决于具体的产品,而没有固定的谁更好。
优化器的数据对比更多是基于配置环境、硬件条件、算法进行的,而非对某个对象适用性。
并不具备普适的选择条件。
Regular:
被翻译为“正则化”。
使用需要在train文件夹中新建一个用于储存对应文件的文件夹。

文件夹名字需要和后续添加到文本中的描述一致。
如,设置为$reg_data_dir = "./train/reg"

3-2.Lora训练常见名词:
3-2-1.Loss值:
Loss值的区间并非固定,根据不同的产品,内容的复杂程度,内容的存在数量类型,Loss值会存在不同的变化。
人像及带人像的半身服饰,其训练的loss区间正如各个玩SD大佬所言,在0.06-0.08这个区间波动,最终可以得到相对较好的结果。
而对于物体和一些小物件,loss值即使低至0.009-0.02这个区间,也可以得到可用的结果(只是可用,不一定是最好的结果)。
当训练透明背景图物体的loss处于0.025-0.04这个区间时,出现的结果会偏差很大,有拟合效果很好的,也有完全欠拟合无法生效的,这点原因未知。
但loss值只是参考,并非绝对普适,唯一能够确定的是,练模型时相对稳定的loss产出成品在使用上适应性更强、有更少的颜色污染和更精确的指向性。

而不断剧烈波动的loss值,最终效果差异很大,更难找到理想的成品。
3-2-2.物体的欠拟合、过拟合、拟合:
通过对模型权重的调整和词的全部调用,而不添加任何其他控制内容。
如果一个模型在权重-2至2区间内,它都无法产生结果,那么从实际结果看,它是废的,归属到欠拟合。
如果一个模型在权重-1至1区间内,它都能产生或反或正的结果,那么从实际结果看,它是拟合的。
如果一个模型在权重-2至2区间内,它都能有效果,且在值为1时,它的应用覆盖范围超过产品本身影响到其他内容,从实际结果看,它是过拟合的。
当模型的权重在0-1的区间能够精确的复现lora中你的训练内容,说明这个lora拟合的相当合适。
从实际的应用上来看,欠拟合的模型对物体的复现应用效率为0,拟合和过拟合的模型则都可以通过调整权重和词来达到想要的效果或者禁止某些效果的产生。
3-2-3.lora训练标签(训练文本):
tag标签的多少和模型的拟合程度并没有绝对的关系,和loss值的稳定性有关系,描述越清楚的tag,对应训练时的loss值波动会相对较小。
对于风格化模型的训练,tag标签需要多且准确,原因在于调用模型的时候,较多的tag词可以只调用其中一部分tag对应的内容,给予整体更多的变化。
对于物体的复现训练,取决于你想要用到该物体的什么部分。
如果是整体应用,则减少训练时的tag词,
如果需要多样变化或者应用于其他的物体,则增加训练时的tag词。
同时,如果需要做整体调用,还需要调整文本的学习率以及整体的tag标签量。
3-2-4.图片预处理:

源目录:
告诉AI需要处理的图片在哪。
将你准备用来训练的图片文件夹地址复制粘贴到此处。
目标目录:
告诉AI处理好的图片放在哪。
将你准备用来存放处理好的图片文件夹地址复制粘贴到此处。
尺寸:需要和train文本内的尺寸一致(3-1.图片分辨率)。
使用 BLIP 生成说明文字(自然语言描述):
生成结果会是一段描述句。
使用 deepbooru 生成说明文字(tags):
生成结果回事一个个tag词。
下图为两者混合,蓝色为 BLIP 生成,红色为deepbooru 生成。

3-2-5.训练集的名称:
标准命名规则为“XX(图片学习次数)_XXX(自定义名)”

图片学习次数在上方有提到,需要结合训练集图片内容与总步数去做相对计算。
但各个目标对象都有起始步数。
以训练集图片为1的基础情况,使用SD1.5底模训练进行示例,
风格类的步数需在3次以上,
材质类的步数需在5次以上,
外形轮廓的步数需在3次以上,
人像带背景类的步数需在8次以上,
指定实物训练类的步数需在12次以上。
虽然训练集图片会增多,但通常不需要调整图片重复次数。
3-2-6.Regular(译为正则化):
由于AI的理解方式和人的大脑并不相同,你告诉它鞋子应该穿在脚上,凳子应该放在地上,但它是无法理解的。
对它来讲,只有存在某内容,和不存在某内容,其内容按照数据库中已有的组合进行调用,不存在真实物理、真实化学反应等内容,并不能去思考什么是“正确的位置和组合”。
而正则化可理解为告诉AI,内容元素应该出现在图片的哪个相对位置。
内容元素指你的图像内容,如人、家具、灯、鞋子等。
reg训练集=让AI在训练时排除该训练集中存在的内容、组合方式、元素等。
在动漫平面与真实化上的体现尤为明显,即训练动漫平面模型,但在正则化的训练集中放置真实化的图片,AI就会排除掉真实化风格。
在物体上的表现则是,于正则化训练集中放置物体的错误放置方式,以帮助AI在训练时让物体放置于“相对正确”的位置中。
与batch_size不同的地方在于,batch_size的对比是多主体对同一物进行随机的印证描述,正则化是可以做单主体对同一物的固定印证描述。
正则化训练集中可以只有图片,没有文本。
正则化图片名称可与训练集中图片名称进行对应,但不对应的生成结果差别也不大。
3-2-7.训练集图像:
透明背景:
优势是对于一个物体进行独立识别时不会容易出错。
劣势是过拟合的lora加载后,物体本身的颜色搭配也会被理解为lora风格。
泛用性低,整体易调用性高,指定调用性低,复现程度高。
杂色背景:
没有抠图的或一些颜色混杂的都归于此类。
优势是训练风格lora好用。
劣势是训练指定物体时,如果没有做好文本描述,效果会比透明背景差很多。
泛用性高,整体易调用性高,指定调用性低,复现程度低。
有序组合背景:
优势是训练实物lora好用。
劣势和上面一样,对训练集文本要求非常高,且需要结合Regular使用。
泛用性低,整体易调用性低,指定调用性高,复现程度高。
三原色背景:
优势是色调识别精度更高。
劣势是容易将颜色固化,特别是在出现与训练集同色词时,容易造成覆盖。
泛用性高,整体易调用性高,指定调用性适中,复现程度低。
3-2-8.图像与文本:
描述文段影响权重,当没有任何描述词在内的时候,则应用范围不可控,只能依赖于底模型的识别,泛化性高。
添加指定描述词或自然语言后,该模型对于指定对象进行应用,但指定对象无法出现时,模型可能无法生效,泛化性降低。
添加具体到对象的描述后,该模型只在固定对象出现时生效。
对应的文本方式匹配对应的图像模式,尝试得到自己想要的结果。
3-2-9.底模:
即大模型,
可以使用默认的,也可以从C站等地方下载后复制到训练包根目录的:
sd-models
文件夹中。
底模选择
如果打算出3次元的图,那就使用3次元的底模训练,出二次元的图就用线稿或者二次元底模训练,3次元底模细节度和线条锐度高于二次元底模。
训实物用二次元底模则会出现挺多意外的情况,有好有坏。
训二次元内容用实物底模,一些线条表现差异会较大。
选好后到train中设置好。
4.训练操作流程:
在看完秋葉大佬的视频,并学习完上面的内容后,可以实际进行一次操作。
4-1.准备好你的产品图包。

4-2.对图片进行处理转化为训练集:
4-2-1.预处理转化:
使用3-2-4的方法,直接处理。
你会得到格式为下图的文件。

4-2-2.手动转化:
可使用截图、PS等任意方式,将图放入训练集中,只要尺寸符合你的标准,不对图片进行处理也行。
但图像名称格式必须为:
“0000X(序列号)-0-XXX(自定义名称).png”
文本则进行新建,名称格式必须为:
“0000X(序列号)-0-XXX(自定义名称).txt”
一张图对应一个文本。
4-2-3.设置文件夹名称:
设置方式按照3-2-5进行操作。
文件放入train文本中的对应位置。

4-3.对文本内容进行优化:
你可以直接打开文本进行修改,也可以像我一样使用工具。
4-3-1.BooruDatasetTagManager:
打开BooruDatasetTagManager工具,
点击软件左上角的FILE,接着点击load folder,
复制你的训练集文件夹地址,

粘贴到点击 load folder后弹出的文件选择框中,回车,再点击选择文件夹。

打开后,从左往右四个框分别是:
图片展示栏,该图片的现有文本内容,工具栏,该文件夹的所有文本内容。

双击该图片的现有文本内容进行修改;
工具栏加号为添加新的词条;
双击该文件夹的所有文本内容部分,词条快速添加到当前图片对应的文本框内。
修改完成后,点击“√”进行保存,
或点击File,再点击save all changes,保存结束。
工具在夸克的包内,【SD固定物体不变形教程】的沙发lora和本文中的连衣裙也在里面。
链接:https://pan.quark.cn/s/233551aee4c7
4-3-2.手动打标:
如果你需要使用时,产品做整体展现,那就对图片少打标签。
如上图中,就只做了一个连衣裙描述、形态描述、背景描述以及添加了一个通用触发词。
如果你需要使用时,做元素化调用,那就对图片多打标签。
如下图中,对画面的组成元素都描述一遍。

由于AI对图片的识别和理解差异问题,所以训练集都最好自己手动打标操作,而不是使用自动打标。
打标的内容越细致,其泛用性越高,但使用时也容易欠拟合。
打标的内容越粗糙,其复现程度越高,但使用时也容易过拟合。
各类产品的必要标签打法会在后续涉及具体的产品内容中展示。
5.运行程序:
在调整好训练集内容之后,右键点击train.ps1,使用Powershell运行。
运行过程中可以看一下loss值的变化情况,相对稳定的loss值产出的结果越接近想要的效果。
每轮训练的结果loss差值越接近,其训练效果也不会差。
loss值开始波动较大,但逐渐收敛,效果也不会差太远。
但要是前一轮的loss为0.09,后一轮变成0.02,下一轮又变成0.04,这种的结果恐怕好不了,多半是训练集或底模出现问题。
解决问题到上方对应内容进行解决。
在模型训练完成后,将根目录output文件夹下的训练结果复制到SD的lora文件夹下,运行SD加载后调用使用。
下面的图是上面示例中只有几张底图还有色差的低质量训练集的产出结果,将就着做示例了。












一些问题:
Q.仅通过lora无法做到多图位、多视角、多场景100%复现的原因:
因训练集中不存在一些图位内容,对AI来说,强行实现这些内容就必须从底模中调取数据,而不是根据已有的内容去思考如何画出剩下的内容。
而在调取数据的过程中,又不可避免的将一些其他内容连带着带出。
导致内容差异越来越大。
而对于lora中存在的内容,则可以直接进行调取,在合适的权重位置,理论上可以实现100%同位复现。
但在实际测试中,受限于训练图的基本质量问题,目前只有纯色或少纹饰内容能够100%复现。
如上方的复杂纹饰内容,仅通过lora只能做到同位99%。
使用时需要搭配其他的插件进行操作才能100%复现。
Q:安装或运行报错:
在秋葉的视频(BV1fs4y1x7p2)下方评论区,找你出现的问题,对应的都有解决方案。
最后,一些新工具和lora模型的测试内容:






















