【多模态文档智能】OCR-free感知多模态大模型技术链路及训练数据细节

目前的一些多模态大模型的工作倾向于使用MLLM进行推理任务,然而,纯OCR任务偏向于模型的感知能力,对于文档场景,由于文字密度较高,现有方法往往通过增加图像token的数量来提升性能。这种策略在增加新的语言时,需要重新进行训练,计算开销较大,成本较高。因此,本文再来看看vary和got这两个衔接工作,看看其完整的技术链路。

Vary

传统的vlm做法和vary

技术点

  • 新视觉词汇表的生成:设计了一个词汇网络和一个小型解码器Transformer,通过自回归生成所需的词汇表。具体使用SAM预训练的ViTDet(base scale)作为新词汇网络的主要部分,并在其最后一层后添加两个卷积层,以将特征形状转换为与CLIP-L输出匹配的形状。

    添加了两个卷积层,以使输出与CLIP相似

  • 数据:在生成阶段,使用手动文档和图表数据作为正样本,自然图像作为负样本,通过自回归方式训练词汇网络。文档数据包括从arXiv和CC-MAIN-2021-31-PDF-UNTRUNCATED收集的英文和中文字档,图表数据包括使用matplotlib和pyecharts渲染的图表。

  • 词汇表融合:在生成新词汇表后,将其添加到原始LVLMs中,引入新特征。在这个过程中,冻结新旧词汇网络的权重,解冻其他模块的权重。新词汇表与原始CLIP-VIT并行,各自拥有独立的输入嵌入层,在LLM之前集成。

训练方法

整体分为两个阶段:Vary-tiny和Vary-base

  1. Vary-tiny

    首先构建了一个具有新视觉词汇表(vision vocabulary)的视觉Transformer(ViT),命名为Vary-tiny。采用了SAM预训练的ViTDet作为Vary-tiny的主要组成部分,并在其后添加了两个卷积层,以便将特征形状调整为与CLIP-VIT的输出相匹配。接下来,将一个全连接层和一个文本解码器OPT-125M(这里也可以使用更大的大型语言模型(LLM)来替代OPT-125M。)连接到Vary-tiny上。

    为了训练Vary-tiny,需要构造正负样本的图像-文本对。正样本包括需要进行OCR处理的图像及其OCR结果(如密集文本和Python字典风格的图表结果)。负样本则来自COCO数据集,包含自然图像以及与之对应的文本“This is an natural image”。

  2. Vary-base

    Vary-base 是基于 Vary-tiny 的改进版本,它将 Vary-tiny 与原始的 CLIP-L ViT 并行运行。这两个视觉变换器(ViT)的输出嵌入首先分别输入到它们各自的线性层,然后将这两个线性层的输出连接起来,最后输入到LLM中。在 Vary-base 中,Vary-tiny 的输入图片分辨率为 1024×1024,而其最后一层输出的特征图尺寸为 64×64×256。这与 CLIP-L 的输出尺寸不匹配,因此在 Vary-tiny 中添加了两个卷积层来进行特征转换,以确保尺寸的一致性。在训练 Vary-base 的过程中,会冻结两个 ViT 的权重,只更新线性投影层和 LLM 的参数。训练数据包括自然场景和 OCR 场景的视觉问答(VQA),以便让模型能够在这些场景下表现出更好的性能。

训练数据

  1. Vary-tiny(学习新的视觉词汇表)
  • 文档数据:从arXiv和CC-MAIN-2021-31-PDF-UNTRUNCATED收集的高分辨率文档图像文本对。英文部分:从arXiv的开放获取文章中收集PDF格式的文档。中文部分:从互联网上的电子书籍中收集。处理方式:

    • 使用PyMuPDF库提取每页PDF中的文本信息。
    • 使用pdf2image库将每页转换为PNG图像。
    • 构建了100万张中文和100万张英文的文档图像文本对用于训练。
  • 图表数据:使用matplotlib和pyecharts作为渲染工具生成图表图像文本对。matplotlib风格:构建了25万张中英文图表图像文本对。pyecharts风格:构建了50万张中英文图表图像文本对。处理方式:

    • 将图表中的文本(如标题、x轴和y轴标签)随机从互联网下载的自然语言处理(NLP)语料库中选择,并转换为Python字典格式。

  • 负样本自然图像:从COCO数据集中提取自然图像及其对应的文本。文本:随机选择以下句子:“It’s an image of nature”、“Here’s a nature picture”、“It’s a nature photo”、“This is a natural image”、“That’s a shot from nature”。目的确保新引入的词汇不会对CLIP-VIT擅长的自然图像数据造成干扰

  1. Vary-base(合并后再训练)
  • 文档数据:除了文档数据外,还需要支持公式和表格等格式的数据。
    处理方式:

    • 从arxiv收集一些.tex源文件,使用正则表达式提取表格、数学公式和纯文本。
    • 使用pdflatex重新渲染这些内容,并收集100万张英文页面和40万张中文页面。
    • 将每个文档页的文本基准转换为mathpix markdown格式,以统一格式。
  • 图表数据:使用GPT-4生成相关语料库,并利用高质量的语料库渲染20万张图表数据用于Vary-base训练。处理方式:

    • 使用GPT-4生成图表,确保图表中的文本(如标题、x轴和y轴值)具有强相关性。
  • 通用数据:使用LAION-COCO数据集随机提取自然图像文本对(400万对图像文本对)。在预训练和微调阶段使用这些数据进行训练。

