前面文章已经介绍了不少Stable Diffusion AI绘图的基本方法,在前面的介绍中,我们都是使用别人训练好的LoRA来进行绘图。使用别人发布的LoRA,会遇到这种情况,那就是比如某个人物或者风格没有对应的LoRA发布,那么就画不了了。人们常说:自己动手丰衣足食,别人没做就自己做吧。学会自己制作LoRA就不用当伸手党,做的好的LoRA还可发布出来供别人使用。
本例将制作蔡徐坤的Lora,并用来进行AI绘图。我们先来看看最后的效果:(我知道可能用其他美女做成LoRA文章点击率更高,但是蔡徐坤更有辨识度)
使用自己做的LoRA绘制出蔡徐坤图片
使用自己做的LoRA绘制蔡徐坤图片
在开始制作之前,我们先回顾下什么LoRA模型,了解基本原理我们选参数时就不会手足无措。
LoRA: 全名为Low-Rank Adaptation of Large Language Models(大语言模型的低阶适配器),简单来说就是大语言模型的微调小模型。Checkpoint的大模型通过这个小模型可以进行微调。模型存放位置在models\LoRA下。
可以看出LoRA是在某个Stable Diffusion大模型下训练生成的一个小模型,用于微调大模型。LoRA可以调整人物,也可以调整风格。
例如下图是加载了蒂法的LoRA,这是人物LoRA(tifaMeenow_tifaV2.safetensors)
加载了人物LoRA
还有改变画面风格的LoRA,例如水彩风格(Colorwater_v4.safetensors沁彩)
加载了水彩风格LoRA
目前进行LoRA模型训练只要8G显存就可以了(笔者就是使用1080/8g写的教程,为了适应更多人的需求,实际工作使用的3060/12G),个人推荐进行训练用3060/12G显卡这样避免显存不够的错误。训练使用的程序框架是kohya_ss。kohya_ss是一个All in One的程序包(傻瓜包)整合了训练用的所有软件,还有图形用户界面。所有软件都是在它自己的运行环境里运行,不会干扰其他的程序软件。安装kohya_ss非常简单,唯一要求是可以科学上网。
kohya_ss的地址
https://github.com/bmaltais/kohya_ss
本次例子使用真人大模型ChilloutMix.safetensors,来生成蔡徐坤的Lora,显卡使用1080/8g进行训练。
整个训练过程分为三步:
kohya_ss训练环境搭建图片处理和标注训练并生成LoRA模型,并用它来进行AI绘图
下面开始依次进行说明:
一. kohya_ss环境搭建,主要按照它官方的教程来,我只说明下需要注意的地方。地址是:(如果出现问题,多半是没有科学上网)
https://github.com/bmaltais/kohya_ss
依赖库安装
安装 Python 3.10,将 Python 加入 PATH 环境变量这项打勾安装 Git安装Visual Studio 2015, 2017, 2019, and 2022 redistributableVisual Studio 2015, 2017, 2019, and 2022 redistributable的地址:
https://aka.ms/vs/17/release/vc_redist.x64.exe
进行AI绘图的人前两项安装已经装过了,所以直接跳过,只需要装第三项。
装好之后需要更改powerShell的权限,用管理员运行里执行
运行里输入PowerShell
输入 :Set-ExecutionPolicy Unrestricted
然后输入Y,见下图:
更改权限
然后关闭它就可以了。如果你windows是管理员运行的这步可以省略。
再开一个窗口,开全局科学上网,依次一行一行复制以下命令执行,一个字都不要改:
git clone https://github.com/bmaltais/kohya_ss.git
cd kohya_ss
python -m venv venv
.\venv\Scripts\activate
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install --use-pep517 --upgrade -r requirements.txt
pip install -U -I --no-deps https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl
cp .\bitsandbytes_windows\*.dll .\venv\Lib\site-packages\bitsandbytes\
cp .\bitsandbytes_windows\cextension.py .\venv\Lib\site-packages\bitsandbytes\cextension.py
cp .\bitsandbytes_windows\main.py .\venv\Lib\site-packages\bitsandbytes\cuda_setup\main.py
accelerate config
有2g左右的文件需要下载,依赖网速,可能需要半小时。其中最后一步是一个配置文件,按照你的机器选就行了,我的1080是老显卡很多优化没有,所以大部分选的NO。
accelerate config
你可以随时更改这个配置,只需要执行下面3个命令重新配置(建议第一次都选NO,后面再测试你的显卡能打开哪些开关加速训练)
cd kohya_ss
.\venv\Scripts\activate
accelerate config
安装好后,会有个kohya_ss目录,大小6g左右。然后右键使用powershell执行gui-user.ps1
执行gui-user.ps1
就会弹出GUI界面,如下图:(建议你关掉已经启动的Stable Diffusion绘图和其他占用显存的程序,训练需要6G以上的显存空间)
kohya_ss的界面
到这里,训练环境就搭建好了。
二。图片处理和标注
1.图片下载处理
去网上下载蔡徐坤的图片,各种角度的都找,需要清晰的照片,图片分辨率随便,尽量找他单人照。建一个叫100_cxkimg的文件夹,这里100很重要,它是代表进行100次训练,你写50就是50次训练,例如50_annimg,文件名随便,最好不要用中文。你也可以学我用cxk0.jpg到cxk15.jpg命名这16张照片。
网上找了18张蔡徐坤的图片
2.标注图片
标注是机器深度学习的重要内容,这里原理不做解释了。标注的越好,模型的泛化就越强。你不标注可能生成就是个没用的模型。标注就是用提示词来说明图片的内容。这里举个例子例如上图cxk4.jpg是个穿西装的蔡徐坤,就标注成:a man in a suit and bow tie。生成标注的办法有多种,例如人工去标注,这里用个简单的办法,让机器自动标注。
自动标注图片的工具
科学上网条件下,选择Utilities的BLIP Captioning,填入文件夹名字,点下Caption images,就会生成图片的自动标注。
生成标注文件
你也可以采用手动标注,就是人比较累。图片自动标注后,也最好打开每个文件检查下描述的正确性,删掉错误内容描述,确保模型最后生成更加泛化的模型。
标注就是用提示词描述
一切准备就绪,开始最后一步了,训练模型。
三。训练模型
配置训练参数,选择训练LoRA和基于哪个大模型训练,见下图
选择基于哪个大模型训练
填入训练的目录和输出地址
训练目录
训练参数大部分用默认值就行,其他依据你的显卡来填
这里有几个重要参数,如果显卡比较老用Mixed precision填no,Save precision填bf16,30系列可以试试fp16。
Learning rate:0.0001
Mixed precision:no
Save precision:bf16
配置一切就绪,按最下面的训练模型按钮。
训练模型
1080/8G显卡,16张图片共1600步花了24分钟训练完成。得到模型caixukun_v1.safetensors。
下面用这个LoRA画的图片(看效果模型的泛化性不错):
制作自己喜爱人物的LoRA吧~~~
今天就介绍到这里,我们下次见,关注我不迷路。