Janus+Janus-Pro 论文解析
Janus+Janus-Pro 论文解析
本文是对Janus和Janus-Pro论文的技术解析。文章详细介绍了Janus模型的架构、训练过程、实验结果以及Janus-Pro的改进。
Janus
Abstract
Janus是一个统一多模态理解和生成的自回归框架。与之前的研究不同,Janus将视觉编码解耦成独立的模型,同时仍然使用统一的transformer架构进行处理。这种解耦不仅缓解了视觉编码器在理解和生成任务中角色的冲突,还提高了框架的灵活性。实验表明,Janus超越了之前的统一解决两种任务的模型,并且达到或超过了某些单一任务模型的性能。
Introduction
在多模态理解领域,大多研究者使用llava的模式;而在视觉生成领域,扩散模型取得了显著的成功,同时也有一些工作开始探索自回归方法进行视觉生成,其性能可与扩散模型相媲美。目前为了实现模型的通用性,一些研究着手于使用一个模型同时解决两种问题,这类方法通常使用单一视觉编码器来处理两种任务的输入。然而,多模态理解和生成任务所需的特征形式存在显著差异。在多模态理解任务中,视觉编码器的目的是提取高层语义信息(例如,图像中的对象类别或视觉属性)。相比之下,在视觉生成任务中,主要关注点是生成局部细节并保持图像的全局一致性。在这种情况下,特征需要一种能够表达精细空间结构和纹理细节的低维编码。在同一空间中统一这两个任务的特征将导致冲突和权衡。因此,现有的多模态理解和生成统一模型往往在多模态理解性能方面做出妥协,明显低于最先进的多模态理解模型。
为解决这个问题,Janus将多模态理解和视觉生成两个任务的视觉编码解耦。具体来说,引入了两条独立的视觉编码路径:一条用于多模态理解,另一条用于视觉生成,它们由相同的transformer架构统一。该方法提供两个主要优势:(1) Janus缓解了多模态理解和生成在不同粒度需求上的冲突,消除了在选择视觉编码器时在两个任务间进行权衡的需求。(2) Janus具有灵活性和可扩展性。解耦后,理解和生成任务都可以采用各自领域最先进的编码技术。此外,Janus未来可以容纳更多输入类型,如点云、脑电图信号或音频数据,通过独立编码器提取特征,然后使用统一的transformer进行处理。
Janus
Janus的架构
Janus的结构如图所示,对于纯文本理解、多模态理解和视觉生成,采用独立的编码方法将原始输入转换为特征,然后由统一的自回归transformer进行处理。对于文本理解:使用LLM内置的分词器将文本转换为离散ID获取每个ID对应的特征表示;对于多模态理解使用SigLIP编码器从图像中提取高维语义特征,这些特征从2D网格被展平为1D序列,使用MLP将这些图像特征映射到LLM的输入空间;对于视觉生成任务,使用来自的VQ分词器(详细见Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation这篇文章本文关于VQ的部分不细述)将图像转换为离散2D序列,并被展平为1D后使用adapter将每个ID对应的码本embedding映射到LLM的输入空间。
Janus的训练过程
Janus的训练分为三个阶段,如图所示。具体细节如下:
第一阶段:adaptor和image head训练。这个阶段的主要目标是在embedding空间中建立视觉和语言元素之间的连接,使大语言模型能够理解图像中显示的实体,并具备初步的视觉生成能力。在此阶段,保持视觉编码器和大语言模型冻结,只更新两个adaptor以及image head中的可训练参数。
第二阶段:在这个阶段,使用多模态语料库进行统一预训练,使Janus能够学习多模态理解和生成能力。解冻大语言模型,并利用所有类型的训练数据:纯文本数据、多模态理解数据和视觉生成数据。对于视觉生成,首先使用ImageNet-1k进行简单的视觉生成训练,帮助模型掌握基本的像素依赖关系。随后,通过通用的文本到图像数据来增强模型的开放域视觉生成能力。
第三阶段:在这个阶段,使用指令微调数据对预训练模型进行微调,以增强其遵循指令和对话能力。微调除Gen encoder外的所有参数。专注于监督答案,同时屏蔽系统和用户提示。为确保Janus在多模态理解和生成方面都具备熟练度,不为特定任务微调单独的模型。相反,使用纯文本对话数据、多模态理解数据和视觉生成数据的混合,确保在各种场景下的通用性。
Janus的训练目标
使用cross-entropy loss,对于图像生成任务,仅计算图像token的loss,对理解任务,仅计算文本token的loss。
Inference
在推理过程中,模型采用下一个词元预测的方法。对于纯文本理解和多模态理解,遵循标准做法,从预测的分布中顺序采样词元。对于图像生成,使用classifier-free guidance(这个应该是difussion model里面常用的技巧)。具体来说,对于每个词元,其logits 𝑙𝑔 的计算公式为:𝑙𝑔 = 𝑙𝑢 + 𝑠(𝑙𝑐 − 𝑙𝑢),其中𝑙𝑐是有条件时的logits,𝑙𝑢是无条件时的logits,𝑠是无分类器引导的缩放因子。有条件就是:prompt是“给我一张小女孩的图片”,无条件是:prompt由多个无意义占位符组成。
可能的扩展:
需要注意的是,采用理解和生成分离编码器的设计非常简单直接,且易于扩展。
多模态理解:
(1) 对于多模态理解组件,可以选择更强大的视觉编码器,而无需担心该编码器是否能够处理视觉生成任务,例如EVA-CLIP、InternViT等。
(2) 为处理高分辨率图像,可以使用动态高分辨率技术。此外,可以通过pixel shuffle等方法进一步压缩token以节省计算成本。
视觉生成:
(1) 对于视觉生成,可以选择更细粒度的编码器以在编码后保留更多图像细节,比如MoVQGan。
(2) 可以采用专门为视觉生成设计的损失函数,如扩散损失。
(3) 可以在视觉生成过程中结合使用因果注意力和双向注意力方法,以减少视觉生成过程中积累的误差。
支持其他模态:
Janus的简单架构允许轻松集成额外的编码器,可以适应各种模态,如3D点云、触觉和脑电图。这使Janus有潜力成为一个更强大的多模态通用模型。
实验
实验细节
使用DeepSeek-LLM(1.3B)作为基础语言模型,对于理解任务中使用的视觉编码器,选择SigLIP-Large-Patch16-384,Gen encoder具有16,384大小的码本,将图像下采样16倍,adaptor都是双层MLP。在16个node,每个node配备8张A100的集群上需要训练7天。其他超参等实验细节可以到论文中查看。
主要结果
总的来说,相比于其他统一理解和生成的模型,有一定的优势。在仅多模态理解的模型的比较上,都选择了一些比较旧的模型,并没有和新的多模态理解模型比较,被internvl2.5吊打,不过也很正常。视觉生成这块表现不错。
消融实验
因为文章的卖点就是解耦不同任务的视觉编码器,因此这段主要就在论证这种解耦的意义。
构建baseline
选择了VQ分词器来对图像进行编码,用于多模态理解和生成任务,作为基线实验(实验A)。考虑到实验A中的VQ分词器在提取语义信息方面可能较弱,导致其在多模态理解任务中效果不佳,还构建了一个更强的基线实验B。采用SigLIP来提炼出一个增强型语义分词器,该分词器能够从图像中提取高层语义信息,同时还具备将图像转换为离散ID的能力,这与Vila-u中的方法类似。
视觉编码解耦的影响
(1) 从实验A的结果来看,模型在视觉生成基准测试上取得了令人满意的表现。然而,在理解基准测试上,实验A与模型(实验D)之间存在显著差距。
(2) 将实验B与实验A相比,结果显示在多模态理解方面有明显改善,但与的方法相比仍有相当大的差距。在视觉生成方面,实验B的表现优于实验D。对此提出两个可能的原因:首先,语义分词器产生的离散ID具有更强的语义连贯性,为LLM提供了更合理的预测目标;其次,实验B中的视觉编码器的参数量显著多于实验D中的生成编码器。
(3) 为了研究使用单一视觉编码器是否会导致多模态理解和生成之间的权衡,基于实验B进一步设计了实验C,该实验仅专注于多模态理解训练。实验C的多模态理解能力显著优于实验B。这表明实验B中的视觉编码器在多模态理解和生成之间做出了权衡,最终牺牲了其多模态理解能力。以上实验说明了视觉编码解耦的重要性。
统一模型与纯理解、纯生成的对比
比较了统一模型(实验D)与纯理解模型(实验E)和纯生成模型(实验F)的性能表现。对于纯理解模型,去除了视觉生成数据;对于纯生成模型,排除了理解相关的数据。需要注意的是,统一模型和纯理解模型在理解部分采用相同的训练步骤,同样,统一模型和纯生成模型在视觉生成部分也采用相同的训练步骤。实验结果表明,统一模型的性能与单独的理解模型或单独进行视觉生成的模型的性能相当。这证明了模型Janus能够在几乎不影响多模态理解性能的情况下,同时具备强大的生成能力。
Janus-Pro
Abstract
Janus-Pro在Janus的基础上增加三点改进(1)优化的训练策略,(2)更多的训练数据,以及(3)更大的模型。
Introduction
和Janus基本一样,此处省略。
Janus-Pro
结构
一样。
优化的训练策略
• 延长第一阶段训练:增加第一阶段的训练步骤,以允许在ImageNet数据集上进行充分训练。发现,即使在LLM参数固定的情况下,模型也能有效地建模像素依赖关系,并基于类别名称生成合理的图像。
• 第二阶段聚焦训练:在第二阶段,放弃ImageNet数据,直接利用普通的文本到图像数据来训练模型,使其基于详细描述生成图像。这种重新设计的方法使第二阶段能够更有效地利用文本到图像数据,从而提高训练效率和整体性能。
还调整了第三阶段监督微调过程中不同类型数据集的比例,将多模态数据、纯文本数据和文本到图像数据的比例从7:3:10调整为5:1:4。通过适当减少文本到图像数据的比例,观察到这种调整使能够在保持强大的视觉生成能力的同时,获得更好的多模态理解性能。
更多数据
在多模态理解和视觉生成两个方面扩充了Janus的训练数据。
• 多模态理解:对于第二阶段预训练数据,参考DeepSeek-VL2,增加了约9000万个样本。这些包括图像描述数据集(如YFCC),以及用于表格、图表和文档理解的数据(如Docmatix)。对于第三阶段监督微调数据,还加入了来自DeepSeek-VL2的额外数据集,如MEME理解、中文对话数据,以及旨在增强对话体验的数据集。这些补充显著扩展了模型的能力,丰富了其处理多样化任务的能力,同时改善了整体对话体验。
• 视觉生成:观察到Janus之前版本使用的真实世界数据质量不足且包含大量噪声,这经常导致文本到图像生成的不稳定,产生美观性较差的输出。在Janus-Pro中,加入了约7200万个合成的数据样本,使统一预训练阶段的真实数据与合成数据比例达到1:1。实验表明,模型在合成数据上训练时收敛更快,而且产生的文本到图像输出不仅更稳定,而且美学质量显著提升。
更大的模型
模型从1.3B扩展到7B。
实验
比Janus好一点,但还是被internvl2.5吊打(很正常,通用的比单一任务差一些不过分)。
评价
在统一多模态理解和图像生成两种任务的模型中,Janus系列模型有不错的表现,但在单独的多模态理解任务中,Janus系列模型并不能比得过最先进的多模态模型(比如internvl2.5)。总的来说Janus是一次很好的探索,但在性能和好用程度上不如其他先进的单一任务模型。