格式遵循LLaVA-MPT sft格式:

<|im_start|>user: <img>"<image>"</img> "texts
input"<|im_end|> <|im_start|>assistant: "texts output" <|im_end|>

实验

GOT-OCR

GOT-OCR是Vary的后续,提出了通用OCR理论(OCR-2.0)及其模型GOT,用于解决OCR-1.0系统的局限性和LVLMs的不适用性问题。GOT模型采用统一的端到端架构,包括一个高压缩率的编码器和一个长上下文长度的解码器。编码器使用VitDet结构,具有约80M参数,能够处理1024x1024的输入图像。解码器使用Qwen模型,具有约0.5B参数,支持8K的最大长度tokens,以确保能够处理长上下文场景。

模型架构上分三部分:vision encoder + 线性层 + LLM。注意这里的encoder是一个80M的小模型(VitDet结构),并非CLIP,需要从头训练

GOT的训练分为三个阶段:

  • 预训练阶段:使用Tiny OPT-125M(为了节省GPU资源)对视觉编码器进行纯文本识别任务的预训练。输入图像被调整为1024x1024的方形,并使用自然场景和裁剪切片进行训练。

  • 联合训练阶段:将预训练的视觉编码器连接到更大的Qwen-0.5B解码器,并使用更多的通用OCR数据进行训练,如乐谱、数学公式和几何形状。

  • 后训练阶段:通过细粒度、多裁剪/页面的合成数据进一步改进GOT的泛化能力和适用性,支持区域提示OCR、超大图像OCR和批量PDF OCR特征。

下面展开看一下:

阶段一:纯文本识别任务的预训练(Pre-training of the Vision Encoder)

在第一个阶段,主要目标是预训练视觉编码器(vision encoder),以便它能够有效地处理常见的场景文本和文档级字符。

方法:为了提高训练效率和节省GPU资源,选择了一个小型的解码器(例如OPT-125M)来传递梯度给编码器。将包含场景文本的图像和包含文档级字符的手动图像输入到模型中。这样可以让编码器学习到两种最常见的字符编码能力。由于高分辨率图像的计算成本较高,选择了具有局部注意力机制的VitDet(base版本,约80M参数)作为编码器结构。该编码器可以将1024x1024x3的输入图像转换为256x1024的图像标记。最后通过一个1024x768的线性层,将这些图像标记投影到语言模型(如OPT-125M)的维度。

数据

  • 自然场景数据:英文图像:来自Laion-2B数据集。中文图像:来自Wukong数据集。使用PaddleOCR工具从这些多样化真实场景中捕获伪GT。总共获得200万(2M)数据,其中一半是中文,一半是英文。
  • 文档级数据:从Common Crawl收集开源PDF样式文件。
    使用Fitz Python包提取相应的密集文本内容。
    获得120万(1.2M)全页PDF样式图像-文本对和80万(0.8M)图像切片数据。
    切片数据包括行级和段落级,通过解析边界框从PDF图像中裁剪出来。

处理过程:对于自然场景数据,进行两种类型的处理:

  1. 移除边界框并按从上到下、从左到右的顺序合并每个文本内容。
  2. 根据边界框从原始图像中裁剪文本区域并保存为图像切片。

后一种方法获得了另外100万(1M)切片类型图像-文本对。

阶段二:多任务联合训练(Joint-training of the Encoder with a New Decoder)

