特色模型开源!飞桨PP系列新成员PP-FormulaNet助力大模型科研数据构建,公式识别提速16倍

背景介绍
公式作为科学文献、技术文档及教育资料的核心知识载体,承载着人类文明的抽象逻辑与数学表达。随着大语言模型、多模态模型及科学计算智能化的发展,‌结构化解析公式语义‌已成为构建科研知识图谱、增强AI数学推理能力的关键突破点。基于公式识别技术对学术论文、工程图纸等场景中的行间公式、行内公式及手写公式进行结构化解析,可为多模态大模型训练注入精准的数学符号表达,显著提升AI在科研领域的问题求解、定理推导能力。同时,公式识别也可以和大模型应用结合起来,一方面提供文档图像中公式的精准识别能力,辅助数学领域大语言模型对文档图像中的题目求解,另一方面,可以助力科研领域的知识库构建

一、当前技术挑战‌

‌1. 复杂公式结构识别困难‌:现有公式识别模型对嵌套分数、多行方程组及矩阵等拓扑结构的识别误差率较高。
2‌. 推理时间慢:对于很多公式来说,包含的token数量往往有上百个,公式识别模型需要token by token的方式去预测,导致当前高精度公式识别模型在GPU上推理时间往往在2秒以上,在CPU上,推理时间则可能飙升至10秒以上。所以当一页文档图像中有数十个公式时,CPU的推理预测时间上升到分钟级别,严重影响了效率。

二、PP-FormulaNet的工作

为了解决当前公式识别领域的技术挑战,飞桨团队从模型结构、预训练模型、并行解码预测方式、数据挖掘等方面入手,研发了可应对复杂公式结构识别的PP-FormulaNet-L(比当前最佳开源模型精度高6%)以及推理速度超快的PP-FormulaNet-S(比当前最佳开源模型快16倍)。在此基础上,飞桨团队也将自研的PP-DocLayout和PP-FormulaNet组合了公式识别产线,支持从海量PDF文件中对公式进行高精度定位和识别。

三、效果速览

简单公式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

复杂公式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

手写公式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、算法解读

针对公式识别任务,PP-FormulaNet 系列支持5万种LaTeX常见词汇的识别,涵盖科研论文、试卷中的绝大多数LaTeX语法,允许更精准的文档处理和分析,为后续AI数学推理的精准性和完备性提供有力保障。同时,支持简单印刷公式、复杂印刷公式、手写公式的识别,适用于拍照搜题、论文总结等各种公式识别下游任务,提升文档版面解析的质量。
PP-FormulaNet 系列提供了两个不同尺度的模型,以满足不同场景的需求:

  1. 高精度模型:PP-FormulaNet-L,采用Vary-ViT-B作为视觉编码器、维度为512的MBart Decoder作为公式解码器,其在精度上达到了 92.14 % Avg-BLEU,尤其适合需要高精度的任务场景;在效率上也有所保障,高精度 PP-FormulaNet-L 模型在 NVIDIA Tesla V100 GPU 上平均推理耗时 332.12 ms(batch=15)。
  2. 高效率模型:PP-FormulaNet-S,采用PP-HGNetV2-B4作为视觉编码器,维度为384的MBart Decoder作为解码器,以提升推理速度和降低模型大小为目标,适合于资源受限的环境和实时应用场景。高效率模型在 NVIDIA Tesla V100 GPU上平均推理耗时 32.85 ms (batch=15),相比于UniMERNet速度提升16倍。
    在这里插入图片描述
    注:以上精度指标的评估集包括UniMERNet-1M数据集和自建数据集,GPU 推理耗时基于 NVIDIA Tesla V100 机器,BatchSize为15。

PP-FormulaNet 在数据和算法层面均做了优化

  1. 在数据构建层面,设计了一套智能且精准的公式挖掘系统,能够高效解析论文源码,并支持用户自定义命令的公式自动恢复,从而提高复杂公式的提取效率。
  2. 在算法层面,我们从三个方面进行了优化:
    1) 基于权重插值的预训练模型加载:
    在当今大模型的时代,从头开始对模型进行预训练的成本已经变得极为昂贵。例如,GOT-OCR2.0 训练使用了 64 块 L40s GPU。然而,在实际生产中,为了提高模型的推理效率,通常需要对模型的维度或层数进行裁剪,例如将维度从 1024 降低到 512 或 384,这导致原始预训练权重无法直接应用于裁剪后的模型。鉴于大多数预训练模型采用的是 transformer 架构,我们假设注意力模块中相邻维度具有相似的语义表达,并通过最近邻插值对原始权重进行自适应调整,以便能够有效利用预训练权重的公式表征。在公式识别任务中,加载经过权重插值的预训练权重可以加速模型收敛,并提升其精度和泛化能力。结合表征能力更强的 Vary-ViT-B 视觉编码器,该方法在复杂公式上的 BLEU 分数甚至超越了原始网络。

