25年10月来自DeepSeek AI 的论文“DeepSeek-OCR:Contexts Optical Compression”。

DeepSeek-OCR 模型,作为对通过光学二维映射压缩长上下文可行性的初步研究。DeepSeek-OCR 由两个组件组成:DeepEncoder 和 DeepSeek3B-MoE-A570M 解码器。其中,DeepEncoder 作为核心引擎,旨在在高分辨率输入下保持低激活值,同时实现高压缩比,从而确保视觉token数量达到最佳且易于管理。实验表明,当文本token数量在视觉 token数量的 10 倍以内(即压缩比小于 10 倍)时,该模型的解码 (OCR) 精度可达 97%。即使在 20 倍压缩比下,OCR 精度仍保持在 60% 左右。这在历史长上下文压缩和 LLM 中的记忆遗忘机制等研究领域展现出巨大的潜力。除此之外,DeepSeek-OCR 模型还展现出极高的实用价值。在 OmniDocBench 上,它仅使用 100 个视觉tokens就超越 GOT-OCR2.0(每页 256 个tokens),并且优于 MinerU2.0(平均每页 6000 多个tokens),同时使用不到 800 个视觉tokens。在生产环境中,DeepSeek-OCR 可以每天生成 20 万页以上的 LLM/VLM 训练数据(单台 A100-40G 处理器)。


当前的开源 VLM 采用三种主要类型的视觉编码器,如图所示。第一种类型是以 Vary [36] 为代表的双塔架构,它利用并行 SAM [17] 编码器来增加用于高分辨率图像处理的视觉词汇参数。虽然提供可控的参数和激活内存,但这种方法存在重大缺陷:它需要双重图像预处理,这会使部署复杂化,并使训练期间的编码器流水线并行性面临挑战。第二种类型是以 InternVL2.0 [8] 为代表的基于图块的方法,它通过将图像分成小图块(tiles)进行并行计算来处理图像,从而减少高分辨率设置下的激活内存。虽然能够处理极高的分辨率,但由于其本机编码器分辨率通常较低(低于 512×512),这种方法具有明显的局限性,导致大图像过度碎片化并产生大量的视觉 tokens。第三类是以 Qwen2-VL [35] 为代表的自适应分辨率编码,它采用 NaViT [10] 范式,通过基于补丁(patch)的分割直接处理整幅图像,无需进行块并行化。虽然该编码器可以灵活处理各种分辨率,但由于激活内存消耗巨大,可能导致 GPU 内存溢出,因此在处理大图像时面临巨大挑战,而且序列打包在训练过程中需要极长的序列长度。较长的视觉标记会减慢推理的预填充和生成阶段的速度。
请添加图片描述

架构

如图所示,DeepSeek-OCR 采用统一的端到端 VLM 架构,由编码器和解码器组成。编码器(即 DeepEncoder)负责提取图像特征、token 化以及压缩视觉表征。解码器用于根据图像 tokens 和提示生成所需的结果。DeepEncoder 的参数约为 380M,主要由 80M 的 SAM-base [17] 和 300M 的 CLIP-large [29] 串联而成。解码器采用 3B MoE [19, 20] 架构,激活参数为 570M。 OCR,尤其是文档解析任务,一直是图像-到-文本领域的热门话题。随着视觉语言模型(VLM)的进步,大量端到端 OCR 模型应运而生,从根本上简化 OCR 系统,从而彻底改变传统的流水线架构(需要独立的检测和识别专家模型)。Nougat [6] 首次在 arXiv 上将端到端框架应用于学术论文 OCR,展示该模型在处理密集感知任务方面的潜力。GOT-OCR2.0 [38] 扩展 OCR2.0 的范围,涵盖了更多合成图像解析任务,并设计一个兼顾性能和效率的 OCR 模型,进一步凸显端到端 OCR 研究的潜力。此外,诸如 Qwen-VL 系列 [35]、InternVL 系列 [8] 及其衍生模型等通用视觉模型也在不断增强其文档 OCR 能力,以探索密集视觉感知的边界。然而,当前模型尚未解决的一个关键研究问题是:对于包含 1000 个单词的文档,解码至少需要多少个视觉 tokens?这个问题对于研究“一图胜千言”的原理至关重要。

请添加图片描述


DeepEncoder

为了探索上下文光学压缩的可行性,需要一个具有以下特征的视觉编码器:1. 能够处理高分辨率图像;2. 高分辨率下激活值较低;3. 视觉 token 较少;4. 支持多种分辨率输入;5. 参数数量适中。然而,目前的开源编码器无法完全满足所有这些条件。因此,自行设计一种新型视觉编码器,名为 DeepEncoder。

DeepEncoder 架构