在第二个阶段,目标是通过连接预训练的视觉编码器到一个新的、更大的解码器来扩展GOT的知识,以处理更通用的OCR任务。

方法:将第一阶段预训练的视觉编码器连接到具有更强能力的更大语言模型(例如Qwen-0.5B,500M参数)上,构建GOT的最终架构。将连接器(即线性嵌入层)的维度调整为1024x1024,以与Qwen-0.5B的输入通道对齐(1024*1024的图像最终被压缩为256个tokens再输入到LLM)。这个过程中,准备大量更通用的OCR数据(如乐谱、数学/分子公式和几何形状),以扩展OCR-2.0知识。

数据

  • 普通OCR数据:使用前一阶段的数据,并添加手写文本识别子任务,涉及不同语言的各种手写字体。上一阶段数据的80%(300万(3M)场景文本OCR数据和200万(2M)文档OCR数据)用于这阶段,并追加手写场景的OCR,数据来自Chinese CASIA-HWDB2 [ 1], English IAM [2], and Norwegian NorHand-v3,原数据的line-level slice会被6到8个地组合在一起当作longer-text。

  • 数学公式数据:从Arxiv爬取大量LATEX源.tex文件,提取约100万(1M)公式片段。
    将公式源转换为Mathpix格式,并使用Chrome-driver调用Mathpix-markdown-it工具将其渲染为HTML格式。
    将HTML文件转换为SVG并保存为PNG图像。

  • 分子公式数据:下载ChEMBL_25文件,包含200万(2M)smile源。
    使用Mathpix-markdown-it工具和rdkit.Chem包收集约100万(1M)分子公式图像-文本对。

  • 表格数据:从爬取的.tex文件中提取约30万(0.3M)表格源,并将其渲染为图像。使用IATEX作为渲染工具,因为其对高级表格的渲染效果更好。

  • 全页数据:使用Nougat方法获得约50万(0.5M)英文markdown PDF文本对。参照Vary方法,收集另外50万(0.5M)中文markdown对,并将其内容转换为Mathpix格式。还添加了20万(0.2M)内部数据,这些数据是使用Mathpix直接标记的,包括书籍、论文和财务报告。

  • 更通用的OCR数据乐谱数据:选择GrandStaff数据集作为源进行渲染。从音乐摘录中提取Humdrum kern转录,生成约50万(0.5M)样本。几何形状数据:使用TikZ风格的点和线,构造简单的几何形状和函数曲线,生成约100万(1M)几何Tikz数据。图表数据:使用Matplotlib和Pyecharts工具渲染图表图像-文本对,生成200万(2M)图表数据,其中一半来自Matplotlib,另一半来自Pyecharts。

阶段三:解码器的进一步后训练(Further Post-training of the Decoder)

二阶段训练后GOT已经能进行多场景OCR了。现在只对解码器部分进行后训练来定制GOT以启用三个新特性,即细粒度、多页面和动态分辨率OCR。在第三个阶段,目标是进一步提高GOT的泛化能力和适用性,通过后训练解码器来定制新的OCR特征。

方法:在不修改视觉编码器的情况下,通过后训练解码器来定制GOT,以支持细粒度、多页和动态分辨率OCR等新功能。

数据:生成细粒度的交互式OCR数据、多页OCR数据和动态分辨率数据,以支持区域提示OCR、超大图像OCR和批量PDF OCR功能。

  • 细粒度数据

    • 自然细粒度OCR:数据集:RCTW、ReCTS、ShopSign和COCO-Text。这些数据集提供文本边界框,可以直接用于生成细粒度(区域/颜色提示)OCR数据。
    • 文档级细粒度OCR:从下载的PDF文件中过滤出扫描格式的文件,使用Python包(Fitz/PDFminer)解析左侧部分。记录页面级图像、每行/段落的边界框及相应文本,生成box-guided OCR子任务的GT。每个坐标值首先标准化,然后放大1000倍。选择红色、绿色和蓝色作为最常用的颜色框架,并在原始图像上绘制它们。
  • 多裁剪数据:支持1024x1024输入分辨率,适用于常见OCR任务。使用InternVL-1.5裁剪方法,最大瓷砖数为12。使用单页PDF数据合成超高分辨率图像,包括水平和垂直拼接。通过这种方法,获得50万(50万)图像-文本对。

  • 多页数据:从Mathpix格式的PDF数据中随机采样2-8页,组成单个OCR任务。每个选定的页面包含的文本少于650个标记,以确保总长度不超过8K。生成约20万(20万)多页OCR数据,大部分是中文和英文页面交替的。

