据说Stable Diffusion 1.5 模型吗,十几张图就能调出来不错的效果。
现在实验室有16G的卡,可以尝试一下啦。( •̀ ω •́ )✧
数据集准备
现在有强大的自动预处理,数据集的准备可以说是只要有图片就行了。
自动预处理
首先是准备用于微调的图片。
此处我拿之前用于三维重建的小车的60张左右的图片作为微调数据。

接下来需要Stable Diffusion WebUI。
SD模型的微调需要提示词,而我的小车显然是没有提示词的。
接下来我需要给这些图片加上提示词,同时,扣掉背景以及缩放图片。
在WebUI,附加功能中,选择从目录批量预处理。
做如下处理:

手动贴标签
这里我的这个训练数据集感觉是不需要手动贴标签的,我就是想让他输入car的提示词时能够画出这个小车出来。
假如是要为某一个角色做微调,那么就需要从自动生成的标签里面把这个角色拥有的特征删除掉。
举个例子,我现在要训练一个叫伊雷娜的角色:

如你所见,她带有以下显而易见的标签: 魔女、呆毛、魔法帽、灰头发···
训练集中,所有图片应当删除属于角色的标签,并添加名叫伊雷娜的这个标签。
这样,训练的Lora可以通过伊雷娜 这个标签触发,绘制特定角色。ψ(`∇´)ψ
文件夹命名
把预处理生成的所有文件放在一个文件夹中,文件的名字无所谓,但是文件夹需要遵循一定的命名规范。
按照这样的格式命名: 迭代次数_Lora触发提示词
只要注意迭代次数就可以了。
实际训练的时候,会跑N轮,每轮每张图片会训练前面写的迭代次数。
上面这种文件夹可以创建多个,指定不同的迭代次数。
然后将上面的一个或多个文件夹再放到一个文件夹里面,作为一个数据集。
训练
训练使用秋叶大佬的lora-scripts。
环境安装
首先,仓库提供了环境安装脚本,正常来说直接克隆下来,直接跑安装脚本就可以啦。
但在我这里总是不会那么顺利的,看这个环境安装单独一个标题你就知道这个坑不小`(*>﹏<*)′
解决Windows不允许执行PowerShell脚本的问题
环境初始化脚本和训练脚本什么的都是PowerShell脚本,默认情况下系统是不允许执行ps脚本的。
因此,需要对系统做一些手脚。
挺简单的,首先打开管理员权限的PowerShell,然后在里面输入 Set-ExecutionPolicy Unrestricted ,然后输入Y接受。
Python环境
我的先天BUG体质导致各种东西在我手上跑总是出BUG,比如安装脚本在我机器上就跑不起来。`(*>﹏<*)′
即使是能跑自动安装脚本,有些东西也是要手动装的。
我为了节约空间,没有使用虚拟环境,全部手动装的。
其中大部分是缺什么装什么,报什么错装什么包。
但有几个包需要注意。
首先是torch包,这个包去Torch官方找一个适合自己机器的装,直接装似乎会装成CPU版本的。
还有xformers包,这个无脑install似乎是不行的(为此我还把CUDA重装了,也没装上),直接install是编译安装,官方Github仓库提供了预编译安装的方法。
除了这两个包,其他似乎是没什么坑的。至少我没遇到
训练配置
几个比较重要的配置:
Batch大小,每次往显卡里面送多少条数据,根据显存调整到最大值,经测试512情况下、16G显存情况下,8是可以的(似乎可以更高一点)
Epoches数量,训练多少次,取个稍微大一点的值,大了可以终止,小了的话就比较麻烦。(但是实际测试并不需要太大的值,60张图,每图5次,10轮以内就可以。)
底膜
数据集
优化器和参数
小神童优化器
据说神童优化器(prodigy),是目前最棒的优化器。
那么,其他优化器,我就也不考虑了,直接奔着神童优化器去吧。
使用神童优化器需要装prodigyopt包。
然后需要把学习率调高(一共有三个学习率的值要改)(据测试,不改高会报错`(*>﹏<*)′),别人说1~2左右合适。
正式训练
一切准备就绪,没什么好说的,直接跑脚本就好了。
但是不要浪费电跑很多轮,像我这个数据集可能跑几分钟就够了。
结果
在我的数据集上,我跑了130多轮,loss掉了很多,但是,最终的结果是,过拟合。画什么都是那几张训练的图片。
实际测试四轮和六轮的效果最好,分别如下:
四轮:

六轮:

训练到第20轮问题就很大了:

第一百多轮就是直接过拟合了。
咱也是能调大模型的人啦!
