华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA

TextMonkey: An OCR-Free Large Multimodal Model for Understanding Document

由华科和金山联合开发的Monkey多模态大模型早前已被人工智能领域国际顶级会议CVPR2024接收。TextMonkey是Monkey专门针对文档理解领域改造的成果。TextMonkey在场景文字识别、办公文档摘要生成、数学问题问答、文档版式分析,表格理解、图表问答、电子文档关键信息抽取等12项文档权威数据集,以及国际上规模最大的文档图像智能数据集OCRBench上取得显著突破,通用文档理解性能大幅超越现有方法。

 

论文地址:https://arxiv.org/pdf/2403.04473.pdf

Github地址:https://github.com/Yuliang-Liu/Monkey.git

 

摘要

TextMonkey是一个为以文本为中心的任务量身定做的大型多模态模型(LMM)。TextMonkey在12个基准评估测试中取得了不同程度的提升,在以场景文本为中心的任务中有5.2%的提升。在面向文档的任务中有6.9%的提升。在关键信息提取任务中有2.8%的提升。在场景文本识别中有10.9%的提高。并在OCRBench上设置了一个新标准,该标准由29个ocr相关评估组成的综合基准,得分为561,超过了之前用于文档理解的开源大型多模态模型。

简介

自动从表格、表单和发票等各种文档提取关键信息,对行业和学术研究至关重要。早期的方法通过两阶段的方法来解决这个问题:1)使用外部系统检测和识别文本;2)基于文本结果与图像融合的文档理解。然而,分开两步处理可能会导致错误的累积。

本文提出TextMonkey,在Monkey的基础上改进。TextMonkey利用Split模块,使用滑动窗口方法将高分辨率图像划分为窗口块。将剪辑中的每个自注意力层视为非重叠窗口中的自注意力。为了在保持高效计算的同时引入跨窗口关系,使用零初始化的窗口注意力转移来建立跨窗口连接。这种方法使我们能够维护编码器的训练数据分布,并处理高分辨率的文档图像,同时降低从头开始训练的计算成本。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

另一方面,拆分模块的使用仍然是一个重大挑战,因为它会导致令牌长度的显著增加。本文提出一种token重采样器来压缩这些特征,同时尽可能多地保留最重要的特征。在减少token数量的基础上,与随机查询相比,该模块还可以显著提高性能。

为了进一步缓解大型语言模型中的幻觉问题,模型不仅需要提供准确的答案,还需要定位支持其响应的特定视觉证据。提出了各种与文本相关的任务,以加深文本信息和视觉信息之间的联系。此外,在答案中加入位置线索可以进一步增强模型的可靠性和可解释性。

文本主要贡献如下:

  • 增强跨窗口关系。采用移动窗口注意力,成功地纳入了跨窗口连接,同时扩大了输入分辨率。
  • 令牌压缩。通过使用相似性作为标准,我们能够找到重要的token,这些token可以作为token重采样器的查询。该模块不仅减少了token长度,而且提高了模型的性能。
  • 文本定位。将范围扩大到包括基于文本的问答以外的任务,包括阅读文本、文本识别和文本定位。我们发现在答案中加入位置信息可以提高模型的可解释性。
  • 在12个公认的基准上评估了TextMonkey的性能,实验显示了其优秀的性能。

方法

首先使用滑动窗口模块将输入图像划分为不重叠的块,每个块的大小为448×448像素。这些块被进一步细分为14×14像素的更小的块,每个补丁都被视为一个Token。利用继承自预训练CLIP模型的Transformer Block,在每个窗口块上单独处理这些Token。

为了生成分层表示,输入图像被调整为448×448,并输入CLIP以提取全局特征。然后,共享图像重采样器处理这个全局特征,以及子图像的特征,以与语言域对齐。然后,使用Token重采样器通过压缩Token长度来进一步减少语言空间中的冗余。最后,这些处理后的特征,结合输入的问题,由一个大型语言模型(LLM)分析生成所需的答案。

滑动窗口注意力

采用滑动窗口注意力来增强CLIP模型的视觉处理能力。对于输入图像将图像分割为不重叠的窗口。在每个窗口中,独立应用CLIP架构中的transformer Block。为了融合不同窗口之间的交互,并增强模型对图像的上下文理解,采用了滑动窗口注意力机制。滑动窗口会循环地向左上角方向移动,从而生成新的窗口。通过掩码机制进行自注意力计算,将自注意力计算限制在新的窗口内。