DeepEncoder 主要由两个组件组成:一个由窗口注意机制主导的视觉感知特征提取组件,以及一个具有密集全局注意机制的视觉知识特征提取组件。为了借鉴前人工作的预训练成果,分别使用 SAM-base(patch-size 16)和 CLIP-large 作为这两个组件的主要架构。对于 CLIP,删除第一个 patch embedding 层,因为它的输入不再是图像,而是来自先前流水线的输出 tokens。在这两个组件之间,借鉴 Vary [36] 的方法,使用一个 2 层卷积模块对视觉 tokens 进行 16 倍下采样。每个卷积层的核大小为 3,步幅为 2,填充为 1,通道数从 256 增加到 1024。假设输入一个 1024×1024 的图像,DeepEncoder 会将其分割成 1024/16×1024/16=4096 个块 tokens。由于编码器的前半部分由窗口注意力主导,只有 80M,因此激活是可以接受的。在进入全局注意之前,4096 个 tokens 经过压缩模块,tokens 数变为 4096/16=256,从而使整体激活内存可控。

多分辨率支持

假设有一张包含 1000 个光学字符的图像,想要测试解码需要多少个视觉tokens。这要求模型支持可变数量的视觉tokens。也就是说,DeepEncoder 需要支持多种分辨率。

通过位置编码的动态插值来满足上述需求,并设计多种分辨率模式用于同时进行模型训练,以实现单个 DeepSeek-OCR 模型支持多种分辨率的能力。如图所示,DeepEncoder 主要支持两种主要的输入模式:原生分辨率和动态分辨率。每种模式都包含多个子模式。

请添加图片描述

原生分辨率支持四种子模式:Tiny、Small、Base 和 Large,对应的分辨率和 token 数量分别为 512×512(64)、640×640(100)、1024×1024(256)和 1280×1280(400)。由于 Tiny 和 Small 模式的分辨率相对较小,为了避免浪费视觉 token,图像处理时会直接调整原始形状。对于 Base 和 Large 模式,为了保持原始图像的宽高比,需要将图像填充到相应的大小。填充后,有效视觉 token 的数量小于实际视觉 token 的数量,计算公式为:

𝑁_𝑣𝑎𝑙𝑖𝑑 = ⌈𝑁_𝑎𝑐𝑡𝑢𝑎𝑙 × [1 − ((𝑚𝑎𝑥(𝑤, h) − 𝑚𝑖𝑛(𝑤, h))/(𝑚𝑎𝑥(𝑤, h)))]⌉

其中 𝑤 和 h 分别表示原始输入图像的宽和高。

动态分辨率可以由两种原生分辨率组成。下表给出不同分辨率支持:

请添加图片描述

例如,Gundam 模式由 n×640×640 个 tiles(局部视图)和一个 1024×1024 的全局视图组成。tiling 方法遵循 InternVL2.0 [8]。支持动态分辨率主要出于应用方面的考虑,尤其适用于超高分辨率输入(例如报纸图像)。tiling 是一种二次窗口注意机制,可以有效地进一步减少激活内存。值得注意的是,由于原生分辨率相对较大,动态分辨率下图像不会过于碎片化(tiles 的数量控制在 2 到 9 个范围内)。DeepEncoder 在 Gundam 模式下输出的视觉 token 数量为:𝑛 × 100 + 256,其中 𝑛 为 tiles 的数量。对于宽和高均小于 640 的图像,𝑛 设置为 0,即 Gundam 模式将降级为 Base 模式。

Gundam 模式与四种原生分辨率模式一起训练,以实现一个模型支持多种分辨率的目标。需要注意的是,Gundam-master 模式(1024×1024 局部视图 + 1280×1280 全局视图)是通过在已训练好的 DeepSeek-OCR 模型上继续训练获得的。这主要是为了平衡负载,因为 Gundam-master 的分辨率过大,一起训练会降低整体训练速度。

MoE 解码器

解码器采用 DeepSeekMoE [19, 20],具体来说是 DeepSeek-3B-MoE。在推理过程中,该模型会激活 64 个路由专家中的 6 个和 2 个共享专家,激活参数约为 570M。3B DeepSeekMoE 非常适合以域为中心(本文而言是 OCR)的 VLM 研究,因为它既拥有 3B 模型的表达能力,又拥有 500M 小型模型的推理效率。

解码器根据 DeepEncoder 压缩后的潜视觉token 重建原始文本表示,其中 Z 是来自 DeepEncoder 的压缩潜(视觉)tokens,Xˆ 是重构的文本表示。函数 𝑓_dec 表示一个非线性映射,可以通过 OCR 式训练由紧凑型语言模型有效地学习。可以合理地推测,通过专门的预训练优化,LLM 可以更自然地整合这些功能。

数据引擎

