1.介绍
前几天看阿里设计团队的文章,发现钉钉吉祥物钉三多已经实现了AI角色创作,即通过AI提示词生成固定角色的图像,并且运用到发布会、视频、电子海报、商场大屏等场景。原来之前的设想已经可以实现了,这个真的是非常有效率的AI实践,绝对可以在节省大量创作时间的前提下提升视觉系统的质量,于是我也想试试动手来训练自己的LoRA。

2.训练流程
我们使用LoRA-script做训练,详细的教程可以看这里
-
准备样本,根据训练目标的不同,我们需要选择不同的策略。如果训练目前是出一个具象类的LoRA,可以用少量样本进行多重复次数的训练,以加强这个具象角色的特征;如果是泛化类的LoRA,比如手绘风格、版画风格等,则需要大量的素材进行高轮数的训练。 这其实跟人脑对绘画的学习途径挺类似的。
- 收集图片,需要图片的宽或高至少一边为64的倍数
- 打标签,使用SD批量打标签,并用BooruDatasetTagManager调整标签
-
选择底模
-
设置训练参数
train_data_dir 训练数据集路径
output_name 模型保存名称
output_dir 模型保存文件夹
max_train_epochs 最大训练轮数
-
训练模型
等待训练结果即可,期间观察log是否报错中断,有问题就解决问题
-
验证模型
测试模型这哪些参数产出的图片质量较高相对稳定;
测试良品的成功率,成功率需要保证在70%或以上才算合格的炼丹。
实际案例
准备样本
这次我们拿动画人气角色奶龙来做训练,训练这样一个角色的图片数量大概在50张左右。选择这个IP角色最主要的原因是它在网上的素材太多了,花瓣上一搜就有各种姿态动作和穿衣造型,且大部分去除了背景,简直是完美样本。

打标签
-
我们要做的就是把下载的样本素材批量处理为宽度或高度512像素的png图片格式,然后放入SD-WebUI批量自动打标签。
-
查看了一下自动标签描述的不够理想,使用BooruDatasetTagManager进行标签修正,增加了触发词nl(这个自己定义),然后是准确的内容描述
训练
点击开始训练就行了,等着进度条到100%,会在ouput目录(默认指定目录)生成对应的Lora模型,拷贝到SD目录下就可以使用。
测试训练结果
-
我们测试一下迭代步数steps和提示词相关度CFG的取值在哪个范围,能够得到较为理想的结果,可以通过SD-WebUI自带的X/Y/Z plot脚本实现:
XYZ Plot :轴的参数格式
-
测试Lora模型的良品成功率,这个还没测试过,试了一下各种提示词产出的图片质量还行,不够完美的细节问题就通过Midjourney的redraw功能修复。
总结
本文示例使用的底模型是SDXL,而阿里钉三多使用了更新的技术FLUX.1。在图像生成效果上,FLUX.1 的某些版本在生成特定内容时,质量和准确性相对 SDXL 更高。如在人物姿态、文本渲染、物体构图等方面,FLUX.1 能更准确地按照提示生成图像,因此在质量这块我们还有提升空间。
既然奶龙都可以炼丹了,智城小Z可不可以?答案是肯定的。只不过目前小Z相关的图片样本太少,需要人工创建攒够50张,所幸我在之前已经学会了通过Blender的骨骼结构给模型调整姿态,接下来就是花时间把这些样本渲染出来,就可以炼丹了。
另外我还在想目前的IP角色都是偏具象化的炼丹,能否试试泛化炼丹,把可视化大屏的界面风格,或者主体场景也炼出来呢?这个样本数可能就不一样了额,还需要进一步的尝试。
有不懂技术的大佬问了,上面的流程都太复杂了,首先本地部署SD就已经把我拦在门外,有没有更简单易用的方法? 有! 直接使用LibLibAI云服务,模型什么的部署好了,你要做的就是把训练样本传上去然后打标签,唯一的缺点就是得花钱😄。
相关链接
LoRa模型训练教程(炼丹,Stable Diffusion)