Janus和Janus-Pro:统一多模态理解和生成的创新模型
Janus和Janus-Pro:统一多模态理解和生成的创新模型
本文将介绍Janus和Janus-Pro这两个创新的多模态模型,它们通过解耦视觉编码器来统一处理多模态理解和生成任务。
Janus:解耦视觉编码器的统一模型
模型架构
Janus的结构如图所示,对于纯文本理解、多模态理解和视觉生成,采用独立的编码方法将原始输入转换为特征,然后由统一的自回归transformer进行处理。
- 文本理解:使用LLM内置的分词器将文本转换为离散ID,并获取每个ID对应的特征表示。
- 多模态理解:使用SigLIP编码器从图像中提取高维语义特征,这些特征从2D网格被展平为1D序列,使用MLP将这些图像特征映射到LLM的输入空间。
- 视觉生成任务:使用来自的VQ分词器将图像转换为离散2D序列,并被展平为1D后使用adapter将每个ID对应的码本embedding映射到LLM的输入空间。
训练过程
Janus的训练分为三个阶段:
第一阶段:adaptor和image head训练。这个阶段的主要目标是在embedding空间中建立视觉和语言元素之间的连接,使大语言模型能够理解图像中显示的实体,并具备初步的视觉生成能力。在此阶段,保持视觉编码器和大语言模型冻结,只更新两个adaptor以及image head中的可训练参数。
第二阶段:使用多模态语料库进行统一预训练,使Janus能够学习多模态理解和生成能力。解冻大语言模型,并利用所有类型的训练数据:纯文本数据、多模态理解数据和视觉生成数据。对于视觉生成,首先使用ImageNet-1k进行简单的视觉生成训练,帮助模型掌握基本的像素依赖关系。随后,通过通用的文本到图像数据来增强模型的开放域视觉生成能力。
第三阶段:使用指令微调数据对预训练模型进行微调,以增强其遵循指令和对话能力。微调除Gen encoder外的所有参数。专注于监督答案,同时屏蔽系统和用户提示。为确保Janus在多模态理解和生成方面都具备熟练度,不为特定任务微调单独的模型。相反,使用纯文本对话数据、多模态理解数据和视觉生成数据的混合,确保在各种场景下的通用性。
推理过程
在推理过程中,模型采用下一个词元预测的方法。对于纯文本理解和多模态理解,遵循标准做法,从预测的分布中顺序采样词元。对于图像生成,使用classifier-free guidance。具体来说,对于每个词元,其logits 𝑙𝑔 的计算公式为:𝑙𝑔 = 𝑙𝑢 + 𝑠(𝑙𝑐 − 𝑙𝑢),其中𝑙𝑐是有条件时的logits,𝑙𝑢是无条件时的logits,𝑠是无分类器引导的缩放因子。有条件就是:prompt是“给我一张小女孩的图片”,无条件是:prompt由多个无意义占位符组成。
实验结果
实验结果表明,相比于其他统一理解和生成的模型,Janus有一定的优势。在仅多模态理解的模型的比较上,被internvl2.5吊打,不过也很正常。视觉生成这块表现不错。
Janus-Pro:进一步优化的模型
Janus-Pro在Janus的基础上增加三点改进:
- 优化的训练策略:
- 延长第一阶段训练:增加第一阶段的训练步骤,以允许在ImageNet数据集上进行充分训练。
- 第二阶段聚焦训练:放弃ImageNet数据,直接利用普通的文本到图像数据来训练模型,使其基于详细描述生成图像。
- 调整第三阶段监督微调过程中不同类型数据集的比例,将多模态数据、纯文本数据和文本到图像数据的比例从7:3:10调整为5:1:4。
- 更多的训练数据:
- 多模态理解:参考DeepSeek-VL2,增加了约9000万个样本。这些包括图像描述数据集(如YFCC),以及用于表格、图表和文档理解的数据(如Docmatix)。
- 视觉生成:加入了约7200万个合成的数据样本,使统一预训练阶段的真实数据与合成数据比例达到1:1。
- 更大的模型:模型从1.3B扩展到7B。
总结
在统一多模态理解和图像生成两种任务的模型中,Janus系列模型有不错的表现,但在单独的多模态理解任务中,Janus系列模型并不能比得过最先进的多模态模型(比如internvl2.5)。总的来说Janus是一次很好的探索,但在性能和好用程度上不如其他先进的单一任务模型。