实验

总结

笔者关注vary和GOT已久,抽空做了下技术思路记录,GOT是Vary的后续,GOT通过三个阶段的训练,模型能够逐步提升其在各种OCR任务上的性能,从基础的纯文本识别到处理更复杂的格式化和通用OCR任务。每个阶段的训练都注重不同的数据类型和任务,确保模型在多样化的应用场景中都能表现出色。笔者在折腾过程中,这个链路的一阶段的数据搞起来太伤身了,可以直接在开源权重上进行post-train,二/三阶段微调后发现效果也达不到落地的效果,数据质量和数量都需要进一步的提升。目前该技术链路可以是多模态OCR-free模型打样。

参考文献

  • Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models,https://arxiv.org/abs/2312.06109
  • General OCR Theory: Towards OCR-2.0 via a Unified End-to-end Model,https://arxiv.org/abs/2409.01704

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在 Ubuntu 22.04 上使用 Fail2Ban 保护 SSH

前言 SSH&#xff0c;这玩意儿&#xff0c;简直是连接云服务器的标配。它不仅好用&#xff0c;还很灵活。新的加密技术出来&#xff0c;它也能跟着升级&#xff0c;保证核心协议的安全。但是&#xff0c;再牛的协议和软件&#xff0c;也都有可能被攻破。SSH 在网上用得这么广&…

供应链系统设计-中台系统设计系列(三)- 好中台的标准之稳定原则

概述 在上一篇供应链系统设计-中台系统设计系列&#xff08;二&#xff09;- 好中台的标准之复用原则中&#xff0c;我们以复用原则为主&#xff0c;讨论了以下3点&#xff1a; 前台业务效率提升&#xff1a;好的中台能够显著提高前台业务的效率&#xff0c;通过将前台业务中通…

CTF 攻防世界 Web: FlatScience write-up

题目名称-FlatScience 网址 index 目录中没有发现提示信息&#xff0c;链接会跳转到论文。 目前没有发现有用信息&#xff0c;尝试目录扫描。 目录扫描 注意到存在 robots.txt 和 login.php。 访问 robots.txt 这里表明还存在 admin.php admin.php 分析 在这里尝试一些 sql…

axios请求拦截器和响应拦截器,封装naive-ui的 Loading Bar加载条和useMessage消息提示

接之前的博客设计从0开始边做边学&#xff0c;用vue和python做一个博客&#xff0c;非规范化项目&#xff0c;怎么简单怎么弄&#xff0c;跑的起来有啥毛病解决啥毛病&#xff08;三&#xff09;&#xff0c;目前已经完成了基本的功能demo&#xff0c;但是请求接口不可能每个页…

Blue Ocean 在Jenkins上创建Pipeline使用详解

BlueOcean是Jenkins的一个插件,它提供了一套可视化操作界面来帮助用户创建、编辑Pipeline任务。以下是对BlueOcean中Pipeline操作的详细解释: 一、安装与启动BlueOcean 安装:在Jenkins的“系统管理”->“插件管理”->“可选插件”中搜索“BlueOcean”,然后点击“Ins…

opencv——识别图片颜色并绘制轮廓

图像边缘检测 本实验要用到Canny算法&#xff0c;Canny边缘检测方法常被誉为边缘检测的最优方法。 首先&#xff0c;Canny算法的输入端应为图像的二值化结果&#xff0c;接收到二值化图像后&#xff0c;需要按照如下步骤进行&#xff1a; 高斯滤波。计算图像的梯度和方向。非极…

基础库urllib的使用

学习爬虫&#xff0c;其基本的操作便是模拟浏览器向服务器发出请求&#xff0c;那么我们需要从哪个地方做起呢?请求需要我们自己构造吗?我们需要关心请求这个数据结构怎么实现吗?需要了解 HTTP、TCP、IP层的网络传输通信吗?需要知道服务器如何响应以及响应的原理吗? 可能…

剑指Offer|day4 LCR 004. 只出现一次的数字 II

LCR 004. 只出现一次的数字 II 给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 **三次 。**请你找出并返回那个只出现了一次的元素。 示例 1&#xff1a; 输入&#xff1a;nums [2,2,3,2] 输出&#xff1a;3提示&#xff1a…

Mysql学习笔记之SQL-1

