Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何用Lora给自己女朋友建模 #58

Open
lihongxun945 opened this issue May 21, 2023 · 0 comments
Open

如何用Lora给自己女朋友建模 #58

lihongxun945 opened this issue May 21, 2023 · 0 comments

Comments

@lihongxun945
Copy link
Owner

lihongxun945 commented May 21, 2023

目标

1
最近AIGC 特别火,主角主要是两个,一个是去年已经爆火chatgpt,另一个就是今天要讲的 Stable Diffusion。
Stable Diffusion需要大量的数据和算例才能训练,我们普通用户只能去使用,而 Lora 的出现使得我们用小算力加少量数据就能训练自己的模型。本文就教大家如何用 Lora训练一个自己的模型出来,比如女朋友或者某个明星都可以,然后就可以用这个模型生成图片了。

一些名词解释

  • Stable Diffusion是一种目前最流行的生成图片的算法,主要原理扩算算法。
  • checkpoint是深度学习过程中的检查点,在这里其实就是 stable diffusion训练过程中保存的模型,这个是需要大量数据和大量算例才可以训练出来的
  • Lora 全称是 Low-Rank Adaptation of Large Language Models, 只要用少量(几十张)照片就可以训练出一个定制的模型,结合 checkpoint生成高质量的图片

第一步 用colab部署stable-diffusion-webui

先打开webui的github地址:https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Online-Services
这里面有别人维护的colab服务,如下图所示,我们可以直接点击第一个:
1

然后会打开一个colab上的一个notebook,这是别人维护的你可以直接用,不过最好还是复制到自己的项目空间,方便自己修改,“File-> Save a copy in drive” 保存到自己的google drive中,如下图所示:
1

colab 的用法可以自己去找教程,注意这里需要用到GPU才行,可以点击 "runtime -> change runtime type" 选择一个GPU型号(现在似乎没有免费的GPU用了需要充钱)
notebook上面有很多个代码块,从头到尾全部执行一遍即可,每一个代码块都有对应的说明。最后一个代码块执行之后会输出一个在线地址,点击就可以打开webui了:

1

看到上面这个界面,就说明webui部署成功了,你可以尝试用默认的模型生成自己的图片。

第二步 下载使用Lora模型

可以在这个网站 civitai.com 上找到很多别人训练好的Lora模型,比如这个敦煌风格的 https://civitai.com/models/45727/dunhuang
有两种方式可以下载Lora模型:

  1. 方式一:可以选择手动下载到本地,然后上传到colab上,路径是 /content/gdrive/MyDrive/sd/stable-diffusion-webui/models/Lora/{模型名字}.safetensors
  2. 方式二:可以直接在colab上执行如下命令:
!wget https://civitai.com/api/download/models/62995 -O /content/gdrive/MyDrive/sd/stable-diffusion-webui/models/Lora/dunhuang.safetensors

模型下载完成后,就可以在webui中启用模型了,按照如下方式来启用对应的Lora模型:
1

在prompt中看到有 <lora:keji:1> 就说明模型已经生效了,这个模型说明上有说需要 dunhuang_cloths 之类的关键词来触发,这是我生成的效果:
1
后续我们训练自己的Lora模型,也是这么启用的。

第三步 准备训练数据

要训练自己的模型,最重要就是准备好高质量的训练数据,训练数据包括图片和描述词。这里以训练某个人的模型为例,首先需要准备这个人的多张照片,照片的好坏直接影响到最终模型的效果,因为我们训练一个人物模型主要是训练脸部,图片最好满足如下要求

  1. 人物是图片的主题,占据图片大部分空间
  2. 面部清晰无遮挡
  3. 背景尽量简单
  4. 有多个不同角度的照片,比如正脸,侧脸,回头等不同角度
    图片数量有几十张就可以得到比较好的效果了。

有了图片之后,需要对图片进行裁剪,尽量突出人物,把与训练不相关的部分裁剪掉,建议分两步裁剪:

  1. 第一步,自己手动把每一个图片都进行裁剪,把不必要的背景都裁掉,突出人物
  2. 第二步,用这个在线工具统一裁剪成512x512大小的图片,https://www.birme.net/?target_width=512&target_height=512

1

到这里我们就得到了几十张裁剪好的图片,接下来就要进行打标了,直接用webui中的图片预处理功能进行打标。如上图所示,这个工具是个网页无法处理我们本地的图片,所以还是推荐上传到google drive上,然后在这里填入地址即可。因为我们的图片已经裁剪过了,只要勾选一下 deepbooru来自动识图打标签就可以了。处理完之后,每一个图片都有一个同名的txt文件,里面都是描述词。到这里我们就把训练数据准备好了,接下来开始训练。

第四步 用秋叶大神的镜像训练模型

这里我们采用秋叶大神推荐的方案,直接用autodl上的显卡进行训练。 地址:https://www.autodl.com/market/list
1
首先需要创建一个实例,这里我选择的是 1.3元/小时 的3090显卡,在镜像中选择“社区镜像”,然后输入Akegarasu/lora-scripts/lora-train 搜索就可以找到对应的镜像。创建完实例之后,直接在控制台中点击 JupyterLab 打开notebook,经过测试还挺好用,也非常稳定。

创建一个训练目录用来存放我们的训练素材,比如 lora-scripts/train/images/10_images , 目录名称是由 {迭代次数_名称}组成的,所以这里表示在全部样本上迭代训练10次(迭代次数就是深度学习中常说的epoch)。然后把我们前面生成的训练数据上传上去就好。
1

接下来编辑 train.sh 文件,里面的参数比较多,如果没有深度学习相关经验建议就保持默认值,只要 train_data_dir 改成我们数据集的父目录就行了,这里就需要改成 train/images 即可。
然后执行 bash train.sh 就可以启动训练了,看到下面的画面就说明训练已经开始了,半个小时左右就可以完成训练:
1

训练完成后可以在 output 目录找到模型,然后按照第二步的方法上传到 colab 上,就可以用来生成图片了。

@lihongxun945 lihongxun945 changed the title 如何用Lora训练自定义模型 如何用Lora给自己女朋友建模 May 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant