跳转至

DeepSeek 多模态案例

DeepSeek 的 VL、VL2、Janus 与 OCR 系列不是同一模型的简单迭代,而是对视觉理解、统一生成和文档压缩三个问题的不同回答。本页重在比较计算路径。

四条路线

路线 主要目标 表示与主干 入口
DeepSeek-VL 通用视觉语言理解 vision encoder + adapter + language model 论文
DeepSeek-VL2 动态分辨率、多图理解 dynamic tiling + MoE language backbone 论文
Janus / Janus-Pro 理解与图像生成统一 解耦视觉编码 + 统一 autoregressive Transformer Janus、Janus-Pro
DeepSeek-OCR / OCR 2 文档视觉压缩与语义阅读顺序 高分辨率 DeepEncoder;DeepEncoder V2 在进入语言解码器前重排视觉 token OCR、OCR 2

这四条路线的发布对象也不同。VL/VL2 主要研究视觉语言理解,Janus 把理解与图像生成放进统一自回归主干,OCR 先把高分辨率文档压成可供语言模型读取的视觉表示,OCR 2 再改变这些视觉 token 的阅读顺序。它们共享部分研究动机,不应把后一条路线的能力或训练配方倒写进前一模型。

VL:先对齐,再联合训练

典型流水线是

\[ I\xrightarrow{E_v}Z_v\xrightarrow{P}H_v \xrightarrow{\text{LLM}}Y. \]

第一阶段冻结大部分主干,训练 projector 对齐视觉与语言空间;后续阶段加入视觉语言预训练与指令数据。优点是复用成熟组件,风险是接口成为信息瓶颈。

DeepSeek-VL 的公开说明强调 hybrid vision encoder:一条路径保留语义,一条路径处理高分辨率细节,再送入 adapter。其训练并非“先完成视觉再碰语言”的简单串联;语言数据从视觉语言预训练阶段就参与,以降低多模态训练对既有语言能力的侵蚀。复现时要把冻结策略、两路 feature shape、projector 与语言数据比例写进同一配方。

评估时要区分:

  • encoder 的输入分辨率与裁切;
  • 视觉 token 数量;
  • projector 类型;
  • LLM 是否全量更新;
  • caption、OCR、grounding 和对话数据的比例。

VL2:动态切片与稀疏主干

高分辨率图像若直接缩放,小字和局部结构会丢失;若全部切成 patch,序列又迅速膨胀。动态切片通常保留全局缩略图,再选择若干局部 tile:

\[ N_v=N_{\text{global}}+\sum_{j=1}^{m}N_{\text{tile},j}. \]

tile 数 \(m\) 控制细节与成本。多图场景还要在图片之间分配预算。VL2 将这类视觉预算与 MoE 语言主干结合,说明视觉 prefill、expert routing 和 KV cache 不能分开评估。

动态分辨率还改变位置语义:局部 tile 需要知道自己在原图中的坐标,全局缩略图则提供跨 tile 关系。只把所有 patch 顺序拼接,会让相邻 token 与相邻像素不再等价。评测应按图像宽高比、tile 数、小目标/OCR 尺寸和多图数量切片,并同时报告视觉 token 数。

Janus:解耦表示,共享推理主干

理解倾向语义抽象,生成倾向局部重建。Janus 使用不同视觉编码路径得到各自适合的表示,再映射到统一序列交给 Transformer:

\[ H= \begin{cases} P_u(E_u(I)), & \text{understanding},\\ P_g(E_g(I)), & \text{generation}. \end{cases} \]

这种设计保留统一自回归建模的接口,同时避免强迫同一 encoder 同时优化相反目标。它也带来新的问题:任务路由、模态 token 竞争和两个编码空间的一致性。

“共享 Transformer”也不意味着输出头完全相同。理解路径把连续语义 feature 映射进语言空间,生成路径则处理离散视觉 code 并由图像 tokenizer 解码。需要分别验证:

  1. 理解输入不会误走生成 encoder;
  2. modality token 与 attention mask 能隔离不合法序列;
  3. 图像 code 的采样与文本 EOS 不会混淆;
  4. 文本能力比较使用相同模板和语言 checkpoint;
  5. 图像质量、理解准确率与跨模态一致性分别报告。

Janus 的价值在于把“表示是否共享”与“推理主干是否共享”拆成两个设计轴,而不是证明解耦一定优于所有 early-fusion 方案。

OCR:压缩不是识别率的同义词

文档模型既要看清字符,也要理解版面。视觉 token 压缩率可写成

\[ \rho=\frac{N_{\text{pixels or patches}}}{N_{\text{visual tokens}}}, \]

但更高 \(\rho\) 只有在下游文字、表格、公式和阅读顺序仍可恢复时才有价值。OCR 系统应至少分开评价:

  • 字符与词错误率;
  • 阅读顺序和段落结构;
  • 表格单元格关系;
  • 数学公式结构;
  • 多页上下文;
  • token、时延和显存。

把 OCR 输出作为纯文本送给 LLM 可降低视觉成本,但会丢失字体、位置、图形和不确定性;端到端视觉模型保留结构,却更难审计识别错误。

压缩率还必须绑定输入分辨率和下游协议。相同视觉 token 数处理一张单栏扫描件与一张密集表格,信息损失并不相同;如果 benchmark 只问页面主题,可能掩盖字符级和结构级错误。文档与 GUI 的坐标、阅读顺序和结构化评测见文档、图表、GUI 与 Grounding。

OCR 2:压缩以后,顺序本身仍是模型选择

传统视觉语言模型通常按二维 raster scan 把 patch 展平:先从左到右,再从上到下。对单栏正文,这近似阅读顺序;对多栏排版、图表、公式和浮动注释,它可能把语义上相邻的元素拆开,也可能让语言解码器先看到结论、后看到前提。

DeepSeek-OCR 2 提出的 DeepEncoder V2 在进入语言解码器前,根据图像语义动态重排视觉 token。它把文档理解写成两段一维因果流:

\[ I\xrightarrow{\text{visual causal encoder}} \tilde z_{1:M} \xrightarrow{\text{causal language decoder}} y_{1:T}. \]

第一段决定“先看哪里”,第二段决定“怎样解释已经看到的内容”。这与简单加入二维位置编码不同:位置编码告诉模型 token 来自哪里,重排则直接改变 causal prefix 中已经可见的证据。因而复现时至少要验证:

  • 重排是否保持坐标、区域与原图之间的可逆映射;
  • 同一页面在不同裁切或分辨率下能否保持稳定阅读顺序;
  • 表格行列、公式编号和跨栏引用是否因重排改善,而不是只提高平均 OCR 分数;
  • 并行编码收益是否被自回归式顺序决策抵消;
  • OCR 2 的结果不能倒推为通用 VL、Janus 或语言主干已经采用同一视觉因果流。

把选择落到计算与错误类型

问题 VL/VL2 Janus OCR 路线
主要输出 文本 文本与图像 token 文本或结构化文档
视觉表示 连续语义特征 理解/生成解耦 高密度文档特征
成本核心 高分辨率 prefill 长图像序列生成 压缩率与结构恢复
关键失效 细节遗漏、语言先验 模态干扰、生成一致性 阅读顺序、表格与公式

还应在相同硬件上报告 image preprocessing、vision encoder、projector 与 LLM prefill 的分段时延;否则“视觉 token 更少”不一定转化成更低端到端延迟。原理见多模态融合与训练、原生多模态与生成和多模态评测,完整分支见 DeepSeek 家族总览,主干继承关系见演化时间线。

Reference