为 DeepSeek-OCR 构建复杂多样的训练数据,包括 OCR 1.0 数据,主要包含场景图像 OCR、文档 OCR 等传统 OCR 任务;OCR 2.0 数据,主要包含复杂人工图像的解析任务,例如常见图表、化学式、平面几何等解析数据;通用视觉数据,主要用于为 DeepSeek-OCR 注入一定的通用图像理解能力,并保留通用视觉接口。

OCR 1.0 数据

文档数据是 DeepSeek-OCR 的重中之重。从互联网上收集约 100 种语言的 3000 万页多样化 PDF 数据,其中中文和英文约占 2500 万页,其他语言约占 500 万页。针对这些数据,创建两种类型的标注:粗标注和细标注。粗标注使用 fitz 算法直接从全数据集中提取,旨在训练模型识别光学文本,尤其是少数民族语言的光学文本。精细标注包括中文和英文各2M页,使用先进的排版模型(如PP-DocLayout [33])和OCR模型(如MinuerU [34]和GOT-OCR2.0 [38])进行标注,构建检测和识别交织数据。对于小语种,在检测部分,排版模型具有一定的泛化能力。在识别部分,用fitz构建小块数据训练GOT-OCR2.0,再使用训练的模型对经过排版处理后的小块进行标注,利用模型飞轮构建600K的数据样本。在DeepSeek-OCR的训练过程中,使用不同的提示来区分粗标签和细标签。精细标注图文对的真值如图所示。还收集3M的Word数据,通过直接提取内容,构建了高质量的无排版图文对。这些数据主要为公式和HTML格式的表格带来收益。此外,选取​​一些开源数据[28, 37]作为补充。

请添加图片描述

对于自然场景OCR,模型主要支持中文和英文。图片数据源来自LAION [31]和悟空[13],使用PaddleOCR [9]进行标注,中文和英文数据样本各10M。与文档OCR类似,自然场景OCR也可以通过提示控制是否输出检测框。

OCR 2.0数据

遵循GOT-OCR2.0 [38],将图表、化学式和平面几何解析数据统称为OCR 2.0数据。对于图表数据,遵循OneChart [7],用pyecharts和matplotlib渲染10M图片,主要包含常用的折线图、条形图、饼图和复合图。将图表解析定义为图像到HTML表格的转换任务,如图(a)所示。对于化学式,用 PubChem 的 SMILES 格式作为数据源,并使用 RDKit 将其渲染成图像,构建 5M 的图文对。对于平面几何图像,遵循 Slow Perception [39] 的生成方法。具体而言,用感知尺尺寸 4 来建模每个线段。为了增加渲染数据的多样性,引入几何平移不变的数据增强,即在原始图像中平移相同的几何图像,使其与在坐标系中心位置绘制的相同真值相对应。基于此,构建总计 1M 的平面几何解析数据,如图 (b) 所示。
请添加图片描述

通用视觉数据

DeepEncoder 可以受益于 CLIP 的预训练增益,并且拥有足够的参数来整合通用视觉知识。因此,也为 DeepSeek-OCR 准备一些相应的数据。沿用 DeepSeek-VL2 [40] 的方法,为字幕、检测和落地(grounding)等任务生成相关数据。需要注意的是,DeepSeek-OCR 并非通用的 VLM 模型,这部分数据仅占总数据的 20%。引入此类数据主要是为了保留通用视觉接口,以便对模型和通用视觉任务感兴趣的研究人员能够在未来方便地推进他们的工作。

纯文本数据

为了确保模型的语言能力,引入 10% 的内部纯文本预训练数据,所有数据处理后的长度均为 8192 个 token,这也是 DeepSeek-OCR 的序列长度。综上所述,训练 DeepSeek-OCR 时,OCR 数据占 70%,通用视觉数据占 20%,纯文本数据占 10%。

训练流程

训练流程非常简单,主要包含两个阶段:a). 独立训练 DeepEncoder;b). 训练 DeepSeek-OCR。需要注意的是,Gundam-master 模式是通过在预训练的 DeepSeek-OCR 模型上继续训练 6M 采样数据获得的。

训练 DeepEncoder

沿用 Vary [36] 的方法,采用紧凑型语言模型 [15],并使用下一个 token 预测框架来训练 DeepEncoder。在此阶段,用上述所有 OCR 1.0 和 2.0 数据,以及从 LAION [31] 数据集中采样的 1 亿个通用数据。所有数据均训练 2 个 epoch,批大小为 1280,使用 AdamW [23] 优化器和余弦退火调度器 [22],学习率为 5e-5。训练序列长度为 4096。

训练 DeepSeek-OCR