上篇文章我们介绍了Mysql的安装&#xff0c;这篇文章我们介绍Mysql的操作语言SQL 1. 简介 sql全称&#xff08;Structured Query Language&#xff09;是结构化查询语言&#xff0c;操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准 2. sql分类 …

埃隆马斯克X-AI发布Grok-2大模型,快来体验~

引言 近年来&#xff0c;人工智能技术的快速发展推动了大语言模型的广泛应用。无论是日常生活中的智能助手&#xff0c;还是行业中的自动化解决方案&#xff0c;大语言模型都扮演着越来越重要的角色。2024年&#xff0c;X-AI推出了新一代的大模型——Grok-2&#xff0c;这款模…

PostgreSQL的学习心得和知识总结(一百六十三)|深入理解PostgreSQL数据库之 GUC参数compute_query_id 的使用和实现

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

多线程编程杂谈(上)

问题 线程执行的过程中可以强制退出吗&#xff1f; 主动退出&#xff1f;被动退出&#xff1f; 问题抽象示例 需要解决的问题 g_run 全局变量需要保护吗&#xff1f; 如何编码使得线程中每行代码的执行可被 g_run 控制&#xff1f; 线程代码在被 g_run 控制并 "强制退…

【Git】:企业级开发和多人协作开发啊

目录 多人协作 模拟配置多人协作环境 多人同一分支开发 多人不同分支开发 远程分支删除后的问题 企业级开发模型 系统开发环境 分支设计规范 多人协作 模拟配置多人协作环境 目前&#xff0c;我们所完成的工作如下&#xff1a; 基本完成 Git 的所有本地库的相关操作&#xff…

【Sql优化】数据库优化方法、Explain使用

文章目录 一、金字塔优化模型二、SQL优化的利器&#xff1a;Explain工具1. Explain 的作用2. Explain 的用法 三、SQL优化方法&#xff08;后续文章细讲&#xff09;1. 创建索引减少扫描量2. 调整索引减少计算量3. 索引覆盖4. 干预执行计划5. SQL改写 四、通过 Explain 优化案例…

Deepmotion技术浅析(五):运动追踪

运动追踪是 DeepMotion 动作捕捉和 3D 重建流程中的核心模块之一。该模块的主要任务是在视频序列中跟踪人体的运动轨迹&#xff0c;捕捉人体各部分随时间的变化&#xff0c;并生成连续的 3D 运动数据。DeepMotion 的运动追踪技术结合了计算机视觉、深度学习和物理模拟等方法&am…

Android 系统应用重名install安装失败分析解决

Android 系统应用重名install安装失败分析解决 文章目录 Android 系统应用重名install安装失败分析解决一、前言1、Android Persistent apps 简单介绍 二、系统 persistent 应用直接安装需求分析解决1、系统应用安装报错返回的信息2、分析解决 三、其他1、persistent系统应用in…

使用Nexus3搭建npm私有仓库

一、npm介绍 npm的全称是Node Package Manager&#xff0c;它是一个开放源代码的命令行工具&#xff0c;用于安装、更新和管理Node.js模块。npm是Node.js的官方模块管理器&#xff0c;它允许用户从一个集中的仓库中下载和安装公共的Node.js模块&#xff0c;并将这些模块集成到…

【ChatGPT】解锁AI思维链:如何让机器像人类一样思考?

在人工智能领域&#xff0c;我们一直在追求让机器像人类一样思考。然而&#xff0c;即使是最先进的AI&#xff0c;也常常被诟病缺乏“常识”&#xff0c;难以理解复杂问题&#xff0c;更不用说像人类一样进行逻辑推理和解决问题了。最经常的表现就是遇到不会的地方&#xff0c;…

蓝桥杯刷题——day5

蓝桥杯刷题——day5 题目一题干解题思路一代码解题思路二代码 题目二题干解题思路代码 题目一 题干 给定n个整数 a1,a2,⋯ ,an&#xff0c;求它们两两相乘再相加的和&#xff0c;即&#xff1a; 示例一&#xff1a; 输入&#xff1a; 4 1 3 6 9 输出&#xff1a; 117 题目链…

监测预警智能分析中心建设项目方案

随着科技的不断进步&#xff0c;地理信息与遥感技术在国家治理、环境保护、灾害预警等领域发挥着越来越重要的作用。监测预警智能分析中心的建设&#xff0c;旨在通过集成先进的遥感技术、地理信息系统&#xff08;GIS&#xff09;、大数据分析和人工智能&#xff08;AI&#x…