多模态大语言模型(MLLM)-Deepseek Janus

论文链接:https://arxiv.org/abs/2410.13848

代码链接:https://github.com/deepseek-ai/Janus

本次解读Janus: Decoupling Visual Encoding for Unified Multimodal Understanding and Generation

前言

Deepseek出品,必属精品。

创新点

  • 传统方法在统一视觉理解、视觉生成任务上,做的不好。视觉理解侧重高层语义(例如类别、属性等),而视觉生成侧重低层语义(例如局部细节等),统一模型难以同时关注高层和低层语义信息。
  • Janus解耦视觉编码方式,为视觉理解、视觉生成选择对应的视觉编码器,避免了高层-低层语义信息的冲突。
  • Janus灵活可扩展,解耦的思想不仅可用于视觉理解、视觉生成,也可以扩展到点云、脑电信号、甚至是声音数据。
  • Janus用小体量模型,在视觉理解、视觉生成任务上,均取得了媲美中等体量模型的效果。

具体细节

模型结构

整体模型结构见上图。

  • 针对文本理解任务:
    输入端 :利用LLM内置的tokenizer将文本转化为ID,进而获取文本embedding,送到LLM(图中Auto-Regressive Transformer)中
    输出端:利用LLM内置的prediction head预测(上图Text De-Tokenizer)
  • 针对多模态理解任务
    输入端 :利用SigLIP encoder(上图中Und. Encoder)提取高层语义特征,展平成1维 embedding。利用adaptor将1维序列转换为LLM可理解的embedding,送到LLM(图中Auto-Regressive Transformer)中
    输出端:利用LLM内置的prediction head预测(上图Text De-Tokenizer)
  • 针对视觉生成任务
    输入端 :利用VQ tokenizer(上图中Gen. Encoder)将图像转换为离散ID,展平成1维 embedding。利用adaptor将1维序列转换为LLM可理解的embedding,送到LLM(图中Auto-Regressive Transformer)中
    输出端:利用一个随机初始化的prediction head实现图片生成(上图Image Decoder)

训练策略

整体分为三个阶段

阶段一:训练Adaptors和Image Head

训练数据

125w ShareGPT4V数据用于多模态理解+120w ImageNet-1K数据用于视觉生成。ShareGPT4V数据格式为<image><text>,ImageNet-1K数据格式为<category_name><image>

训练策略

阶段一的目标是实现视觉和文本在embedding层面互相理解(实现LLM理解图像,实现image head能生成图像)。

仅训练Adaptors和Image Head,其中Image Head可以理解为Image decoder

训练损失

文本、图像均建模成sequence的形式,利用next token prediction的loss进行训练(已知前i个token,预测第i个token)

阶段二:统一预训练

训练数据

