在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):LinXueyuanStdio/LaTeX_OCR开源软件地址(OpenSource Url):https://github.com/LinXueyuanStdio/LaTeX_OCR开源编程语言(OpenSource Language):Jupyter Notebook 85.2%开源软件介绍(OpenSource Introduction):LaTeX OCR
Seq2Seq + Attention + Beam Search。 结构 1. 搭建环境
Linux一键安装 make install-linux 或
virtualenv env35 --python=python3.5
source env35/bin/activate
pip install -r requirements.txt
sudo apt-get install texlive-latex-base
sudo apt-get install texlive-latex-extra
sudo apt-get update
sudo apt-get install ghostscript
sudo apt-get install libgs-dev
wget http://www.imagemagick.org/download/ImageMagick.tar.gz
tar -xvf ImageMagick.tar.gz
cd ImageMagick-7.*; \
./configure --with-gslib=yes; \
make; \
sudo make install; \
sudo ldconfig /usr/local/lib
rm ImageMagick.tar.gz
rm -r ImageMagick-7.* Mac一键安装 make install-mac 或
sudo pip install -r requirements.txt
wget http://www.imagemagick.org/download/ImageMagick.tar.gz
tar -xvf ImageMagick.tar.gz
cd ImageMagick-7.*; \
./configure --with-gslib=yes; \
make;\
sudo make install; \
rm ImageMagick.tar.gz
rm -r ImageMagick-7.* 2. 开始训练生成小数据集、训练、评价提供了样本量为 100 的小数据集,方便测试。只需 2 分钟就可以根据 一步训练
或
生成完整数据集、训练、评价根据公式生成 70,000+ 数学公式图片需要 一步训练
或
3. 可视化可视化训练过程用 tensorboard 可视化训练过程 小数据集
完整数据集
可视化预测过程打开 或者运行 # 默认
python visualize_attention.py
# 或者
python visualize_attention.py --image=data/images_test/6.png --vocab=configs/vocab.json --model=configs/model.json --output=results/full/ 可在 4. 评价
perplexity 是越接近1越好,其余3个指标是越大越好。ExactMatchScore 比较低,继续训练应该可以到 70 以上。机器不太好,训练太费时间了。 5. 模型的具体实现细节总述首先我们获取到足够的公式,对公式进行规范化处理,方便划分出字典。然后通过规范化的公式使用脚本生成图片,具体用到了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可以选择用 数据获取和数据处理我们只要获取到正确的latex公式就行。因为我们可以使用脚本将latex渲染出图片,所以就不用图片数据了。 原来我们想使用爬虫爬取arXiv的论文,然后通过正则表达式提取论文里的latex公式。 但是最后我们发现已经有人做了这个工作,所以就用了他们的公式数据。im2latex-100k , arXiv:1609.04938 现在我们获取到latex公式数据,下面进行规范化。
我们先手动在代码编辑器里对数据进行规范化,很玄学地用了一些正则表达式,一步一步进行规范化。 最后总结了一下,明确要构建的字典大概是什么样的,然后写了脚本来处理。 然后是通过公式生成图片,保存公式-图片映射文件,构建字典。 构建字典很简单,遍历公式文件的每一行,然后以空格符 保存公式-图片映射文件也很简单,就是在渲染出图片后,保存 通过公式生成图片稍微复杂一点,需要用到几个库:latex、ghostscript和magick。事实上用Katex也是可以的,katex是一个渲染latex公式的js库,体积小速度快。原来我们也是打算用这个库处理,后来因为环境问题放弃了。 latex原先我的环境里有了,这是用来生成pdf文件的。执行脚本后会得到A4纸大小的一页pdf。 ghostscript和magick绑定在一起,用来把pdf转化为png格式的图片。 转化为图片后,选定公式 padding 8个像素的方框,crop框外的空白,然后灰度化。 模型构建让我鸽一段时间。。。有空再写! 6. 踩坑记录win10 用 GPU 加速训练装驱动后就行了。运行下面代码进行训练:
我的环境比较奇葩,是win10+ubuntu wsl,也就是windows+linux子系统。我的GPU驱动装在win里面了,linux里没装,不过文件系统是共用的,所以用win的GPU驱动来训练模型。(嗯,python也有两套版本哈哈哈,都是python3.5) 如何可视化Attention层在Attention层内自定义一个op,通过这个op把Attention传递到一个全局变量里。其他程序在模型预测完公式后,就可以在这个全局变量里获取到Attention。 致谢十分感谢 Harvard 和 Guillaume Genthial 、Kelvin Xu 等人提供巨人的肩膀。 论文: |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论