为了实现更平滑的训练初始化,我们从零初始化开始学习,避免在初始阶段对早期特征进行过度变换。将MLP中的常规初始化修改为零初始化,以实现更平滑的训练:

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

其中B、A为两个线性层的权重。对a使用随机高斯初始化,对b使用零初始化。这种方法确保图像编码器的参数在初始阶段保持稳定,促进了更平滑的训练体验。

图像重采样

为了减少图像特征中的冗余,继承了Qwen-VL的图像重采样器,并将其应用于每个窗口。该模块使用一组可训练的参数作为查询向量,并利用视觉编码器的图像特征作为键和值进行交叉注意力操作。此外,为了保留对细粒度图像理解至关重要的位置信息,二维绝对位置编码被集成到交叉注意力机制的查询键对中。

Token重采样

随着分辨率的增加,使用滑动窗口机制,token的数量也显著增加。然而,由于一些语言模型的输入长度限制和训练时间限制,减少标记数量成为必要。对于自然语言来说,冗余信息可以是重复的语言元素。假设通过扩大图像的分辨率,会存在冗余的视觉信息。在确定两个语言元素之间的相似度时,我们通常测量它们的嵌入相似度。为评估图像特征的冗余性,测量已经映射到语言空间的图像标记的相似性。我们在图像重采样后随机选择20个有序的特征,并使用余弦相似度两两比较相似性。通过比较图像标记的相似性,我们可以观察到一个模式,即许多图像标记表现出多个相似的标记。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

我们观察到,某些token非常独特,缺乏密切相似的对应项。假设这些token携带重要和独特的信息,这在后续实验中得到了进一步验证。因此,我们利用相似性作为衡量标准来识别重要的标记。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

因此,本文提出一种Token重采样器来压缩冗余Token,我们利用token过滤器算法来选择最有价值的token。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

位置相关任务

为了缓解大型语言模型中的幻觉问题,其中它们可以产生与所提供的图像无关的错误回答,本文旨在增强它们分析并将视觉信息纳入其回答的能力。我们对现有的问答数据集进行了修改,在图像中找到了大多数答案的位置,这些位置线索被提取出来,并无缝集成到答案本身中。为了保留原始的直接对话能力,我们还保留了原始的问答任务。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

为了更好地感知文本的空间位置,要求模型具有很强的空间理解能力。在上述模型设计的基础上,添加了额外的训练任务,以改善模型对文本位置的感知,如文本识别和阅读文本。具体任务和提示如表1所示。为了保证文本和位置数据之间的强联系,我们严格保持它们的对齐方式,确保文本信息总是排在任何相关的位置细节之前。

构建数据集

我们仅利用开源数据,通过整合不同的数据集,对不同的任务采用不同的指令,提高了模型的学习能力和训练效率。对于场景文本场景,我们选择COCOText、TextOCR、HierText、TextVQA、MLT进行训练。对于文档图像,我们选择IIT-CDIP、DocVQA、ChartQA、InfoVQA、DeepForm、Kleister Charity (KLC)、WikiTableQuestions (WTQ)。为了加快训练速度,将单图像问答转换为基于图像的多轮问答,显著提高了图像特征的利用率,借鉴了LLaVA的成功方法。在我们的数据集中,总共有409.1k对对话数据和210万对问题-答案对来训练我们的模型。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

为了进一步加强模型处理结构化文本的能力,用结构化数据对TextMonkey上的一个epoch进行微调,以增强其结构化能力,产生了TextMonkey†。微调数据主要包括前一阶段数据的5%以及部分结构化数据,包括文档、表格和图表。结构化数据图像也来自公开的数据集,并使用其结构信息生成。因此,我们总共有55.7k的结构化数据。

损失函数

TextMonkey通过最大化训练时的损失概率来预测下一个标记。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

实验

实现细节

模型配置。我们使用了Qwen-VL中的Vit-BigG和LLM。TextMonkey由一个具有7.7B参数的大型语言模型、一个具有90M参数的图像重采样模块、一个具有13M参数的token重采样模块、一个具有1.9B参数的编码器和具有45M参数的移动窗口注意力组成。总的来说,TextMonkey共有9.7B个参数。