来源较多

  • Text-only data(仅文本数据):DeepSeek-LLM用的文本语料
  • Interleaved image-text data(图像-文本 交错数据):WikiHow和WIT数据
  • Image caption data(图像描述数据):从多个来源(https://huggingface.co/datasets/dclure/laion-aesthetics-12m-umaphttps://image-net.org/static_files/papers/imagenet_cvpr09.pdf等)里收集图像描述数据。所有图像描述数据重新建模成QA对的形式,例如Describe the image in detail.
  • Table and chart data.(图表数据):DeepSeek-VL用的图表数据
  • Visual generation data(视觉生成数据):两部分,一部分来自多个数据集(https://huggingface.co/datasets/dclure/laion-aesthetics-12m-umaphttps://segment-anything.com/),另一部分是1百万内部数据。所有视觉生成数据格式整理成<caption><image>的形式
    一些训练的trick:
  • 图像描述数据里,有25%的概率,仅利用描述里的第一个句子,促使模型生成短描述
  • 前120k迭代中,使用ImageNet-1k进行简单的视觉生成训练,以帮助模型掌握基本的像素依赖关系;后60k迭代中,使用其他视觉生成数据集增强模型在开放领域的视觉生成能力。
训练策略

阶段二的目标是实现自通用的多模态理解和视觉生成能力。

所有参数均训练。

首先通过使用ImageNet-1k进行简单的视觉生成训练,以帮助模型掌握基本的像素依赖关系。随后,使用其他的视觉生成数据集增强模型在开放领域的视觉生成能力。

训练损失

同上

阶段三:有监督微调

训练数据

存在三种训练任务,不同任务需要的数据不一样

  • 文本理解任务:
  • 多模态理解任务:
  • 视觉生成任务:
    整体数据格式整理成User: \n Assistant: 的形式
训练策略

阶段三的目标是提升模型的指令遵循和图文对话的能力。

所有参数均训练。

训练损失

同上

推理

Janus采用next-token prediction的方式进行推理。

  • 对于文本理解/多模态理解任务,从预测分布里,采用传统的采样策略(n-gram、beam-search等)方式,实现文本token输出
  • 对于图像生成任务,采用classifier-free guidance (CFG)方式输出token(类似于https://arxiv.org/abs/2301.00704https://arxiv.org/abs/2203.13131),下一个token的预测概率是

    其中, l g l_g lg是conditional logit, l u l_u lu是unconditional logit, 𝑠 𝑠 s是scale,默认为5。

模型扩展

这一部分像是论文的展望。。。

多模态理解扩展

可以将模型架构图中的Und. Encoder替换成任意的视觉编码器,例如EVA-CLIP、Intern ViT等,也能采用一些动态高分辨率技术来支持大图输入。

通过替换Und. Encoder,Janus能够扩展到多种多模态理解任务上。

视觉生成扩展

为了在编码后保留更多图像细节,可以选择更细粒度的编码器,例如 MoVQGan

可以采用专门为视觉生成设计的损失函数,例如扩散损失

在视觉生成过程中,可以结合使用 AR(因果注意力)和并行(双向注意力)方法,以减少视觉生成过程中累积的误差 。

更多模态扩展

借助解耦的思想,通过两个图像编码器分别建模高层、低层语义信息,实现视觉理解、视觉生成任务。该思想也可以扩展到点云、脑电信号、甚至是声音数据。

增加点云、脑电信号、甚至是声音数据对应的编码器即可

实验

实验细节

  • 使用 DeepSeek-LLM(1.3B)作为基础语言模型,其最大支持的序列长度为 4096。
  • 对于理解任务中使用的视觉编码器,选择了 SigLIP-Large-Patch16-384。
  • 生成编码器具有大小为 16,384 的码本,并将图像下采样 16 倍。
  • 视觉理解和视觉生成的adaptor都是两层的多层感知机(MLP)。
  • 在训练过程中使用序列打包来提高训练效率,类似于laion的数据组织形式
  • 在单个训练步骤中根据指定的比例混合所有数据类型,具体比例未知,行业机密。。。
  • 使用Deepseek自研的HAI-LLM进行训练和评估,AI Infra太重要了
  • 整个训练过程在一个由 16 个节点组成的集群上进行,每个节点配备 8 个 Nvidia A100(40GB)GPU,耗时 7 天。16*8块A100-40G 单次训练7天,仅硬件成本约66000元(按照https://ai.cnix.cn/market/compute租赁价格,8xA100-40G 单月16500,16500x16/4=66000)
  • Money is all your need

和sota的比较

和多模态理解sota模型比较,Janus以小体量,实现了媲美中体量模型的效果

和多模态生成sota模型比较,Janus以小体量,实现了媲美中体量模型的效果

消融实验

消融实验最有意思了

A:用VQ Tokenizer(低层语义信息编码器)实现视觉理解、视觉生成

B:用SE Tokenizer(高层语义信息编码器)实现视觉理解、视觉生成

C:用SE Tokenizer(高层语义信息编码器)实现视觉理解

D:用SigLIP(高层语义信息编码器)实现视觉理解;用VQ Tokenizer(低层语义信息编码器)实现视觉生成

E:用SigLIP(高层语义信息编码器)实现视觉理解

F:用VQ Tokenizer(低层语义信息编码器)实现视觉生成

解耦视觉编码器效果

A vs B:在视觉理解任务上,B效果显著优于A,说明SE Tokenizer(高层语义信息编码器)更适合视觉理解;在视觉生成任务上,A效果显著优于B,说明VQ Tokenizer(低层语义信息编码器)更适合视觉生成

B vs C:B用SE Tokenizer(高层语义信息编码器)实现两个任务,在理解任务上,效果不及C,说明单编码器在实现两个任务时,存在性能牺牲。

统一视觉理解和视觉生成效果

D vs E:在视觉理解任务上,效果基本持平

D vs F:在视觉生成任务上,效果差距不大

证明解耦视觉编码器能够有效平衡两个任务

可视化效果

视觉理解:

视觉生成:

笔者会持续关注多模态大语言模型(MLLM),对底层原理、经典论文、开源代码都会进行详细解读,欢迎交流学习。

相关推荐
边缘计算社区34 分钟前
首个!艾灵参编的工业边缘计算国家标准正式发布
大数据·人工智能·边缘计算
游客5201 小时前
opencv中的各种滤波器简介
图像处理·人工智能·python·opencv·计算机视觉
一位小说男主1 小时前
编码器与解码器:从‘乱码’到‘通话’
人工智能·深度学习
深圳南柯电子1 小时前
深圳南柯电子|电子设备EMC测试整改:常见问题与解决方案
人工智能
Kai HVZ1 小时前
《OpenCV计算机视觉》--介绍及基础操作
人工智能·opencv·计算机视觉
biter00881 小时前
opencv(15) OpenCV背景减除器(Background Subtractors)学习
人工智能·opencv·学习
吃个糖糖1 小时前
35 Opencv 亚像素角点检测
人工智能·opencv·计算机视觉
IT古董2 小时前
【漫话机器学习系列】017.大O算法(Big-O Notation)
人工智能·机器学习
凯哥是个大帅比2 小时前
人工智能ACA(五)--深度学习基础
人工智能·深度学习
m0_748232922 小时前
DALL-M:基于大语言模型的上下文感知临床数据增强方法 ,补充
人工智能·语言模型·自然语言处理