UniMERNet - 数学公式识别转LaTeX

news2024/9/21 2:49:24

文章目录

    • 一、关于 UniMERNet
      • 演示视频
    • 二、快速入门
      • 1、克隆repo并下载模型
      • 2、安装
      • 3、运行UniMERNet
    • 四、评估
      • 1、下载UniMER-Test数据集
      • 2、运行评估代码
      • 3、与SOTA方法的性能比较(BLEU)
      • 4、不同方法的可视化结果
    • 五、UniMER数据集
      • 1、导言
      • 2、数据集下载
    • 六、其它
      • 1、待办事项
      • 2、引文
      • 3、致谢


一、关于 UniMERNet

UniMERNet 这是一个将数学表达式的图像转换为LaTeX的解决方案,适用于广泛的现实世界场景。

  • github : https://github.com/opendatalab/UniMERNet
  • Paper : https://arxiv.org/abs/2404.15254
  • Dataset (OpenDataLab) : https://opendatalab.com/OpenDataLab/UniMER-Dataset
  • Dataset (Hugging Face) : https://huggingface.co/datasets/wanderkid/UniMER_Dataset
  • Models (Hugging Face) : https://huggingface.co/wanderkid/unimernet
  • 联系:wangbin@pjlab.org.cn

演示视频

  • DirectRecognition.mp4
  • MunualSelection.mp4

二、快速入门


1、克隆repo并下载模型

git clone https://github.com/opendatalab/UniMERNet.git

cd UniMERNet/models
# Download the model and tokenizer individually or use git-lfs
git lfs install
git clone https://huggingface.co/wanderkid/unimernet

2、安装

conda create -n unimernet python=3.10

conda activate unimernet

pip install --upgrade unimernet

3、运行UniMERNet

  1. Streamlight应用程序:要获得交互式和用户友好的体验,请使用我们基于Streamlight的GUI。此应用程序允许实时公式识别和渲染。
unimernet_gui

确保为流线型GUI应用程序安装了最新版本的UniMERNet(pip install --upgrade unimernet)。


  1. 命令行演示:从图像中预测LaTeX代码。
python demo.py

  1. Jupyter笔记本演示:从图像中识别和渲染公式。
jupyter-lab ./demo.ipynb

四、评估


1、下载UniMER-Test数据集

下载UniMER-Test数据集并将其解压缩到以下目录:

./data/UniMER-Test

2、运行评估代码

python test.py --cfg configs/demo.yaml

3、与SOTA方法的性能比较(BLEU)

UniMERNet在识别真实世界的数学表达式方面明显优于主流模型,在简单打印表达式(SPE)、复杂打印表达式(CPE)、屏幕捕获表达式(SCE)和手写表达式(HWE)中展示了卓越的性能,BLEU分数比较评估证明了这一点。

在这里插入图片描述


4、不同方法的可视化结果

UniMERNet在具有挑战性的样本的视觉识别方面表现出色,优于其他方法。

在这里插入图片描述


五、UniMER数据集


1、导言

UniMER数据集是一个专门的集合,旨在推进数学表达式识别(MER)领域。它包含全面的UniMER1M训练集,其中包含100多万个代表各种复杂数学表达式的实例,以及UniMER测试集,该测试集精心设计,用于根据现实世界的场景对MER模型进行基准测试。数据集详情如下:

UniMER-1M训练集:

  • 总样品:1,061,791乳胶图像对
  • 组成:简洁和复杂的平衡组合,扩展公式表达式
  • 目的:训练鲁棒、高精度的MER模型,提高识别精度和泛化能力

UniMER测试集:

  • 样本总数:23757,分为四种类型的表达:
    • 简单打印表达式(SPE):6,762个样本
    • 复杂印刷表达(CPE):5,921个样本
    • 屏幕捕获表达式(SCE):4,742个样本
    • 手写表达式(HWE):6,332个样本
  • 目的:提供对现实世界条件范围内的MER模型的全面评估

