赛博炼丹师手记

文章目录

  • 0. 丹炉安置
  • 1. 炼丹手法
    • 1.1 前置准备
    • 1.2 数据标注
    • 1.3 开始炼丹
    • 1.4 结果验收
  • 2. 炼丹心法
    • 2.1 步数相关
    • 2.1 效率相关
    • 2.2 质量相关
  • 3. 相关文献

0. 丹炉安置

个人推荐b站up主朱尼酱出品的道玄丹炉,新手易懂,老手易用。

丹炉下载地址如下:

  • 夸克xyy 盘链接
  • 百度网盘链接

1. 炼丹手法

1.1 前置准备

  1. 首先我们需要准备好我们的底模和触发关键词,同时选择丹炉的风格(一些预制好的参数)。
    在这里插入图片描述
  2. 收集20~30张的素材,对其裁剪为固定尺寸大小,然后上传到丹炉之中

注:裁剪可以使用如下网站进行批量裁剪:birme
在这里插入图片描述

1.2 数据标注

勾选【脸部加强训练】,点击预处理,即可进行AI自动标注:

注:勾选了之后就会再多裁剪出来一组只有脸的照片,这样AI能学到更多的脸部细节

在这里插入图片描述

点击【TAG编辑】,这里面就是形容照片的一些标签,右边是所有照片的标签,单独点击某一张照片就可以看到这张照片的标签。

注1:如果你想保留人物的某个特征,那就要把对应的标签删掉,这样AI就会默认这个人就是有这个特征
注2:如果你想灵活调整某个特征,那就要把这个特征打上标签
在这里插入图片描述

1.3 开始炼丹

点击【开始训练】即可开始炼丹。其中Steps”就是训练步数,每训练50步右下角就会出现一张图片,那样就可以实时看到Lora的泛化能力。

注:Loss可以用来参考模型的好坏,一个好的模型Loss值在0.07~0.09之间具体好不好还是要在Stable Diffusion实际测试才知道

请添加图片描述

1.4 结果验收

等训练完了之后,点击【模型】,就可以看到生成出来模型按照默认参数训练会出来N个模型,但不是说最后一个模型就是最好的。有可能炼到第六第七个模型就已经够了,再往后的模型就已经训练过度了。所以这些模型还要实际在SD测试一下,才知道哪个是最好的
在这里插入图片描述
选了Lora之后,我们就会在关键词的文本框里看到这串Lora的编号
在这里插入图片描述
然后把“000006”那段数值改成“NUM”,把最后的数字“1”改成“STRENGTH”,也就是权重的意思。
在这里插入图片描述
然后滑到最下面找到【脚本】,在脚本里面选择 【X/Y/Z图表】,X轴、Y轴类型都选择 【提示词搜索/替换】:

  • X轴的值输入:NUM,000001,000002,000003,000004,000005,000006,000007,000008,000009,000010

注:这里的序号对应的就是我们10个Lora的编号

  • Y轴值输入:STRENGTH,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1

注:这里的序号代表的是Lora的权重

在这里插入图片描述
最后点击【生成】,可以得到如下的图表,大家根据自己的需要选择合适的模型。
在这里插入图片描述

2. 炼丹心法

注:此章节主要会介绍有关lora 模型训练的超参数

炼制模型的本质是在如下的图像中,找到全局最低点(函数最优解):
在这里插入图片描述

2.1 步数相关

丹炉的步数设置主要给我们暴露的时候如下的两个参数:

  • Repeat:学习步数,其指的是对于一张图片模型要学习多少次。

注:理论上学习次数越多,模型越能习得图片特征。但是这个数值并不是越大越好,当到达某个临界点之后,模型对图片认知就会得到固化,失去了创造能力。这就是模型训练之中的过拟合现象。

经验参数Repeat
人物80~120
风景20~30
二次元20~50
  • Epoch:模型训练循环次数。在每个epoch之中,都需要对一张图片进行Repeat次学习。

注:假如当前的 r e p e a t = 150 , e p o c h = 15 , i m a g e s i z e = 10 repeat = 150, epoch = 15, image_{size} = 10 repeat=150,epoch=15,imagesize=10,则本次模型的总训练步数为 r e p e a t ∗ b a t c h ∗ i m a g e s i z e = 22500 repeat*batch*image_{size}=22500 repeatbatchimagesize=22500
在这里插入图片描述

