🎨 AI绘画基本概念
AI绘画的逻辑类似于找一位画家,告诉他你想要的画像,然后他根据你的描述在脑海中找到相应的特征,最终绘制出符合你要求的画作。AI绘画的核心是基于算法训练的模型,用户通过输入文本信息,AI会在模型中寻找最匹配的图像特征,并渲染出最接近用户要求的图片。
🔧 AI绘画工具
目前市面上最主要的两家厂商是Stable Diffusion(SD)和Midjounrey(MJ)。SD是开源的,免费且功能丰富,可以在本地操作和定制插件,也可以在云端进行部署。而MJ则是基于Discord平台,操作简洁但价格昂贵,且数据无法本地化。选择工具时需要考虑使用需求和个人能力。
🖌️ AI模型训练
AI模型训练过程中,将大量的图片样本录入模型,并根据算法不断加工样本进行学习。同时,对图片进行标记和描述,将文本信息转化为数字与图像特征对应,并存储在模型中。生成图片时,输入文本提示词,AI会在模型中寻找最匹配的描述,并生成最接近要求的图片。
⚙️ 大模型与小模型
目前的AI模型主要分为大模型和小模型。大模型通常是DreamBoost,小模型则是lora。它们的训练逻辑相同,都是将图片信息和文本信息进行降维处理,最终存储为一组数字。在生成图片时,通过逆向操作,输入文本提示词,AI会根据模型中的数字找到最匹配的描述,并生成符合要求的图片。
什么是大模型
就是把图片信息(image)、对应的文本描述信息(tag),基于特定的算法,转化为数字存储在专门的文件里,这个专门的文件就是模型。
LORA模型训练,其实就是用一个或者一些,特定特征来替换底模中的对应元素,比如用一张特
定的人脸、特定的衣服或者特定的风格,这样就可以根据需要生成不同于底模的图片。
为什么选择Lora用于模型训练
LORA采用的方式是向原有的模型中插入新的数据处理层,这样就避免了去修改原有的模型参数,
从而避免将整个模型进行拷贝的情况,同时其也优化了插入层的参数量,最终实现了一种很轻量化
的模型调校方法。直接以矩阵相乘的形式存储,最终文件大小就会小很多了。一般lora都在144M,
而一般的DB大模型至少都是近2G起,节省了大量的存储空间;LORA训练时需要的显存也少了,显卡的显存达到6G即可开启训练,硬件门槛更加亲民:LORA可以非常方便的在wbui界面通过调用和不同权重,实现多种模型效果的叠加,相比DB大模型操作更加便捷,效果更加显著:
🔍 AI绘画的不确定性
由于算法的原因,AI绘画过程中会存在一定的信号丢失,即使使用原始的标记或描述也无法得到完全相同的图片。这导致AI绘画存在一定的不可控性和随机性,无法完全可控。因此,练丹的结果往往是玄学,需要根据个人经验和实践来调整和优化。
📚 AI模型选择
根据个人需求和能力,可以选择不同的AI绘画工具和模型。SD是免费且开源的,功能丰富但门槛较高;MJ操作简洁但价格昂贵且封闭。大家可以根据自己的情况选择适合的工具和模型进行练习和创作。
02|Lora模型训练核心参数
- 下图框选出的参数
- 核心参数分为两大类,一个是步数想关参数,一个速率质量相关参数
- 步数想关参数
- Image是指训练集中的图片数据。
- Repeat是指AI对每张图片学习的次数。
- Epoch是指训练集中的图片数量,表示一次完整的训练循环。
- Batch Size是指每次训练中同时学习的图片数量。
- 训练集的准备对于模型的结果和生成图片的质量具有重要影响。好的训练集应该包含充分的素材,覆盖不同角度和近景、中景、远景等不同特征,素材的分辨率和清晰度也会影响模型的效果,建议使用高分辨率的素材进行训练。对于练人或物品等细节较多的素材,建议使用更高分辨率的原图进行裁剪或训练。
- 在训练AI模型时,使用文本文档来描述图片的特征非常重要。如果没有准确的描述,AI将无法正确学习。
– 示例:给出了一张图片和自动生成的Tag文本,分析了其中的问题,并进行了手动调整和补充。使用圆Tag生成图片时,与原图越接近说明Tag越准确。
- 训练集的要点
原图的分辨率越高越好,素材尽可能丰富,覆盖不同光影不同角度,Tag除了Al自动达标外还要手工调整、补充更好的原图,对学习参数的设置要求就会更高,且不是图片越多越好,要寻求最优解。 -
Repeat参数:Repeat是AI对于一张图片的完全扫描。对于复杂的图片,需要更多的Repeat次数,但也不能过高,以免固化模型的认知能力。没有最高值或最低值,只有最优质这点跟epoch很像,在训练过程中,需要找到适合的Repeat次数,以保证模型的学习效果和训练效率。
-
- Batch Size代表AI在同一时间学习的图片数量
- 取决于显卡显存大小,6G显存以下的建议使用1
- 高级显存可以使用更大的Batch Size,加快训练速度
- 增大Batch Size会导致收敛变慢,学习更快但学习到真正像素级别的过程变慢,囫囵吞枣。
- 减小Batch Size会导致训练速度变慢,但收敛更快,学习更像素级别
- 增加Batch Size时,需要相应增加学习率(1e-4增加)
- Total Optimization Steps:
- 总学习步数的计算公式:Image数量 x Repeat x Apple / Batch Size
- 例如:10张图片,20步,一个循环是200步,共学习10个循环,总步数为2000步,Batch Size为2,则实际总训练步数为1000步
- 速率和质量相关的核心参数:
- learning_Rate是用于学习文本编码器的学习率参数
- Network dimension是网络维度参数,决定了生成图片的精细度
- Optimizer优化器是决定学习率调整逻辑的参数
- 常用的优化器有Adam8bit、DA和LINE
- DA用于测试一组素材的最优学习率
- 最优学习率可用于Adam8bit或LINE进行训练
- 使用LINE时,建议最优学习率除以3后进行训练
- 参数之间的影响和模型结果的影响可以通过实证数据进行理解
- repeat参数:
- repeat参数指定了模型训练的重复次数。
- 当repeat较小(例如30)时,模型不够拟合,训练力度不够。
- 当repeat较大(例如70)时,模型过拟合,导致训练结果不好。
- repeat不是越多越好,而是需要合适的数值。
- epoches参数:
- epoches参数指定了每张图片学习的次数。
- 当epoches较小(例如20)时,需要多轮次的训练才能达到总的学习次数。
- 当epoches较大(例如100)时,单轮次的训练就能达到总的学习次数。
- 多轮次epoches的优势之一是训练时间更短。
- 多轮次epoches的另一个优势是模型的拟合性更好。
- 结论:
- 学习率对模型训练的影响
- 降低学习率会增加总训练时间
- 降低学习率会推迟得到好模型的时间周期
- AI中存在不确定性和逻辑,无法确定增加或减少的方式
- 学习率对模型结果的影响
- 给出了unet学习率调整对模型结果的实证数据
- 新手参数建议
- 案例分享:介绍几个成熟案例及其对应的参数。
UP:朱尼酱