添加图片注释,不超过 140 字(可选)

2) 基于知识蒸馏的骨干网络轻量化:
PP-FormulaNet-S 的骨干网络采用了蒸馏技术,骨干网络基于Vary-ViT-B蒸馏得到,大幅增强模型在OCR领域的泛化能力。在这里,我们将基于大规模文档数据训练得到的 GOT-OCR2.0 模型的视觉编码器Vary-VIT-B作为“教师”模型,而将飞桨自研的高精度骨干网络 PP-HGNetV2-B4 作为“学生”模型。我们收集了大量多种类型的约 50 万文档图像数据,并利用 L2 损失函数,将大模型的输出作为目标,指导小模型的学习。在我们的公式识别任务中,蒸馏后PP-HGNetV2-B4网络相比于原始网络,在简单公式、复杂公式的BLEU分数分别提升了3.45%和5.17%。

添加图片注释,不超过 140 字(可选)

3)多token并行预测技术的公式推理加速:
与传统视觉模型不同,现有公式识别算法一般采用自回归生成架构,对于单张公式图像往往需要循环多步进行推理,裁剪网络深度和维度会影响到模型的精度,进而影响到网络对终止步数的判断,并延长网络的推理步数,因此并不一定可以带来公式识别模型推理效率的提升。为了解决这一问题,我们通过改进因果注意力掩码和训练中输入输出的对应关系,使得公式解码器可以在一步中预测多个 token 序列,从而大幅提高模型的推理效率。基于这一技术,在牺牲一定精度的情况下,并行步数为 2、3、4 和 5 分别可以带来 2.05 倍、2.86 倍、3.77 倍和 4.63 倍的速度提升。由于自回归模型的推理耗时主要集中在解码器的循环解码部分,而骨干网络仅需进行一次推理,对整体公式模型的推理耗时影响较小。因此,在Vary-VIT-B上获得的实验结果对于PP-HGNetV2-B4同样具有适用性。经过对准确性和速度的权衡,PP-FormulaNet-S 模型最终选择了 3 作为多 token 预测的并行步数。
添加图片注释,不超过 140 字(可选)

五、使用方法

安装
· 安装PaddlePaddle

# CPU 版本
python -m pip install paddlepaddle==3.0.0rc0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/

# GPU 版本,需显卡驱动程序版本 ≥450.80.02(Linux)或 ≥452.39(Windows)
python -m pip install paddlepaddle-gpu==3.0.0rc0 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/

# GPU 版本,需显卡驱动程序版本 ≥545.23.06(Linux)或 ≥545.84(Windows)
python -m pip install paddlepaddle-gpu==3.0.0rc0 -i https://www.paddlepaddle.org.cn/packages/stable/cu123/

· 安装PaddleX Wheel包

pip install https://paddle-model-ecology.bj.bcebos.com/paddlex/whl/paddlex-3.0.0rc0-py3-none-any.whl

1)预测公式图片
PaddleX 提供了简单易用的 Python API,只需几行代码即可体验模型预测效果,可以下载测试图片,方便大家快速体验效果:
https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_formula_rec_001.png

from paddlex import create_model
model = create_model(model_name="PP-FormulaNet-L")
output = model.predict(input="general_formula_rec_001.png", batch_size=1)
for res in output:
    res.print()
    res.save_to_img(save_path="./output/")
    res.save_to_json(save_path="./output/res.json")

上述代码中:
1.首先使用模型名称调用 create_model() 方法实例化对象;
2.然后使用 predict() 方法进行预测,对于预测结果支持 print() 方法进行打印,save_to_img() 方法进行可视化并保存为图片以及 save_to_json() 方法保存预测的结构化输出。
下图中,左图为测试图像,右图为 PP-FormulaNet-L 的识别结果。
在这里插入图片描述

2)预测文档图像或PDF文件
PaddleX同时将版面区域检测模型PP-DocLayout模型和PP-FormulaNet结合,开发了公式识别产线,支持直接预测包含公式的文档图像,可以下载测试图片,方便大家快速体验效果:
https://paddle-model-ecology.bj.bcebos.com/paddlex/demo_image/pipelines/general_formula_recognition_001.png

from paddlex import create_pipeline

pipeline = create_pipeline(pipeline="formula_recognition")

output = pipeline.predict(
    input="./general_formula_recognition_001.png",
    use_layout_detection=True ,
    use_doc_orientation_classify=False,
    use_doc_unwarping=False,
    layout_threshold=0.5,
    layout_nms=True,
    layout_unclip_ratio=1.0,
    layout_merge_bboxes_mode="large"
)
for res in output:
    res.print()
    res.save_to_img(save_path="./output/")
    res.save_to_json(save_path="./output/")
  1. 首先使用产线名称调用 create_pipeline() 方法实例化对象;
  2. 然后使用 predict() 方法进行预测,对于预测结果支持 print() 方法进行打印,save_to_img() 方法进行可视化并保存为图片以及 save_to_json() 方法保存预测的结构化输出。
    下图中,左图为测试图像,右图为公式识别产线(PP-DocLayout-L+PP-FormulaNet-L)的识别结果。其中,PP-DocLayout-L负责对公式区域做检测,PP-FormulaNet-L负责对检测到的公式做识别。

