基于Vision Transformer的Latex公式识别系统的设计与实现
创始人
2025-06-28 10:01:49
0

近年来深度学习,在图像与自然语言处理领域取得显著成效.而这其中像ResNet、Transformer等网络发挥着巨大作用。本系列以https://github.com/lukas-blecher/LaTeX-OCR为例,阐述下如何基于人工智能技术实现latex公式识别服务。本系列主要分为3篇,分别从系统构建(环境+训练)、系统原理(代码层面)、系统的增强三个部分展开论述。

环境构建

查看cuda版本

下面看到,cuda版本最高支持到12.1,我们下面选用的cu116。

gpu版本查看

创建conda环境

conda env create -f 下述文件。

name: latex3.9
channels:
		- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
		- conda-forge
dependencies:
      - python=3.9
      - pip
      - pip:
            - tqdm>=4.47.0
            - munch>=2.5.0
            - torch==1.13.1+cu116
            - opencv_python_headless>=4.1.1.26
            - requests>=2.22.0
            - einops>=0.3.0
            - x_transformers==0.15.0
            - transformers>=4.18.0
            - tokenizers>=0.13.0
            - numpy>=1.19.5
            - Pillow>=9.1.0
            - PyYAML>=5.4.1
            - pandas>=1.0.0
            - timm==0.5.4
            - albumentations>=0.5.2
            - pyreadline3>=3.4.1
            - python-Levenshtein>=0.12.2
            - torchtext>=0.6.0
            - imagesize>=1.2.0
            - wandb>=0.15.5
            - --extra-index-url https://download.pytorch.org/whl/cu116

检查pytorch与gpu是否兼容

import torch

if torch.cuda.is_available():
		cuda_version = torch.version.cuda
		print(f"PyTorch CUDA版本为: {cuda_version}")

		# 检查CUDA版本是否与PyTorch兼容
		if torch.backends.cudnn.version() is None:
				print("PyTorch不支持当前CUDA版本")
		else:
				print("PyTorch支持当前CUDA版本")
else:
		print("PyTorch不支持GPU加速")

数据准备

准备数据(包括训练集+验证集+测试集)

现在训练测试数据集,然后放的位置很讲究!

数据存放位置

  • activate latex3.9 (这个在windows上执行,linux上 conda activate latex3.9)
  • python -m pix2tex.dataset.dataset --equations data/math.txt --images data/train --out data/train.pkl
  • python -m pix2tex.dataset.dataset --equations data/math.txt --images data/val--out data/val.pkl
  • python -m pix2tex.dataset.dataset --equations data/math.txt --images data/test--out data/test.pkl

训练调试

Pycharm上debug训练代码

注:参数--config D:\LanJing\LaTeX-OCR-main\pix2tex\model\settings\debug.yaml --debug。

pycharm配置

debug.yaml配置修改

一轮epoch结束

加速训练

为了加速训练过程,可以使用提供的权重,并更新配置文件使用权重。该步骤也叫做fine tune。

下载 https://github.com/lukas-blecher/LaTeX-OCR/releases/download/v0.0.1/weights.pth

访问权重路径

训练测试数据

https://drive.google.com/drive/folders/13CA4vAmOmD_I_dSbvLp-Lf0s6KiaNfuO。

数据集解释

接下来在第二篇中我会重点介绍下,代码的实现,如何构建这样一个训练网络,以及它的关键代码,尤其是数据shape是如何变化的。

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...