2.1 效率相关

  • BatchSize:模型一次参数更新中使用的样本数量。

注1:训练数据会被划分为多个小批次进行处理,每次处理的样本(图片)数量就是BatchSize。
注2:此参数会直接影响模型的内存占用和训练速度。假设每一步训练的时间是1s,总步数为22500,BatchSize为5,那么总得训练时间为: ( 22500 / 5 ) ∗ 1 = 4500 s (22500/5)*1 = 4500s (22500/5)1=4500s
注3:此时的模型训练Loss Function为BatchSize个样本结果的平均值,这以为着当BatchSize过大的时候,模型在每次更新时的梯度更新将更为平均,失去一定的拟合泛化能力。当前样本数量仅为20时,建议这个值不要超过4

  • Optimizer:优化器,其用于更新和调整模型参数以最小化训练误差的算法。优化器能够使用损失函数的梯度来指导模型参数的更新,从而帮助模型更好地学习和适应数据。
优化器推荐备注
AdamW8bit1e-4-
DAdaptation1常用作测试最优学习率
Lion-DA最优结果的1/3
  • Save Every N Epochs:每N轮保存一个模型。

注:假设其值为1, E p o c h = 15 Epoch = 15 Epoch=15 ,则每个Epoch结束之后都会保存一个模型,总共会保存15个模型

  • Lr Scheduler:学习率调度器,用于动态调整学习率,避免模型训练中得到局部最优解。
调度器解释
constant恒定学习率,此时学习率为静态学习率在这里插入图片描述
constant with warmup带预热恒定学习率,前期会有一个预热抬升,帮助AI在不熟悉训练集的时候慢慢接触,防止掉入局部最优的陷阱在这里插入图片描述
cosine余弦退火,一开始给出较高学习率,后期使得学习率更加平稳的降低,帮助跳出局部最优在这里插入图片描述
cosine with restarts余弦退火重启,每隔几步会重启在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.2 质量相关

  • Unet Lr:特征提取学习率,其表示学习样本的速度。

注1:学习率高(对应下图中下面那一行,会导致模型得不到最优解)可以更快的完成对样本的学习,但是会导致囫囵吞枣,失去图片的一些细节。学习率过低会导致每一步都学习的特别慢,学习不完整个样本,导致欠拟合。
注2:一般设置为1e-4 到1e-3之间
在这里插入图片描述

  • Text Lr:文本学习率,其主要用于将我们对图片打标的tag转换为AI能够理解的模型或者算法。

注:其通常为Unet Lr的1/10,不超过1e-4

  • Network Dim:神经网络维度,其值越高,网络越密集,可以表现的特征越多,也越容易过拟合。
Network Dim模型大小场景
128144MB实物,风景,人物
6472MB人物
3240MB二次元
  • Network Alpha:生成器和判别器的特征图的数量和分辨率。

注:值越高会学习到更多的特征,但是也会导致过拟合。

在这里插入图片描述

3. 相关文献

[1] 保姆级Lora炼丹教程,一站式整合包,让你实现真人模特定制
[2] [全网最细lora模型训练教程]这时长?你没看错。还教不会的话,我只能说,师弟/妹,仙缘已了,你下山去吧!
[3] 深度学习中的优化器原理(SGD,SGD+Momentum,Adagrad,RMSProp,Adam)
[4]【现代炼丹基础】手动档优化器迭代传奇 持续为您播出
[5] 【AI绘画教程】天书LORA训练进阶——(高级设置讲解|梯度累加|带示例对比)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/596151.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NetSuite 自定义记录类型的权限控制

在近期的一个定制项目中,遭受了一次用户洗礼。有个好奇宝宝把我们的一个自定义类型的表记录进行了删除,导致一个重要功能失败。算是给我们扎实上了一课。自定义类型的权限也需要重视起来。所以,今朝我们记录下这个设置,同时写给未…

Linux 环境下 Redis基础配置及开机自启

