山东大学创新项目实训(6)LoRA训练之角色一致性

本周工作:我们项目的漫画生成功能需要Stable Diffusion模型连续生成多个图像来组成完整的故事情节,其中比较棘手的一个问题就是角色一致性。本周我的工作是对主流的角色一致性训练方法进行了广泛尝试,并总结出了自己的经验和方法。

一、提要:何为LoRA训练?为何选择它?

啥是LoRA?

LoRA即Low Rank Adaptation(低秩适配),其中的秩和线性代数中的矩阵的秩的概念是一致的。LoRA模型的假设:预训练模型拥有极小的内在维度(instrisic dimension),即存在一个极低维度的参数,微调它和在全参数空间中微调能起到相同的效果,同时越大的模型有越小的内在维度。基于此,Edward Hu等人提出了著名的LoRA训练方法:

对于预训练权重矩阵\mathbf{W}_0∈R^{d×d},LoRa限制了其更新方式,即将全参微调的增量参数矩阵Δ\mathbf{W}表示为两个参数量更小的矩阵\mathbf{B} 和和\mathbf{A}的低秩近似:

\mathbf{W}_0+Δ\mathbf{W}=\mathbf{W}_0+\mathbf{BA}

其中,\mathbf{B} ∈R^{d×r}\mathbf{A} ∈R^{r×d}为LoRA低秩适应的权重矩阵,此时,微调的参数量从原来的d∗d,变成了2∗r∗d。所以LoRA训练方法的参数量远小于原始方法,效率非常高。

在训练时,原始参数\mathbf{W}_0被冻结,意味着\mathbf{W}_0虽然会参与前向传播和反向传播,但是不会计算其对应梯度\frac{∂L}{∂\mathbf{W}_0},更不会更新其参数。

在推理时,直接按上式将\mathbf{BA}合并到\mathbf{W}_0中,相比原始方法不存在推理延时。

人话版:寻找两个较窄的矩阵相乘来拟合权重矩阵W,使微调效果尽可能相同。

 参考文章:2106.09685论文精读:LoRa: Low-Rank Adaptation of Large Language Models - 知乎

为啥选LoRA?

一是效率优势。我们团队使用的都是消费级显卡,最好的也不过30系列,如果使用全参数微调,对显存的要求太高,完全承担不起。使用LoRA方法训练模型,显存占用大幅降低r=8时需要显存约6G),可在30系列GPU上训练。

二是表现优势。LoRA方法虽然是对原始方法的拟合,但在某些场景,如角色一致性上反而表现的更好、更灵活。LoRA训练时可以通过低秩更新专注于角色相关的语义空间(体态、服饰、性格等),能更精准地约束生成内容,减少角色特征漂移。并且不同角色的LoRA适配器可独立训练并动态加载,方便随时切换,无需重新加载整个模型。

人话:省时还效果好,为啥不用。

二、训练集预处理

1. 收集角色图片

收集想要训练的人物的图片集,最好是白底,不要有多个人和主体不完整的图片。

角色<Jotaro Kujo>:

角色<Anon Chihaya>:

2. 裁剪统一尺寸

虽然可以通过设置不同的分辨率筒来兼容多种不同分辨率的图片,但是经过测试发现,这样会显著拖慢训练时间,筒太多还可能导致训练效果变差。所以我只设置了512*512,512*768和768*512三种分辨率筒,所有训练图片都要裁剪为符合其中的一个分辨率筒的分辨率。

裁剪工具:BIRME - Bulk Image Resizing Made Easy 2.0 (Online & Free)

此外,所有图片都应该为jpg或png格式,图片名称为0001依次往后的四位数字。

3. 为图片打标签

每个图片都需要一个对应的标签,标签内容为:触发词+画面特征描述

这里我设置模型的触发词就为角色的名字本身,画面特征描述使用反演模型工作流实现,详情见我的文章:山东大学创新项目实训(2)本地部署StableDiffusion模型与基础工作流搭建_stablediffusion本地模型-CSDN博客

打完标后效果如下:

三、训练

模型搭建:详情见我的另一篇文章:山东大学创新项目实训(4)AIGC架构设计、LoRA训练模型搭建与可视化故事板层构想-CSDN博客

训练:设置好训练集路径、桶分辨率、触发词、迭代次数等参数后点击运行,等待即可。

效果:

角色<Jotaro Kujo>:

角色<Anon Chihaya>:

同框:

角色同框下依旧保持了良好的角色一致性,但偶尔会导致图像质量下降,还会出现角色特征混淆,但概率不高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dt23333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值