总结
Janus通过解耦视觉编码来解决理解和生成任务对视觉编码器不同需求之间的冲突,从而提升模型在这两个领域的表现;采用一个自回归框架,没有用到diffusion来做图像生成,是完全的自回归文本预测和图像生成任务;
- 优势:论文给出的例子在文本理解和文本控制生成上确实是有提升;离不开鲁棒扎实的数据工程的处理,训练范式的探索工作;在GenEval基准测试中,超过了DALL-E 2和SDXL等文本到图像的生成模型;
- 劣势:离散特征下的自回归图像生成任务是大家做多模态渐渐抛弃的思路,比如show-o抛弃了自回归做图像生成,transfusion抛弃了离散的图像特征,论文中也指出,下一步是利用diffusion技术来进一步提升表现;三阶段的训练过程 + 繁琐的数据工程给复现带来了难度。
目标
Janus的主要目标是统一多模态理解和生成任务,并提高这两者的性能。它通过解耦视觉编码来解决理解和生成任务对视觉编码器不同需求之间的冲突,从而提升模型在这两个领域的表现
不同的视觉编码器的必要性
-
信息粒度的差异:多模态理解任务通常需要从视觉输入中提取高层语义信息,如对象类别或视觉属性。这要求视觉编码器能够将低级像素信息转换为具有更高层语义的信息。相比之下,视觉生成任务则侧重于生成细节和保持整体一致性,需要保留更多的低层次的细节信息,如纹理和颜色。将这两种任务的视觉编码压缩到同一个表征空间中,会带来冲突和妥协,导致性能瓶颈
-
任务特定的需求:多模态理解任务要求视觉编码器能够提取图像或视频中的高层语义,而视觉生成任务则需要编码器传递细粒度的视觉信息。这种不同的需求意味着,为理解任务设计的编码器可能不适合直接用于生成任务,反之亦然
-
性能优化:通过为理解和生成任务使用专门的编码器,可以针对每个任务优化性能。例如,Janus模型使用SigLIP-Large-Patch16-384进行多模态理解,而使用LlamaGen中的VQ tokenizer进行视觉生成。这种解耦方法不仅缓解了视觉编码器在理解和生成中的角色冲突,还增强了框架的灵活性
-
模型的可扩展性:解耦的视觉编码器设计使得Janus模型易于扩展,可以轻松地将最新的编码技术应用于理解和生成领域。这种设计还允许未来可能的扩展,如接入更多的模态,如视频、3D点云、EEG信号等,使Janus成为下一代多模态通用模型的有力候选
方法
Janus采用了一个自回归框架,将视觉编码分为两个独立的路径:一个用于多模态理解,另一个用于多模态生成。这两个路径由同一个变换器(transformer)架构统一处理。
训练
训练数据
Janus的训练分为三个阶段,使用的数据集包括:
第一阶段:使用ShareGPT4V数据集进行多模态理解训练,以及ImageNet-1k数据集进行视觉生成训练。
第二阶段:使用包括文本数据、图像-文本数据、图像描述数据和视觉生成数据的多模态语料库进行统一预训练。
第三阶段:使用指令调整数据进行监督微调,以增强模型的指令跟随和对话能力。
训练过程
第一阶段:训练适配器和图像头
- 目标:在这一阶段,主要目标是在视觉和语言元素之间建立概念联系,使大型语言模型(LLM)能够理解图像中显示的实体,并具备初步的视觉生成能力。
- 训练策略:在这一阶段,视觉编码器和LLM被保持冻结状态,只有理解适配器、生成适配器和图像头部中的可训练参数会被更新。
第二阶段:统一预训练
- 目标:在这一阶段,通过多模态语料库进行统一预训练,使Janus能够学习多模态理解和生成。
- 数据:使用所有类型的训练数据,包括纯文本数据、多模态理解数据和视觉生成数据。
- 训练策略:受到Pixart的启发,首先使用ImageNet-1k进行简单的视觉生成训练,帮助模型掌握基本的像素依赖关系。然后,使用通用的文本到图像数据增强模型的开放领域视觉生成能力。
第三阶段:监督微调(Supervised Fine-tuning)
- 目标:在这一阶段,使用指令调整数据对预训练模型进行微调,以增强其遵循指令和对话的能力。
- 数据:为了确保Janus在多模态理解和生成方面的熟练程度,微调时不会对特定任务进行单独模型微调。相反,使用混合的纯文本对话数据、多模态理解数据和视觉生成数据,以确保在多种场景下的多功能性。
- 训练策略:除了生成编码器之外,所有参数都会进行微调。
下游任务表现
Janus在多个多模态理解和生成基准测试中表现出色:
- 多模态理解:在POPE、MMBench、SEED-Bench等基准测试中,Janus(1.3B参数)取得了优于LLaVA-v1.5(7B参数)和Qwen-VL-Chat(7B参数)的成绩。
- 视觉生成:在MSCOCO-30K和GenEval基准测试中,Janus取得了8.53的FID分数和61%的准确率,超过了DALL-E 2和SDXL等文本到图像的生成模型。