在完成 ELLA: Equip Diffusion Models with LLM for Enhanced Semantic Alignment 这个工作后,我的目标变成了轻量廉价地将 Stable Diffusion 系列模型改造成图文交叉序列作为控制条件的图片生成模型。我尝试了多种 MLLM 领域的图文信息融合的思路,最终有了第一版 work 的方案,我将其命名为 EMMA(Efficient Multi Modal Adapter)。
本文只是简单地汇总一下我之前发过的 EMMA 的结果,不是一个严肃的报告。
效果展示#
这里展示的结果都是 EMMA-SD 1.5,即基于 SD1.5 训练的模型。EMMA-SDXL 我还没训练呢,正在借机器。
给定一个角色图片,生成以他为主角的小故事:
(图片截取自我搭建的 ComfyUI ,4 张图分别对应 4 个随机的种子,没有挑图哦)
EMMA 对主体角色的图片质量要求不高,比如一个涂鸦中的主体也可以。
EMMA 的文本描述可以是渐进式的,即在一个基础描述上,逐渐增加更加详细的描述时,EMMA 依然可以 following prompt,对其它非相关元素的影响也不大。
EMMA 并不是简单地将角色图片贴在生成图中的某个区域上,图文信息进行了深层次的融合。比如,当文本和图片信息冲突时,EMMA 会更倾向于 follow 文本的描述,从图片中抽取剩下的所需信息。可以实现如下图展示的这样,一定水平的编辑能力:
将角色图片的蓝裙子换成红裙子:
EMMA 的能力,比如角色一致性、可编辑性,社区的不同风格模型,甚至 AnimateDiff 这样的视频生成模型上,都可以直接继承。
从上到下依次是 AnimateDiff、真人风格、动漫风格模型的效果;从左到右则都是编辑下裙子颜色的效果。
EMMA 使用了什么样的数据?#
上面展示的 EMMA-person 实际上需要两个阶段的训练。第一个阶段使用了 30M 以上的图文数据集,其实就是训练 ELLA 的数据集。这个阶段我直接使用了随机裁剪出来的图片区域的 embedding 作为视觉条件。即使随机裁剪的区域来自于原图,但其没有明显的 bias,EMMA 模型不会学着简单地将这个区域的信息解码为 RGB 然后贴回原图,而是深层次地融合了图文信息。
我在 Twitter 上展示的这个结果就来源于该模型。
带珍珠项链的少女没有被简单地 copy-paste 到生成图上,而是响应 prompt,与文本信息进行了深度的融合。
接着,我收集了一些同角色的不同动作,不同 context 的数据,短暂地微调了上面的第一阶段的模型。就得到了上面展示的 EMMA-person。这个阶段的数据量其实不多,因为第一阶段模型已经训练了很久。
从哪里获取 EMMA?#
我正在和同事们一起将我做的工作整理成一篇技术报告,希望能尽快正式地介绍 EMMA 的思路。至于模型权重是否能开源,这不由我决定。由于上次 ELLA 我提前承诺了自己不能控制的事情,导致最后被开源社区喷的很惨。这次 EMMA 的开源与否,我不做任何承诺。但因为 EMMA 能和之前的 SD 生态很好地兼容,我觉得 EMMA 开源后,如果开源社区的人有兴趣,可以开发出远超我想象的应用。
我在 QQ 的业务团队任职,也许之后大家能直接从 QQ 上体验到 EMMA。我也很好奇基于 EMMA 最终能制作出怎样的好玩的产品。
如果你对 EMMA 很有兴趣,欢迎通过 About - wrong.wang 列着的联系方式,或者 Twitter(@wangbudui) 联系我。