简介
不多说了,其实就是个简单的Lora模型训练的过程。丹成逐我三山去,不作巫阳云雨仙!!!
训练资源准备
步骤1:采集20+张图片
- 可以是拍照获得;
- 可以是视频提取;
- 可以是截图;
步骤2:将图片尺寸进行处理
可以自己手动剪切,也可以使用如下的命令行进行批量裁剪,或者使用www.onlinephotosoft.com/zh-CN/birme…
我使用的命令行裁剪的,命令如下
magick mogrify -gravity center -extent 1:1 -crop 3x3@ *.jpeg *.webp
magick mogrify -crop 768x768+0+0 *.jpeg *.webp *.png
步骤3:处理完的图片进行筛选
选取符合条件的图片,将不符合条件的图片剔除!
步骤4:使用SD的图像预处理
如图填写,选中生成描述,由于我们已经对图片进行了裁剪和处理,其他的选项就不选了。
处理完毕后,在我们的目标目录下,可以看到如下信息
这里是图片,及其对应的文本描述,可以点开看下,也可以通过自己补充一些文本描述。
训练基本要求
- 显存12G,训练768×768的图,这样可以避免大图的时候出现的图像重叠;
- 至少15张图片,每张图片的训练步数不少于100;
- 照片人像要求多角度,特别是脸部特写(尽量高分辨率),多角度,多表情,不同灯光效果,不同姿势等;
- 图片构图尽量简单,避免复杂的其他因素干扰;
- 可以单张脸部特写+单张服装按比例组成的一组照片(这里比例是3:1)
- 减少重复或高度相似的图片,避免造成过拟合;
训练软件安装
按照步骤,进行训练软件的安装。
服务器运行
- 如果是在服务器上运行,先检查自己的驱动
nvidia-smi
- 如果是在服务器上运行,注意自己的驱动地址是不是正确,如果不正确,需要先指定
阿里云的默认PATH如下
可以在这个基础上,根据你CUDA的位置,增加路径:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-11.7/lib64"
export TF_ENABLE_ONEDNN_OPTS=0
- 如果是在服务器上启动的,那么执行命令如下
./gui.sh --listen 0.0.0.0 --server_port 7861 --inbrowser --share
点击public URL
之后,可以直接打开页面了,大致如下
训练设置
Dreambooth LORA
我们使用的是Dreambooth LORA,注意不要选错呀
设置Source Model
选择使用的主模型,比如真实风格。
设置Folders
设置资源地址,主要如下
- Image folder:训练图片所在的位置;
- Output folder:训练完成后,可以在这个地方找到已经训练完的Lora模型;
- Logging folder:日志文件
这三个文件夹都可以在控制台自己创建的,其中Image folder对应的地址,要上传我们的训练图片
训练图片:
设置Training parameters
- 设置好尺寸
- 禁用buckets
- 如果训练报错
NameError: name 'str2optimizer8bit_blockwise' is not defined
,则可以将Optimizer
改为AdamW.
开始训练
点击Train Model即可开始训练。
后台可以看到进度条:
训练了18张图片,大约需要25分钟左右。GPU是阿里云的A10,具体如下
可能发生的问题
缺少包:tensorflow、tensorrt等
如果后台报错,那么需要按照错误的提示,进行处理,比如缺少显卡的包,则需要安装对应的包。
比如安装tensorflow
pip install tensorflow==2.9.2
安装tensorrt
pip install nvidia-tensorrt -U --index-url https://pypi.ngc.nvidia.com
找不到文件:libnvinfer.so.8、libnvinfer.so.7等
可以通过下面命令行,查看缺失的文件的位置
find / -name libnvinfer.so.8
当然可以做关联,或者添加文件的PATH路径,让程序可以找到。
sudo ln -s /usr/local/lib/python3.10/dist-packages/tensorrt/libnvinfer.so.8 /usr/local/lib/python3.10/dist-packages/tensorrt/libnvinfer.so.7
sudo ln -s /usr/local/lib/python3.10/dist-packages/tensorrt/libnvinfer_plugin.so.8 /usr/local/lib/python3.10/dist-packages/tensorrt/libnvinfer_plugin.so.7
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/python3.10/dist-packages/tensorrt/:/usr/local/cuda-11.7/
大图欣赏