添加图片注释,不超过 140 字(可选)

此外,调用模型的 predict() 方法进行推理预测时,predict() 方法参数支持传入公式识别产线后处理参数,方便用户根据自己的场景做部署调优:
· use_layout_detection: 使用版面区域检测模块,布尔类型,用于指定是否使用版面区域检测模块,启动该功能,可以自动对于图像进行版面区域检测;
· use_doc_orientation_classify: 使用文档方向分类模块,布尔类型,用于指定是否使用文档方向分类模块,启动该功能,可以自动对于图像进行方向分类;
· use_doc_unwarping: 使用文档扭曲矫正模块,布尔类型,用于指定是否使用文档扭曲矫正模块,启动该功能,可以自动对于图像进行扭曲矫正;
· layout_threshold: 动态阈值调整,支持传入浮点数或自定义各个类别的阈值字典,为每个类别设定专属的检测得分阈值。这意味着您可以根据自己的数据,灵活调节漏检或误检的情况,确保每一次检测更加精准;
· layout_nms : 重叠框过滤,布尔类型,用于指定是否使用NMS(非极大值抑制)过滤重叠框,启用该功能,可以自动筛选最优的检测结果,消除多余干扰框;
· layout_unclip_ratio: 可调框边长,不再局限于固定的框大小,通过调整检测框的缩放倍数,在保持中心点不变的情况下,自由扩展或收缩框边长,便于输出正确完整的版面区域内容;
· layout_merge_bboxes_mode: 框合并模式,模型输出的检测框的合并处理模式,可选“large”保留外框,“small”保留内框,不设置默认保留所有框。例如一个图表区域中含有多个子图,如果选择“large”模式,则保留一个图表最大框,便于整体的图表区域理解和对版面图表位置区域的恢复,如果选择“small”则保留子图多个框,便于对子图进行一一理解或处理。在下游任务中无论是想突出整体,还是聚焦细节,都能轻松实现。

服务化部署
·PaddleX同样对公式识别产线提供了服务化部署的能力,通过将公式识别的推理功能封装为服务,允许客户端通过网络请求来访问这些服务,以获取公式的推理结果。
· PaddleX提供了两种服务化部署的方式,分别是基础服务化部署和高稳定性服务化部署。其中基础服务化部署是简单易用的服务化部署方案,开发成本低,方便用户快速部署和调试效果。高稳定性服务化部署是基于NVIDIA Triton Inference Server打造的更高稳定性且允许更高性能的服务化部署方式。

二次开发
如果对模型效果满意,可以直接对产线进行高性能推理/服务化部署/端侧部署,如果您的公式场景特别垂直,效果还有进一步优化空间,您也可以使用 PaddleX 进行便捷高效的二次开发,使用自己场景的数据对模型微调训练获得更优的精度。基于 PaddleX 便捷的二次开发能力,使用统一命令即可完成数据校验、模型训练与评估推理,无需了解深度学习的底层原理,按要求准备好场景数据,简单运行命令即可完成模型迭代,此处展示公式识别模型二次开发流程:

FLAGS_json_format_model=1 python main.py -c paddlex/configs/modules/formula_recognition/PP-FormulaNet-L.yaml  \
    -o Global.mode=train \
    -o Global.dataset_dir=./dataset/ocr_rec_latexocr_dataset_example

上述命令中:main.py 为模型开发统一入口文件;-c 用于指定模型配置文件的参数,模型配置文件 PP-FormulaNet-L.yaml中包含了模型的信息,如模型名、学习率、批次大小等,其中 mode 支持指定数据校验(dataset_check)、训练(train)、评估(evaluate)、模型导出(export)和推理(predict)。更多参数也可以继续在命令中追加参数设置或可通过修改.yaml配置文件中的具体字段来进行设置。
其余更详细的使用方法及产线部署、自定义数据集相关的内容,请参考PaddleX官方教程文档:
公式识别模块使用教程
https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-rc/docs/module_usage/tutorials/ocr_modules/formula_recognition.md
公式识别产线使用教程
https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-rc/docs/pipeline_usage/tutorials/ocr_pipelines/formula_recognition.md

精彩课程

为了帮助您迅速且深入地了解公式识别全流程解决方案,百度研发工程师精心打造视频精讲课程,为您深度解析本次技术升级。此外,我们还开设了针对公式识别产线的产业场景实战营,配套详细教程文档,手把手带您体验从数据准备、数据校验、模型训练、性能优化到模型部署的完整开发流程。机会难得,立即点击链接报名https://www.wjx.top/vm/OtXmbET.aspx?udsid=372346
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值