数学公式识别增强版:中英文手写印刷公式


向AI转型的程序员都关注了这个号????????????

机器学习AI算法工程   公众号:datayx

识别结果

Seq2Seq + Attention + Beam Search

首先我们获取到足够的公式,对公式进行规范化处理,方便划分出字典。然后通过规范化的公式使用脚本生成图片,具体用到了latex和ghostscript和magick,同时保存哪个公式生成哪个图片,保存为公式-图片映射文件。这样我们得到了3个数据集:规范化的公式集,图片集,公式-图片映射集,还有个附赠品:latex字典。这个字典决定了模型的上限,也就是说,模型预测出的公式只能由字典里的字符组成,不会出现字典以外的字符。

然后构建模型。

模型分为3部分,数据生成器,神经网络模型,使用脚本。

数据生成器读取公式-图片映射文件,为模型提供(公式, 图片)的矩阵元组。

神经网络模型是 Seq2Seq + Attention + Beam Search。Seq2Seq的Encoder是CNN,Decoder是LSTM。Encoder和Decoder之间插入Attention层,具体操作是这样:Encoder到Decoder有个扁平化的过程,Attention就是在这里插入的。随Attention插入的还有我们自定义的一个op,用来导出Attention的数据,做Attention的可视化。

使用脚本包括构建脚本、训练脚本、测试脚本、预测脚本、评估脚本、可视化脚本。使用说明看上面的命令行就行。

训练过程根据epoch动态调整LearningRate。decoder可以选择用lstmgru,在configs/model.json里改就行。最后输出结果可以选择用 beam_search 或 greedy,也是在configs/model.json里改。

数据获取和数据处理

我们只要获取到正确的latex公式就行。因为我们可以使用脚本将latex渲染出图片,所以就不用图片数据了。

原来我们想使用爬虫爬取arXiv的论文,然后通过正则表达式提取论文里的latex公式。

但是最后我们发现已经有人做了这个工作,所以就用了他们的公式数据。im2latex-100k , arXiv:1609.04938

现在我们获取到latex公式数据,下面进行规范化。

为什么要规范化:如果不规范化,我们构建字典时就只能是char wise,而latex中有很多是有特定排列的指令,比如\lim,这样模型需要花费额外的神经元来记住这些pattern,会使模型效果变差,也导致训练费时间。(有时根本不收敛...别问我怎么知道的...)

我们先手动在代码编辑器里对数据进行规范化,很玄学地用了一些正则表达式,一步一步进行规范化。

最后总结了一下,明确要构建的字典大概是什么样的,然后写了脚本来处理。

然后是通过公式生成图片,保存公式-图片映射文件,构建字典。

构建字典很简单,遍历公式文件的每一行,然后以空格符 为分隔符分割成若干latex块,去掉每一块首尾空格,若非空则加入字典集,保证不重复。

保存公式-图片映射文件也很简单,就是在渲染出图片后,保存当前的公式在公式文件里的行号图片路径,写入映射文件里,也就是.matching.txt文件。图片文件名是直接用公式行号来命名的,比如1234.png 1234表示第1234行公式的公式图片是1234.png。所以知道了行号,就知道了公式图片路径。

通过公式生成图片稍微复杂一点,需要用到几个库:latex、ghostscript和magick。事实上用Katex也是可以的,katex是一个渲染latex公式的js库,体积小速度快。原来我们也是打算用这个库处理,后来因为环境问题放弃了。

latex原先我的环境里有了,这是用来生成pdf文件的。执行脚本后会得到A4纸大小的一页pdf。

ghostscript和magick绑定在一起,用来把pdf转化为png格式的图片。

转化为图片后,选定公式 padding 8个像素的方框,crop框外的空白,然后灰度化。

代码 以及运行教程  获取:

关注微信公众号 datayx  然后回复  公式  即可获取。

AI项目体验地址 https://loveai.tech

搭建环境

  1. python3.5 + tensorflow1.12.2

  2. [可选] latex (latex 转 pdf)

  3. [可选] ghostscript (图片处理)

  4. [可选] magick (pdf 转 png)

如果你想直接训练,不想自己构建数据集:

如果你想自己构建数据集,然后再训练:

开始训练

生成小数据集、训练、评价

提供了样本量为 100 的小数据集,方便测试。只需 2 分钟就可以根据 ./data/small.formulas/ 下的公式生成用于训练的图片。

一步训练

评价


阅读过本文的人还看了以下文章:

TensorFlow 2.0深度学习案例实战

基于40万表格数据集TableBank,用MaskRCNN做表格检测

《基于深度学习的自然语言处理》中/英PDF

Deep Learning 中文版初版-周志华团队

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

特征提取与图像处理(第二版).pdf

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  


机大数据技术与机器学习工程

 搜索公众号添加: datanlp

长按图片,识别二维码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值