上周入手了魔改版的 2080Ti 22G 显卡后,我不满足于生成些比较随机的图片和视频,想着能不能利用开源工具和模型做到人物一致性,即稳定地生成自己指定的人脸,这样以后不管是画故事的分镜,还是制作 AI 短剧,都可以派上用处。
我首先试了 PuLID,喂了参考图进去,发现好像效果不好,后来又浅浅地尝试了 IDAdapter + Controlnet 的工作流,老实说从 Stable Diffusion 1.5 时代起,我看到这些就没啥耐心,所以稍微看了几个工作流,我想就索性训练 LoRA 算了。
那 LoRA 是什么呢?
简单来说,假设底模是个什么都会画的大佬,但是要他画你没见过的东西,他可能画不出来,因为训练数据里没有这玩意。
如果把模型全量微调的话,等于是让大佬回炉重训一遍,费时费显卡,性价比太低。
而 LoRA 则相当于是一副为大佬特制的隐形眼镜。大佬还是那个大佬,自己的知识、画工、理解能力全保留,但这副眼镜让他能看见并画出你这个新东西。眼镜片很小很轻,几十张图就能定制,不想用了就摘掉,大佬就能变回原样。
LoRA 在保证人物一致性上的效果是要好于前面提到的方法,不过缺点是需要不少准备工作。除了一张目标人物的图片之外,还需要几十张该人物不同动作、角度和表情的图片用于训练,以及可用于训练的显卡。好在这些我都已经有了。
我随便找了一张之前用 majicflus(一个基于 Flux.1-dev 微调的模型)生成的图片(见下),但是因为这个人物是我生成的,即使固定了原始 prompt 的 seed,也很难再现一模一样的脸,那我要怎么再生成几十张同一张脸但不同角度的图片呢?
Image
我试了 Flux Kontext 和 Qwen Image Edit,结果效果都不好,要不是模型不听指挥,要不就是脸直接崩了。
经过不断的尝试,我发现用 ChatGPT 官网上的 GPT Image 2 效果最好。轻轻松松就做了好几张人物信息表。
Image
Image
Image
Image
其实我之前试过用 Gemini 做人物信息表,但是做出来效果非常一般,没想到 ChatGPT 做出来效果这么好,远超我预期。
接着我把这些素材图片逐张下载下来,打包发到本地服务器上,然后用本地运行的 Qwen2.5-VL 批量打标。所谓的打标(caption),就是让模型读图,然后将所看到的图片信息记录下来(比如“一个女人,鹅蛋脸,黑色短发,绿色长裙,微笑”之类的),用于之后的训练。
训练我直接交给了 AI,Codex 里的GPT-5.5 或者网页版的 GPT-5.6 给出方案,然后由 DeepSeek V4 Flash 来执行(这么长时间过去了,DSVF 依然是我最常用的模型),如果任务复杂或者重大,则索性由 GPT 全程接管。
训练具体用的框架以及参数这里就不赘述了,反正都是 AI 帮忙的,我也不不懂装懂,本穷鬼博主趁着晚上十点之后电费半价,这几天一共训练了三个版本,效果怎么样,像不像原图中的人物,大家评判下呗。
Image
Image
Image
我个人感觉效果对于第一次训练来说可以接受,毕竟乍一眼看上去还是像的。当然问题也是很明显的:用于训练的图片素材里的人物,大部分都是短发和偏正面的角度,所以导致训练出的 LoRA 生成的图片,大多也都有这样的特征,但凡提示词里要求生成其他角度或者发型,由于训练的素材不够,结果就容易崩。
休息两天之后,我计划对训练集的图片做进一步的筛选,去掉类型重复的图片,再让 ChatGPT 生成不同角度、发型、服装、动作的图片,来使得训练集的图片更多样化,并且要再细化打标的文字。
总的来说,训练个 LoRA 确实有点折腾的,而且这样的人物一致性在实战中是不是真的有用,我心里也不是非常有底。不过学了总没有坏处吧,退一万步讲,为身边写真爱好者的朋友训练个 LoRA,那既可以帮她省下一大笔开销,又能剥夺她拍写真的乐趣,岂不美滋滋。