DeepEncoder 准备就绪后,用前面数据来训练 DeepSeek-OCR。整个训练过程在 HAI-LLM [14] 平台上进行。整个模型采用流水线并行 (PP),分为 4 个部分,其中 DeepEncoder 占两部分,解码器占两部分。对于 DeepEncoder,将 SAM 和压缩器视为视觉 token化器,将它们放置在 PP0 中并冻结其参数,而将 CLIP 部分视为输入嵌入层,并将其放置在 PP1 中,不冻结权重以进行训练。对于语言模型部分,由于 DeepSeek3B-MoE 有 12 层,将 6 层分别放置在 PP2 和 PP3 上。用 20 个节点(每个节点配备 8 个 A100-40G GPU)进行训练,数据并行度 (DP) 为 40,全局批次大小为 640。用 AdamW 优化器和基于步长的调度程序,初始学习率为 3e-5。对于纯文本数据,训练速度为 90B 个 tokens /天,而对于多模态数据,训练速度为 70B 个 tokens /天。


评估部分。

视觉-文本压缩研究

选取 Fox [21] 基准数据集来验证 DeepSeek-OCR 对富文本文档的压缩-解压能力,以初步探索上下文光学压缩的可行性及其应用范围。用 Fox 的英文文档部分,使用 DeepSeek-OCR 的 token化器对真实文本进行 token化(词汇量约为 129k),并选取包含 600-1300 个分词的文档进行测试,恰好为 100 页。由于文本分词数量较少,只需测试 Tiny 和 Small 模式下的性能,其中 Tiny 模式对应 64 个 tokens,Small 模式对应 100 个 tokens。用不带布局的提示符“\nFree OCR.”来控制模型的输出格式。尽管如此,输出格式仍然无法完全匹配 Fox 基准数据集,因此实际性能会略高于测试结果。

如表所示,在10倍压缩率下,模型的解码精度可以达到约97%,这是一个非常有前景的结果。未来,或许可以通过文本转图像的方法实现近10倍的无损上下文压缩。当压缩率超过10倍时,性能开始下降,这可能有两个原因:一是长文档的布局变得更加复杂,二是长文本在512×512或640×640分辨率下会变得模糊。第一个问题可以通过将文本渲染到单个布局页面上来解决,而第二个问题将成为遗忘机制的一个特性。当将token压缩近20倍时,精度仍然可以接近60%。这些结果表明,光学上下文压缩是一个非常有前景且值得研究的方向,而且这种方法不会带来任何开销,因为它可以利用VLM基础设施,而多模态系统本身就需要额外的视觉编码器。
请添加图片描述

OCR 实际性能

DeepSeek-OCR 不仅仅是一个实验模型,它还具有强大的实际应用能力,并且可以构建用于 LLM/VLM 预训练的数据。为了量化 OCR 性能,在 OmniDocBench [27] 上测试了 DeepSeek-OCR,结果如表所示。DeepSeek-OCR 仅需 100 个视觉 tokens(640×640 分辨率),就超越了使用 256 个 tokens 的 GOT-OCR2.0 [38];仅需 400 个tokens(285 个有效 tokens,1280×1280 分辨率),其性能与该基准测试中的当前最佳模型相当。DeepSeek-OCR 使用不到 800 个 tokens(Gundam 模式),其性能优于需要近 7,000 个视觉 tokens 的 MinerU2.0 [34]。这些结果表明,DeepSeek-OCR 模型在实际应用中非常强大,并且由于更高的 token 压缩率,其研究空间也更大。

请添加图片描述
如表所示,某些文档类别只需要很少的 token 即可达到令人满意的性能,例如幻灯片只需要 64 个视觉 token。对于书籍和报告文档,DeepSeek-OCR 仅需 100 个视觉 token 即可获得良好的性能。结合前面分析,这可能是因为这些文档类别中的大多数文本 token 都在 1000 个以内,这意味着视觉 token 的压缩率不超过 10 倍。对于报纸,由于报纸中的文本 token 数量为 4000-5000 个,远远超过其他模式 10 倍的压缩率,因此需要 Gundam 甚至 Gundam-master 模式才能达到可接受的编辑距离。这些实验结果进一步揭示上下文光学压缩的边界,可为 VLM 中的视觉 token 优化以及 LLM 中的上下文压缩和遗忘机制研究提供有效参考。

请添加图片描述

定性研究

深度解析

DeepSeek-OCR 同时具备排版和 OCR 2.0 的功能,使其能够通过二次模型调用进一步解析文档中的图像,称之为“深度解析”。模型只需统一的提示即可对图表、几何图形、化学式甚至自然图像进行深度解析。

多语言识别

互联网上的 PDF 数据不仅包含中文和英文,还包含大量的多语言数据,这在训练 LLM 时也至关重要。对于 PDF 文档,DeepSeek-OCR 可以处理近 100 种语言。与中文和英文文档一样,多语言数据也支持排版和非排版 OCR 格式。

通用视觉理解

为 DeepSeek-OCR 提供一定程度的通用图像理解能力。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