用LoRA+Stable Diffusion生成属于你自己的图片!
前言
最近随着ChatGPT的爆火,曾经火过一阵的AI图片生成似乎也又火了一阵,当然,这次是带着最新的LoRA模型前来,使人人都拥有了编辑创作自己的模型的自由。
本文旨在从零开始,教会你如何通过本地训练的方法,用自己的图片创造一个LoRA模型,并正常的生成图片。
注意,在训练期间您可能需要一张8GB显存或更高的显卡(最次也是6g吧)(笔者配置:i5-7500+16g ddr4 2133+rtx3070 8g)
让我们开始吧!

0. 准备工作
如果你的电脑中已经有了python3.10,或你曾经亲自调教过StableDiffusion,请跳过这一part
首先你需要的就是一个python。
笔者此处选用了python3.10

这是SD官方所推荐的版本,如果您尝试使用其他版本,可能会遇到一些兼容性问题。
下载完成后,请勾选 Add python 3.10 to PATH ,然后选择Install now。

接下来,您需要安装Git,可以在此处下载
安装完git后,请拿出你想要用来学习的照片,并以以下方式保存。(由于本文的训练集采用512\*512格式,为了获得最好的效果,建议您预处理,将图片裁为近似正方形,保持人脸出现在中心)

即:创建一个文件夹,再在里面创建文件夹,里面的文件夹分别标为“数字_训练集”,其中数字代表着这个文件夹的训练次数,训练集仅供区分。
注意:文件夹路径必须全英文
1. 请 选择你的阵营
与大多人想的可能不同,训练你自己的模型不代表着从头训练,而是以现有模型为基础,学习你的特征。所以,你需要选择一个用来训练的初始模型。
打开 Civitai 这是一个模型下载与交流的网站,在主页选择一个左上角带有checkpoint标志的模型,打开。(笔者此处选用了ChilloutMix模型,在realistic标签的图形处理上,这是个很不错的模型)
滑动到 Versions 一栏,在左侧选中你想要的版本(若有fp32,fp16,bp32,bp16字样的,请选择fp/bp16)
记住你选择的模型右边的Base Model一栏的参数,过会要用。

2. 请 安装环境
接下来,你需要安装模型训练(选用kohya_ss)和图片生成的平台(stable diffusion)
按下win+r键,输入powershell,打开powershell
使用cd指令,前往您希望其下载并执行的位置
接下来的操作可能会需要您有一个科学的网络环境,笔者推荐在安装时全程使用 SSTap 虚拟网卡进行代理,以避免奇怪的报错
安装stable diffusion
在powershell窗口中,执行
git clone <https://github.com/AUTOMATIC1111/stable-diffusion-webui.git>
接下来,请打开您在
使用cd指令,前往您希望其下载并执行的位置
中选择的文件夹,找到stable-diffusion-webui并点击进入,以备用。
安装kohya
请通过任务栏上的“搜索”功能,输入powershell并以管理员模式打开
在刚打开的第二个powershell中,执行 Set-ExecutionPolicy Unrestricted 并回复A。
关闭这个以管理员模式启动的powershell,回到之前的powershell
在powershell窗口中,一次一行的输入这些命令
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
在输入完最后一行后,请在窗口中键入
Enter
Enter
no
no
no
all
额外选项
若您是rtx30系以上用户,推荐安装cudnn,教程如下
- 下载这个
- 将其解压缩,并将内部的整个文件夹复制到刚才clone完的kohya_ss文件夹中
- 在刚才的powershell中执行python .\\tools\\cudann_1.8_install.py
如果您在哪里不小心关闭了powershell,请重新打开,cd到kohya的文件夹,然后执行.\\venv\\Scripts\\activate来回到虚拟环境
3.开始训练!
将图片打上标签
首先,将您在
请 选择你的阵营
中下载的模型文件,移动到stable-diffusion-webui/models/Stable-diffusion/目录下
双击stable diffusion目录中的webui-user.bat打开SD
打开浏览器,访问127.0.0.1:7860
检查左上角的checkpoint选项,是否为你下载的模型
选择顶栏中的Train选项卡,点击process images
将您在准备工作中准备的图片文件夹路径复制进 Source directory
在另一处创建一个新文件夹,用于存放打过标签的数据集
将新创建的文件夹路径复制进 Destnation directory
把下面一排选项中的Use deepbooru for caption选项打勾,并点击Preprocess

生成完成后,您的文件夹最下方一层应看起来长这样

一切正常的话,在右边的进度条跑完之后,您就可以关闭刚刚自动打开的命令行,准备开始训练模型了
训练
打开Kohya_ss目录下的gui.bat
同样的,打开浏览器并访问127.0.0.1:7860
选择Dreambooth LoRA
在source model处,左边一栏请通过右侧的打开按钮选择您保存在 stable-diffusion-webui/models/Stable-diffusion/ 目录下的模型文件
中间一栏请根据记住你选择的模型右边的Base Model一栏的参数,过会要用。这块模型作者写的sd1.5等等参数选择
右边一栏保持safetensor不变
下面的v2仅在您的基础模型是sd2.0的情况下打勾

在folders处,分别按照其上的标签,选择您的照片文件夹与模型输出文件夹(照片文件夹即在将图片打上标签一处中生成的带有标签的图片文件夹)(模型输出文件夹即最终训练出的模型所在文件夹)
然后在Model output name处指定您训练的模型的名称

在Training parameters处,进行参数调整,如果您不想费心,请想我这样调整


点击 Train model,等待命令行中的process跑完
打开您前几步设置的模型导出文件夹,如果您看到一个如您命名的.safetensor文件躺在里面,恭喜您,模型创建成功了。
4.魔导师环节
关闭kohya
在stable-diffusion-webui\models文件夹中,创建一个名为Lora的新文件夹,将上一步中我们自己训练的模型扔进去

再次打开stable diffusion
点击 Extensions 选项卡,选择 Available ,点击load from
向下翻,找到sd-webui-additional-networks,点击右侧的install等待安装完成(这一步可能需要您在开启stable diffusion前,使用SSTap连接虚拟网卡进行代理)
点击上方的 Installed
将 sd-webui-additional-networks 勾选上,点击 Apply and restart UI

接下来,在txt2img处分别打上您想要的标签,对sampling step略微调整(这个根据不同的模型,最佳的迭代次数可能不同,我推荐您先使用35为基础进行尝试),对CFG Scale进行略微调整(大体上,越靠左越贴合您的标签,越靠右越接近模型认为的完美)
点击generate下方的红色玩意,选择新跳出来的Lora选项卡,(如果没有任何模型,点击reload),点击您创建的模型

此时您的prompts一栏中应该会新增加一个像这样<lora:XXX:1>的东西,把他挪到prompts列表中靠前的,适合的位置(如图)

全部完成后,您的页面应该看起来类似这样(参数或许有所不同)

点击Generate,生成属于你的照片吧

5.特殊情况
若您并没有生成图像,但是显存已经被吃满了,请尝试关闭并重新打开stable diffusion
若您的显存怎么样都会爆(但是已经满足了6g),可以尝试在webui-user.bat文件中的set COMMANDLINE_ARGS=一行后,加入启动参数--xformers