数字公式识别的学习笔记

1 前言

我们准备使用基于attention的方法来实现数字公式识别的任务~

2 数据集——im2latex-100k

公式识别的数据集我们使用im2latex-100k;
数据集Offical链接:IM2LATEX-100K

2.1 数据集leaderboard

1. GCNet, BLEU: 89.72
模型:GCNet
论文:Global Context-Based Network with Transformer for Image2latex
代码:未开源
2. MER-DAttn, BLEU: 88.42
模型:MER-DAttn
论文:An Improved Approach Based on CNN-RNNs for Mathematical Expression Recognition
代码:未开源
2. IM2TEX, BLEU: 87.73
模型:IM2TEX
论文:Image-to-Markup Generation with Coarse-to-Fine Attention
代码:已开源(http://lstm.seas.harvard.edu/latex/)

2.1 数据集特点

数据集中有空白图片:
数据集中有全部是空白的图片,(后面预处理时会直接截取出空白的图片);
数据集样本数:103536个图片
(formula_images文件夹中会多一个texput.log文件)

2.2 数据清洗

  • 删除空白图片
  • 将公式代码重新核对

2.2.1 数据格式

采用“最小格式”标注:

  • 去除空格
    LaTex书写公式时空格是无效的,只是为了好看;
  • 尽量使用\left&\right括号
    这种括号可以将括号内的容及括号整体声明为单字符;
  • 尽量去除{}
    在有“单字符括号”时,不需要使用{}

这样之后,可能会存在难以阅读的情况,需要加入“阅读模式”对长公式代码进行排版;

3 预处理

2.1 图像裁剪——(暂时不需要,使用norm数据)

由于给出的图片是一整个纸张大小的png图片,所以还需要进行裁剪;

2.2 图像预处理

2.2.1 padding到相同大小

预处理生成的图片图像大小不统一,我们将图片统一padding到相同的大小;

5 模型设计

模型整体结构时基于Transformer来实现的,
关于Transformer的解读请参考《Transformer 代码完全解读!》

5.1 主干网络

主干网络使用的是ResNet34_vd;
权值初始化使用了Kaiming初始化的方法;

5.2 置信度激活——None(在训练时使用了.log_softmax(2)

对于模型本身,在前向推理的时候没有使用“置信度激活”;
不过在训练的时候,我们加入了“softmax”对概率值进行了“非线性激活”,这样可以帮助模型的收敛;
Note:在模型的最后,则不需要加入softmax函数,
因为softmax是一个单调增函数,为了降低计算量,我们在推理时也就不用再经过softmax的运算了。

6 随笔

6.1 Word Embedding

在南溪看来,Word Embedding是一项很好的技术;
它将单词用embedding进行表示,从而使得embedding具有了(在距离上的)语义信息;
那么Word-Embedding技术如何用于数字公式识别呢?
其实这里是使用了一种类似于self-supervised的思想,首先我们假设:
我们可以从单词的one-hot编码,映射出一种多维度的特征,
这里有点像“转置卷积”中的“补绘”的思想!
所以我们的目标就是学习出这样的embedding,
这里我们首先建立了模型的映射关系,然后用模型表达出来,对结果进行有监督地训练;
从而完成了embedding的自监督学习

你可能感兴趣的:(Image,Caption,OCR,自动驾驶,数字公式识别)