Stable Diffusion Kohya_ss MAC炼丹基础
整理训练的图片
整理图片
可将元素和场景分开给Ai进行学习,通过文件夹命名结果如30_ys,50_cj。前面的数字即Ai学习的次数(每个图片学习几次)。
Ai需要学习的是图片内容和文本内容,文本内容是对应图片的提示词。提示次可在webui中训练——图像预处理中,选择资源目录和输出目录即可。
前提图片尺寸大小一致或已裁剪为一致。
生成提示词
使用BLIP Captioning反推图片提示词,检查提示词是否准确
LoRA训练主要参数
Source model
Configuration file:加载预设
Model Quick Pick:快速选择模型
Save trained mode as:把训练好的模型存为什么格式
Pretrained model name or path:如果是自定义可以在这里选择模型路径
v2、v_parameterization(底模像素大于768时勾选)、SDXL Model根据底膜的基础算法勾选对应的类型,如果是1.5则不用勾选
Folders
Image folder:存放图片的路径,此路径为步数_名字的上一层。
Regularisation folder:正则路径,防止训练图像过于拟合/过度训练
Output folder:模型保存路径
Logging folder:日志路径
Model output name:模型保存的名字
Paramenters
训练总步数=图片数量x每张步数xEpoch
Presets:预设
LoRA type:选择不同版本的lora类型
Train batch size:Ai在同一时间学习多少张图片,数字低不代表不好,说明学的更仔细
Epoch:训练多少轮
Save every N epochs:多少轮存一次(最终保存多少轮=Epoch/Save every N epochs)
Caption Extension:提示词文件格式
Mixed precision:混合精度
Save precision:保存精度
Number of CPU threads per core:CPU多少核填多少核
Learning rate:学习率,一般和Unet learning rate一样。
Text Encoder learning rate:文本编码学习率,把提示词转换成AI可以学习的东西一般为Unet learning rate的1/2或1/10。
Unet learning rate:特征提取学习率
LR Scheduler:constant恒定不变和学习率一致,constant with warmup慢热型,等到和学习率一致后恒定不变,Cosine避免大浮动波动的算法,避免后期突然下降防止过拟合。Cosine with restarts在学习率下降时回到设置的学习率,Linear线性衰减,学习率线性下降。Polynomial多段式衰减,像楼梯一样。
LR warmup (% of steps):慢慢熟悉模型,前期预热再学,建议开启
Optimizer:建议AdamW8bit,mac选AdamW优化器,DAdptAdam帮助找到最优学习率(修改LR和Unet LR为1 Text encoder LR为0.5 算法用constant,Warmup为0,在tensorboard里看),
Network Rank (Dimension):模型精细度,越高精细度越高,过高会过拟合,会影响文件大小(128≈140mb,64≈70mb,32≈40mb),建议二次元≥64,写实≥128,场景≥256。
Network Alpha:特征学习分辨率,建议和上面保持一致
Max resolution:图片的尺寸
Enable Buckets:根据Ai的想法去裁剪图片。
tensorboard
loss/average 训练步数提升时图片的损失率,loss接近0.085为参考值
lr/textencoder 步数增加时学习率的变化
其它:显存不够勾选Gradient checkpointing、Memory efficient attention、Use xformers
训练结果校验
应用lora
选择训练中使用的底模,任意挑选训练时的提示词,填入刚刚训练出来的lora。如:
注意生成尺寸和训练图片尺寸保持一致,其它参数建议:迭代步数:35,采样方法:DPM++ SDE Karras,总批次数:4
提示词:1
2<lora:a-000006:0.65>,
a white cube with a yellow object in the middle of it on a blue background with a white circle around it
挑选lora权重
提示词:1
2<lora:a-000006:STR>,
a white cube with a yellow object in the middle of it on a blue background with a white circle around it
选择脚本:X/Y/Z plot,X轴类型提示词搜索/替换(Prompt S/R),X轴值:STR,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1
其它参数建议:总批次数:1
根据训练结果查看STR,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1值中哪个权重区间最合适。然后调整X轴值,如0.6~0.7是上一轮最合适的,那么可以修改X轴值为:STR,0.61,0.62,0.63,0.64,0.65,0.66,0.67,0.68,0.69,0.7。
小技巧1,2,3,4,5,6,7,8,9,10可写成1-10 1,3,5,7,9可与为1-9(+2)
挑选lora数据
训练完的lora可能有多个,同样在脚本中进行筛选,添加Y轴类型,Y轴值为NUM,2,4,6,8 (序号为lora训练序号)
提示词:1
2<lora:a-00000NUM:STR>,
a white cube with a yellow object in the middle of it on a blue background with a white circle around it
此时我们会得到一个图片的图表数据如下:
STR | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | 1 | |
---|---|---|---|---|---|---|---|---|---|---|---|
NUM | img | img | img | img | img | img | img | img | img | img | img |
2 | img | img | img | img | img | img | good1 | img | img | img | img |
4 | img | img | img | img | img | img | img | img | img | img | img |
6 | img | img | img | img | img | good2 | img | img | img | img | img |
8 | img | img | img | img | img | img | img | img | img | img | img |
其中纵向的为训练出来的四个不同的lora,横排的代表不同的权重。需要在其中挑选出合适的图片,如图表中有两个不错,需要记录STR/NUM 0.6/2,STR/NUM 0.5/6。意思是
- 感谢你赐予我前进的力量