评估。我们采用了准确性指标,如果模型产生的响应包含基本事实,则认为是正确的。为了确保与其他方法更公平的比较,还利用其原始指标对某些数据集进行了补充评估,如F1分数和ANLS(平均归一化Levenshtein相似度)。

结果

OCRBench结果。使用了三个以场景文本为中心的VQA数据集STVQA、TextVQA和OCRVQA ,3个面向文档的VQA数据集DocVQA、InfoVQA和ChartQA ,以及3个关键信息提取数据集FUNSD、SROIE和POIE。为了全面评估性能,我们还使用了OCRBench,OCRBench跨越了广泛的文本相关视觉任务,包括29个数据集,旨在生成总体分数。如表3所示,与现有的大型多模态模型相比,TextMonkey表现出了优越的性能,特别是在文本密集和小的场景中。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

文档基准测试结果。我们使用其他论文中提供的特定评估指标在其他数据集上进行了测试:Deepform和KLC的F1-score、WTQ的精度、ChartQA的放松精度测量、DocVQA的ANLS和TextVQA的VQA分数。结果如表4所示,表明我们的模型在这些数据集上的性能领先,超过了其他模型。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

文本识别结果。我们在没有微调的情况下评估了其在文本识别数据集上的性能,如表5所示。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

可视化分析

对TextMonkey在各种场景下进行了定性评估,包括自然场景和文档图像。TextMonkey可以准确定位和识别场景图像和文档图像中的文本。此外,图5中的结果都证明了TextMonkey在广泛的场景中能够熟练地识别和解释视觉和文本信息。总的来说,TextMonkey在不同场景中的表现证明了其在各种视觉上下文中感知和理解文本信息的有效性。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

消融分析

  • 零初始化方法可以在ChartQA上提高0.6%的性能。
  • 引入交叉窗口连接可以在SROIE上提高0.1%、在DocVQA上提高1.5%、在TextVQA上提高2.4%的性能。
  • 基于Token Resampler的方法在SROIE、DocVQA和TextVQA上分别提高了1.0%、0.2%和1.1%的性能。
  • 替换重要标记而不使用标记过滤器会导致性能平均下降约12.7%。
  • 仅关注关键特征和直接消除特征会导致性能下降,如SROIE中的2.1%下降。
  • 忽略标记顺序不会明显影响性能,但在DocVQA中会导致2.2%的性能下降。
  • 直接增加分辨率而不压缩标记实际上会导致性能持续下降,特别是在DocVQA中下降了9.2%。
  • 增加输入分辨率对于包含大尺寸图像的数据集有益,对于包含较小图像的数据集没有益处。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

图表分析

图表的结构化具有很大的实用价值。我们的模型能够将图表和表格结构化为JSON格式,展示了其下游应用的潜力。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

App应用

我们使用Rico数据集的用户点击数据进行了实验,发现该模型能够理解用户意图并点击相应的图标,具有成为应用程序代理的潜力。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

讨论

可解释性

通过分析模型的定位信息,我们可以识别模型错误的原因,从而更好地理解模型的行为。模型可能会出现幻觉,但我们可以通过正确识别位置来减少幻觉。模型有时会将定位点与错误的文本对应,但仍然提供正确的答案,这可能意味着模型的响应存在一定的随机性或不确定性。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

思维链

在不同数据集上,要求模型提供答案位置并不总是能够带来一致的改进效果。对于需要推理的数据集,如ChartQA和InfoVQA,要求位置答案可能会产生负面影响。因此,在决定是否要求位置答案时,需要考虑数据集的性质和问题类型。未来的研究方向之一是自动构建推理链,通过开发机制自动生成连贯的推理链,可以提高模型的性能和推理能力。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

不同位置表示之间的比较

使用点作为位置表示可以显著提高性能,比矩形和多边形更适合学习。矩形通常优于多边形,可能是因为冗余的图像标记会增加模型学习过程的复杂性。

《华科&金山发表TextMonkey,通用文档理解大模型,刷新多个SOTA》- 投稿作者:灵度智能 - 发布于:GetAI社区

0

评论0

请先
显示验证码