README.md 5.25 KB
Newer Older
dengjb's avatar
dengjb committed
1
# UniMERNet
dengjb's avatar
update  
dengjb committed
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
## 论文
[UniMERNet](https://arxiv.org/abs/2404.15254)

## 模型简介
UniMERNet 是一个深度学习模型,专注于数学公式的识别。它可以从手写或打印的数学公式图像中提取出精确的数学表达式,并将其转换为 LaTeX 代码。LaTeX 是广泛应用于数学、科学和技术领域的排版系统,因此,能够将数学公式转换为 LaTeX 代码对于公式的展示和编辑至关重要。

**主要特点:**
**高精度识别:** 支持手写和打印数学公式的高精度识别。
**实时渲染:** 通过 Streamlit 和 LaTeX 渲染,您可以实时查看公式识别结果。
**多平台支持:** UniMERNet 可以在 Windows、Linux 和 macOS 等操作系统上运行。


## 环境依赖

| 软件 | 版本 |
| :------: | :------: |
| DTK | 25.04.2 |
| python | 3.10.12 |
| transformers | 4.57.1 |
| vllm | 0.11.0+das.opt1.alpha.8e22ded.dtk25042 |
| torch | 2.5.1+das.opt1.dtk25042 |
| triton | 3.1+das.opt1.3c5d12d.dtk25041 |
| flash_attn | 2.6.1+das.opt1.dtk2504 |
| flash_mla | 1.0.0+das.opt1.dtk25042 |

当前仅支持镜像:
- 挂载地址`-v`根据实际模型情况修改

```bash
docker run -it --shm-size 60g --network=host --name minimax_m2 --privileged --device=/dev/kfd --device=/dev/dri --device=/dev/mkfd --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -u root -v /opt/hyhal/:/opt/hyhal/:ro -v /path/your_code_path/:/path/your_code_path/ image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.5.1-ubuntu22.04-dtk25.04.2-py3.10 bash
```
更多镜像可前往[光源](https://sourcefind.cn/#/service-list)下载使用。

关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.sourcefind.cn/tool/)开发者社区下载安装。

## 数据集
### 介绍
UniMER 数据集是一个专门收集的集合,旨在推进数学表达式识别(MER)领域。它包括全面的 UniMER-1M 训练集,包含超过一百万个实例,代表了多样且复杂的数学表达式,以及精心设计的 UniMER 测试集,用于基准测试 MER 模型在真实世界场景中的表现。数据集详情如下:

**UniMER-1M 训练集:**
  - 总样本数:1,061,791 对 LaTeX-图像对
  - 组成:简洁和复杂的扩展公式表达的平衡混合
  - 目的:训练鲁棒、高精度的 MER 模型,提高识别精度和泛化能力

**UniMER 测试集:**
  - 总样本数:23,757 个,分为四种表达式类型:
    - 简单打印表达式(SPE):6,762 个样本
    - 复杂打印表达式(CPE):5,921 个样本
    - 屏幕截图表达式(SCE):4,742 个样本
    - 手写表达式(HWE):6,332 个样本
  - 目的:在各种真实世界条件下对 MER 模型进行全面评估

### 数据集下载
你可以从 [OpenDataLab](https://opendatalab.com/OpenDataLab/UniMER-Dataset)(推荐中国用户)或 [HuggingFace](https://huggingface.co/datasets/wanderkid/UniMER_Dataset) 下载数据集。


## 训练
要训练 UniMERNet 模型,请按照以下步骤操作:

1. **指定训练数据集路径**:打开 `configs/train` 文件夹并设置你的训练数据集路径。

2. **运行训练脚本**:执行以下命令以开始训练过程。

    ```bash
    bash script/train.sh
    ```

### 注意:
- 确保 `configs/train` 文件夹中指定的数据集路径是正确且可访问的。
- 监控训练过程中的任何错误或问题。

## 推理
模型权重
```bash
git clone https://github.com/opendatalab/UniMERNet.git
```

```bash
cd UniMERNet/models
# 单独下载模型和分词器或使用 git-lfs
git lfs install
git clone https://huggingface.co/wanderkid/unimernet_base  # 1.3GB  
git clone https://huggingface.co/wanderkid/unimernet_small # 773MB  
git clone https://huggingface.co/wanderkid/unimernet_tiny  # 441MB  

# 你也可以从 ModelScope 下载模型
git clone https://www.modelscope.cn/wanderkid/unimernet_base.git
git clone https://www.modelscope.cn/wanderkid/unimernet_small.git
git clone https://www.modelscope.cn/wanderkid/unimernet_tiny.git
```

. **Streamlit 应用程序**:使用我们的基于 Streamlit 的 GUI 进行交互和用户友好的体验。此应用程序允许实时公式识别和渲染。

    ```bash
    unimernet_gui
    ```
    确保你已安装最新版本的 UniMERNet (`pip install --upgrade unimernet & pip install "unimernet[full]"`) 以使用 Streamlit GUI 应用程序。

2. **命令行演示**:从图像中预测 LaTeX 代码。

    ```bash
    python demo.py
    ```

3. **Jupyter Notebook 演示**:从图像中识别和渲染公式。

    ```bash
    jupyter-lab ./demo.ipynb
    ```


## 效果展示
暂无
### 精度
DCU与GPU精度一致,推理框架:vllm。

## 预训练权重
| 模型名称  | 权重大小  | DCU型号  | 最低卡数需求 |下载地址|
|:-----:|:----------:|:----------:|:---------------------:|:----------:|
| unimernet_base | 1.3GB | K100AI | 1 | [下载地址](https://huggingface.co/wanderkid/unimernet_base) |
| unimernet_small | 1.3GB | K100AI | 1 | [下载地址](https://huggingface.co/wanderkid/unimernet_small) |
| unimernet_tiny | 1.3GB | K100AI | 1 | [下载地址](https://huggingface.co/wanderkid/unimernet_tiny ) |

## 源码仓库及问题反馈
- https://developer.sourcefind.cn/codes/modelzoo/unimernet_transformers

## 参考资料
- https://github.com/opendatalab/UniMERNet