Linux 环境下 Redis基础配置及开机自启 linux环境安装redis<redis-6.0.5.tar.gz> 1-redis基本安装配置 解压 获取到tar包后&#xff0c;解压到相关目录&#xff0c;一般是将redis目录放在usr/local/redis目录下&#xff0c;可以使用-C指定到解压下目录 tar -zvxf re…

Matlab|【防骗贴】【免费】基于主从博弈的主动配电网阻塞管理

目录 1 主要内容 程序亮点 2 部分代码 3 程序结果 4 下载链接 1 主要内容 《基于主从博弈的主动配电网阻塞管理》文献介绍&#xff1a;主要采用一种配电网节点边际电价统一出清的主从博弈双层调度框架。上层框架解决用户在负荷聚合商引导下的用电成本最小化问题&#xff0…

docker 部署 dujiaoka 独角数卡自动售货系统 支持 X86 和 ARM 架构

前言 很早就想部署一套自己的发卡自动售货系统&#xff0c;研究了很久发现独角数卡相对更加成熟好用&#xff0c;可是折腾技术三年多最怕的就是php和Laravel之类的语言和框架&#xff0c;各种权限&#xff0c;守护之类配置麻烦&#xff0c;加上如果跑在docker里更加头疼&#…

AttributeError: ‘Text‘ object has no property ‘FontSize‘

在学习《机器学习理论与实践》——1 机器学习编程语言基础中&#xff0c;使用Matplotlib画图&#xff08;在坐标轴或绘图区显示中文&#xff09;时&#xff0c;产生AttributeError: Text object has no property FontSize 错误解决。 AttributeError: Text object has no prop…

公开课学习——仿抖音直播平台

文章目录 直播抖音的直播原理Java继承直播客户端工具&#xff1a; ffmpeg客户端和网页集成CDN网络——性能提升关键——边缘计算 实时聊天——IM系统怎么实现&#xff1f;——websocketIM系统消息如何转发&#xff1f;直播场景IM系统是什么样子&#xff1f; 直播 抖音的直播原…

动规训练4

目录 一、买股票的最佳实际含冷冻期 1、题目解析 2、算法原理 a状态表示方程 b状态转移方程 c初始化 d填表顺序 e返回值 3、代码 4、感想 二、买股票的最佳时机函手续费 1、题目解析 2、算法原理 a状态表示方程 b状态转移方程 c初始化 d填表顺序 e返回值 3、…

LRU的原理与实现(java)

介绍 LRU的英文全称为Least Recently Used&#xff0c;即最近最少使用。它是一种内存数据淘汰算法&#xff0c;当添加想要添加数据而内存不足时&#xff0c;它会优先将最近一段时间内使用最少的数据淘汰掉&#xff0c;再将数据添加进来。 原理 LRU的原理在介绍中就已经基本说…

继电器线圈两端为什么要反向并联二极管

原理描述&#xff1a; 电感的特点&#xff1a;穿过电感的电流不会突然变化&#xff0c;也就是说变化的电流在电感上面会产生感应电动势。 感应电动势的作用&#xff1a;阻碍电流的变化。 三极管断开之前&#xff0c;电流是穿过线圈&#xff0c;原来的电流是从上往下流动&#…

【C++】探索C++中的类与对象(下)---深入理解C++中的关键概念与应用

​​ &#x1f331;博客主页&#xff1a;青竹雾色间. &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 ✨人生如寄&#xff0c;多忧何为 ✨ 在C编程中&#xff0c;有许多重要的概念和特性&#xff0c;包括构造函数、explicit关键字、静态成员、友元以及内部类…

【黑马头条】-day05延迟队列文章发布审核-Redis-zSet实现延迟队列-Feign远程调用

文章目录 昨日回顾今日内容1 延迟任务1.1 概述1.2 技术对比1.2.1 DelayQueue1.2.2 RabbitMQ1.2.3 Redis实现1.2.4 总结 2 redis实现延迟任务2.0 实现思路2.1 思考2.2 初步配置实现2.2.1 导入heima-leadnews-schedule模块2.2.2 在Nacos注册配置管理leadnews-schedule2.2.3 导入表…

【Leetcode】1. 两数之和

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 给定一个整数数组 n u m s nums nums 和一个整数目标值 t a r g e t target target&#xff0c;请你在该数组中找出 和为目标值 t a r g e t target target 的那 两个 整数&…