2、数据集下载

您可以从OpenDataLab(推荐给中国用户)或HuggingFace下载数据集。


六、其它

1、待办事项

  • 发布UniMERNet的推理代码和检查点。
  • 发布UniMER-1M和UniMER-测试。
  • 开源Streamlight公式识别GUI应用程序。
  • 发布UniMERNet的训练代码。

2、引文

如果您发现我们的模型/代码/论文对您的研究有用,请考虑给我们一个⭐并引用我们的工作📝,谢谢:)

@misc{wang2024unimernet,
      title={UniMERNet: A Universal Network for Real-World Mathematical Expression Recognition}, 
      author={Bin Wang and Zhuangcheng Gu and Chao Xu and Bo Zhang and Botian Shi and Conghui He},
      year={2024},
      eprint={2404.15254},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

3、致谢

  • VIGC。模型框架依赖于VIGC。
  • Texify。一种主流的MER算法,UniMERNet数据处理指的是Texify。
  • Latex-OCR。另一种主流MER算法。
  • Donut。UniMERNet的变压器编码器-解码器引用自甜甜圈。
  • Nougat。标记器使用牛轧糖。

2024-07-21(日)

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

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

相关文章

【Linux 13】文件系统

文章目录 🌈 一、前言🌈 二、文件操作的系统接口⭐ 1. 打开文件 open⭐ 2. 关闭文件 close⭐ 3. 写入文件 write⭐ 4. 读取文件 read 🌈 三、文件描述符⭐ 1. 文件描述符介绍⭐ 2. 提前被分配的文件描述符 0 1 2⭐ 3. 文件描述符的分配规则 &…

【Qt】Qt的坐标转换(mapToGlobal)

1、QPoint QWidget::mapToGlobal(const QPoint &pos) const 将小部件坐标转换为全局坐标。mapToGlobal(QPoint(0,0))可以得到小部件左上角像素的全局坐标。2、QPoint QWidget::mapToParent(const QPoint &pos) const 将小部件坐标转换为父部件坐标。如果小部件没有父部…

Linux内存的概念及管理

1、内存概念 内存是指计算机中所安装的随机存取内存的容量,储存是指计算机内硬盘的容量。硬盘应当是计算机的“外存”。内存应当是在主板上的一些存储器,用来保存CPU运算使用过程中的中间数据和计算结果,当不用这些数据时,它们被保…

鸿蒙仓颉语言【Redis仓颉语言客户端】

特性 支持RESP2和RESP3协议接口设计兼容jedis接口语义丰富的管理命令支持支持单连接多线程模式支持发布订阅模式支持哨兵模式和集群模式完备的单元测试覆盖架构简洁,易于扩展 开发计划 2024.3.22 完成支持单机模式的RESP2和RESP3协议的客户端,提供Bet…

实际生活中网段不通的典型分析及处理方案

关于端口: 应用层: FTP TELNET SMTP DNS TFTP SNMP 端口号: 21 23 25 53 69 161 传输层: TCP UDP(DNS两个都占…

7月21日,贪心练习

大家好呀,今天带来一些贪心算法的应用解题、 一,柠檬水找零 . - 力扣(LeetCode) 解析: 本题的贪心体现在对于20美元的处理上,我们总是优先把功能较少的10元作为找零,这样可以让5元用处更大 …

野兔在线工具箱系统全新升级改版,基于TP8和yetuadmin后台实现

野兔在线工具箱系统全新升级改版,基于TP8和yetuadmin后台实现 系统名称:野兔在线工具系统 系统语言:支持多语言,大概有20种 系统源码:不加密,开源 系统开发:PHPMySQL (基于thinkphp8&#x…

重发布路由策略实验

实验要求 1.搭建拓扑 路由策略分析: 拓扑左边是rip协议,右边是ospf协议,想要实现全网可达可以采用多点双向重发布的方式。 对于rip协议使用偏移列表来干涉选路,对于ospf协议采用路由策略来干涉选路 2.配置ip r1 [AR1]interfac…

【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理

初阶数据结构相关知识点可以通过点击以下链接进行学习一起加油!时间与空间复杂度的深度剖析深入解析顺序表:探索底层逻辑深入解析单链表:探索底层逻辑深入解析带头双向循环链表:探索底层逻辑深入解析栈:探索底层逻辑深入解析队列:探索底层逻辑深入解析循环队列:探索…

什么是机器学习以及机器学习如今的社会现状!!

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

长效代理IP如何选用及代理服务分析

在这个数据为王、信息瞬息万变的时代,长效代理IP成为了众多开发者、数据科学家乃至普通网民手中的一把利器。它不仅能帮助我们解决地域管理,还能在保护隐私的同时,确保数据传输的稳定与安全。但面对市面上琳琅满目的代理服务,如何…

飞腾腾云S2500 Nginx单机环回测试性能调优方法

【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适…

Vulnhub靶场DC-7练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集1. 获取用户名/密码2. ssh连接目标主机3. drush命令修改Drupal密码 0x03 漏洞查找与利用1. Drupal写入php木马2. 连接shell3. 反弹shell并提权 0x04 总结 0x00 准备 下载链接:https://download.vulnhub.com/dc/DC-…

深度学习每周学习总结N4:中文文本分类-Pytorch实现(基本分类(熟悉流程)、textCNN分类(通用模型)、Bert分类(模型进阶))

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 目录 0. 总结:1. 基础模型a. 数据加载b. 数据预处理c. 模型搭建与初始化d. 训练函数e. 评估函数f.拆分数据集运行模型g. 结果可…

git命令学习分享

分布式版本控制系统,本地仓库和远程仓库相互独立。 使用repository仓库进行控制,可以对里面的文件进行跟踪,复原。 git config --global --list:查看git配置列表 cd ** :进入** cd .. :退回上一级 echo…

【人工智能】Transformers之Pipeline(四):零样本音频分类(zero-shot-audio-classification)

​​​​​​​ 目录 一、引言 二、零样本音频分类(zero-shot-audio-classification) 2.1 概述 2.2 意义 2.3 应用场景 2.4 pipeline参数 2.4.1 pipeline对象实例化参数​​​​​​​ 2.4.2 pipeline对象使用参数 2.4 pipeline实战 2.5 模…

TinyVue:与 Vue 交往八年的组件库

本文由体验技术团队莫春辉老师原创~ 去年因故停办的 VueConf,今年如约在深圳举行。作为东道主 & 上届 VueConf 讲师的我,没有理由不来凑个热闹。大会结束后,我见裕波在朋友圈转发 Jinjiang 的文章《我和 Vue.js 的十年》,我就…

版本控制工具

版本控制工具是用于记录代码文件变化历史、方便查阅特定版本修改情况的系统,一般分为集中式和分布式两种。以下是一些常见的版本控制工具: 集中式版本控制工具 Subversion(SVN) 简介:Subversion是一种集中式版本控制…

【LeetCode】day15:110 - 平衡二叉树, 257 - 二叉树的所有路径, 404 - 左叶子之和, 222 - 完全二叉树的节点个数

LeetCode 代码随想录跟练 Day15 110.平衡二叉树257.二叉树的所有路径404.左叶子之和222.完全二叉树的节点个数 110.平衡二叉树 题目描述: 给定一个二叉树,判断它是否是 平衡二叉树 平衡二叉树的定义是,对于树中的每个节点,其左右…

文件包含漏洞: 函数,实例[pikachu_file_inclusion_local]

文件包含 文件包含是一种较为常见技术,允许程序员在不同的脚本或程序中重用代码或调用文件 主要作用和用途: 代码重用:通过将通用函数或代码段放入单独的文件中,可以在多个脚本中包含这些文件,避免重复编写相同代码。…