手把手教你用LoRA练习自己的Stable Diffusion模型

打印 上一主题 下一主题

主题 532|帖子 532|积分 1611

目次
写在前面
一、准备数据
二、数据打标签
三、执行练习
四、执行推理
1.LoRA推理
2.全参数推理

写在前面

        Stable Diffusion大家已经很熟悉了,那么怎样练习自己的sd模型呢,本日我就介绍一下用LoRA练习sd的方法。
        发起先看一下这两篇文章,了解一些前置知识:
        手把手教你在linux中摆设stable-diffusion-webui
        怎样练习一个大模型:LoRA篇
        我们以Chilloutmix为例,Chilloutmix可以天生悦目的小姐姐。为了实验LoRA的能力,我们用小哥哥的图片对它举行微调,看结果怎样。

一、准备数据

        从网上找一些小帅的图片,需要脸部清晰的、多角度的、正脸的、侧脸的、最好是背景干净的、各种心情的,如许增加练习集的多样性,提高模型的泛化能力。
        素材可以少(一般几十张就不少了,太多了也会过拟合),但是质量一定要高。 
        背景最好是纯色,想练习什么就突出什么,对于我们的任务,需要选取人脸为重点的图片。
        搜集好练习用的图像后,需要举行巨细的规范处置惩罚,需要是64的倍数。一般都处置惩罚为512*512,也可以是768*768,不发起超过1024,尺寸越大则越吃显存。
        推荐一个批量处置惩罚图像尺寸的网站挺好用的:https://www.birme.net/ 
        处置惩罚后的图片长如许:

二、数据打标签

        其实我们要练习的是ControlNet,现在图片有了,还差图片的形貌大概叫标签。我们不需要自己手动给每张图片打标签,sd-webui有现成的工具(DeepBooru)天生图片的标签。

        在sd-webui中举行如上操作,在3填写输入图片的目次,4填写输出目次,处置惩罚之后原图片和标签文件txt都会放在输出目次

        txt中的内容长如许,都是一个一个的标签:

        接下来我们要查抄每张图片的标签,这里有两个简朴的原则:
        1.通用的特征标签需要去掉,比如人物的眼睛、眉毛、鼻子、头发长度等代表人物自己的属性。凡是绑定在人物身上的,就要把它们删除。再比如出图只要黑色头发,那练习数据都喂黑色头发,而且删掉雷同“black_hair”的标签。
        2.留下非通用的标签,比如不是每张练习数据都是微笑的,以是对于微笑的数据应该有“smile”标签;不是所有的数据背景都是白色,就要保留“white backgroud”。
        详细保留大概增加什么标签其实没有硬性的规定,还是要根据详细情况反复尝试。
        sd-webui是有打标签的插件的,但是我更喜欢一款小工具,方便多人使用,BooruDatasetTagManager,地点:https://pan.baidu.com/s/1Ff7nkwf95AziCcZWTofIzg?pwd=jfoe 

        数据和标签准备好后放在一个自界说的目次中待用,有一点需要注意,文件名的格式是数字_字母,前面的数字是每次练习过程中网络练习单张图片的次数,比如10_asianman这个目次定名很重要,一定不要写错!!!
三、执行练习

        LoRA练习我们使用kohya,kohya是日本人开辟的,以是会经常出现日文,凑活这看吧。
        1.下载kohya,别忘了下载sd-scripts目次中的项目:kohya-ss (Kohya S.) · GitHub,下载后执行:
  1. pip install -r requirements.txt
复制代码
        2.因为我们是对Chilloutmix举行微调,以是先在这里下载Chilloutmix,并放在model目次下。
        3.启动kohya:
  1. python kohya_gui.py --listen 0.0.0.0 --server_port 12348 --inbrowser
复制代码
        4.打开地点http://[ip]:12348/ ,并填写配置信息:

同时Parameters菜单中另有一些高级设置,比如batch size、train steps、LoRA的秩、Alpha等:


        一些注意:        
        1.练习时的总epoch数是算出来的,上面的Epoch好像没有效,盘算公式是:
Max train steps * Train batch size / (数据总数 * 练习单张图片的次数),这算法很奇怪,他把Train batch size当做了batch size per device

        2.LoRA的秩用8就可以了,Alpha练习人物一般都设32,64都可以;练习风格可以用到128。
        3. 我看到有的文章说不能直接用safetensors文件直接练习,必须还要有config.json,但是我没有遇到这种情况。如果遇到了可以下载这个,放在项目根目次的openai/clip-vit-large-patch14 和 laion/CLIP-ViT-bigG-14-laion2B-39B-b160k
        4.如果要全参数练习只需选择Dreambooth菜单,别的使用方式和LoRA基本相同:

        5.如果报这个错的话:'FieldInfo' object has no attribute 'required'. Did you mean: 'is_required'?,是一些库的版本冲突了,可以试试如下下令:
  1. pip install gradio==3.48.0
  2. pip install pydantic==1.10.13 pydantic_core==2.14.6
  3. pip install transformers==4.38.0
  4. pip install accelerate==0.25.0
  5. pip install torch==2.1.1
  6. pip install xformers==0.0.23
复制代码
四、执行推理

        练习乐成后模型会存在输出目次,比如叫做models/last-000007.safetensors。
1.LoRA推理

(1)安装additional-networks
        如果sd-weiui的“text2img”和“img2text”中已经有Additional Networks菜单,则之间跳过该步骤。

        安装additional-networks插件,有两种方式:
        a.在“Extensions-URL for extension's git repository”输入https://github.com/kohya-ss/sd-webui-additional-networks就可以安装了。

        b.如果网络不答应的话,就自行下载压缩包解压放到SD的extensions目次下。
        安装完之后一定要重启sd进程!之后我们可以看到选项卡上多了一个Additional Network选项。
(2)将Chilloutmix基础模型放在models/Stable-diffusion目次
(3)将练习完的LoRA模型放在sd-webui的extensions/sd-webui-additional-networks/models/lora目次
(4)使用基础模型重绘一张图片看看,都是小姐姐:

(5)使用LORA,再天生看看:


        emmm,已经有很强的男性特征,证明LoRA生效了。
2.全参数推理

        如果使用全参数练习的模型,模型结果比力大,有几个g。使用更简朴了,放在models/Stable-diffusion中,直接选择这个模型就可以了。

        用LoRA练习自己的SD模型就介绍到这里,关注不迷路(#^.^#)
关注订阅号了解更多佳构文章


交流探究、商务合作请加微信




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连全瓷种植牙齿制作中心

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表