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的自监督学习

数字公式识别的学习笔记相关推荐

  1. 数字公式识别的学习笔记(legacy)

    3 预处理 2.2.2 (提高训练速度)2倍下采样 (为了提高训练的速度),我们遵循了原始论文的预处理,对图像进行了2倍下采样, 2.3 Label-Norm--基于语法树的标准化方法 基于Norm的 ...

  2. 数字设计FPGA应用学习笔记

    转载https://blog.csdn.net/chinkwoyu/article/details/80259064 数字设计FPGA应用学习笔记 数字设计FPGA应用学习笔记 第一章 FPGA基础及 ...

  3. 概率密度变换公式 雅可比矩阵_学习笔记之——Jacobian matrix(雅可比矩阵)

    在<斯坦福大学公开课--机器人学>视频课程中一开始就提到了Jacobian matrix的重要性.为此写下本学习笔记介绍雅可比矩阵.本博客的内容来自于网络的各种资料的总结,已经给出参考引用 ...

  4. 前后对接数字几_开源数字货币交易所开发学习笔记(1)——系统架构

    前言 部门领导让我研究数字货币交易所的开发技术,今天好不容易把码云(Gitee)上开源数字货币交易所CoinExchange的代码编译成功并搭建出来了,在排查问题的过程中,不断的查看代码以及使用到的技 ...

  5. OCR——PaddleOCR之文字识别的学习笔记

    1 前言 在南溪看来,PaddleOCR是现在开源的最厉害的OCR识别库~ 2 PaddleOCR中目前最强的英文&数字识别模型 我们需要知道PaddleOCR中现在针对"英文&am ...

  6. 行人重识别综述学习笔记

    文章目录 <行人重识别研究综述> 摘要: 1 行人重识别概述 1.1 背景与研究意义 1.2 研究现状 1.3 评价标准 2 基于图像的行人重识别研究(传统+深度) 2.1 特征表达方法 ...

  7. 达摩院视觉AI训练营-搭建身份证识别系统-学习笔记

    搭建身份证识别系统目录 一.成为开发者 二.能力调试 三.能力开通 四.创建AccessKey 五.启动开发 参考案例 总结 一.成为开发者 请您使用阿里云账号登录阿里云视觉智能开放平台.如还未持有阿 ...

  8. 【人脸识别】人脸识别损失函数学习笔记

    目录 一.SphereFace:A-Softmax(CVPR2017) 1.1 传统的softmax Loss(第二章中有更详细的公式解释): 1.2 sphereface对softmax进行了两点改 ...

  9. 万字长文:人脸识别综述(学习笔记)

    人脸的检测与识别是一个历史悠久的方向,之前没做过相关的工作,所以对人脸检测的相关流程没有很清晰的概念.工作原因,近期对人脸识别的来龙去脉做一个笔记和知识梳理,从上到下的一个pipeline,文章部分内 ...

最新文章

  1. java 上下文加载器_如何将JDK6 ToolProvider和JavaCompiler与上下文类加载器一起使用?...
  2. Ubuntu 16.04安装idea
  3. python各种岗位薪资_python编程语言岗位薪资真不是盖的
  4. javascript---淡入淡出的效果轮换转播后续
  5. Android系统和内核编译命令
  6. 3.微服务:从设计到部署 --- 进程间通信
  7. spss分析方法-判别分析
  8. SqlDataReader的用法(重点:访问字段的值)
  9. 解决WIN10下QTTabBar无法置于顶部
  10. 华为内部流程管理系统(附关键流程图)
  11. 20本父母必读的亲子教育书籍
  12. [iOS] MUI-WebView模式集成到iOS应用
  13. Latex技巧:LaTex插图命令includegraphics参数详解
  14. 哔哩哔哩2020年Q4及全年财报:全年营收120亿元,同比增长77%
  15. 赏析角度有哪些_赏析句子的角度有哪些呢
  16. 美团2017校招-拼凑钱币
  17. 一篇博客带你熟悉Eclipse、AndroidStudio下搭建NDK环境(内有Demo)
  18. 管理领英邮件类型和频率
  19. Python(Python入门安装教程)
  20. MQTT协议详解(完整版)

热门文章

  1. Firefox关闭最后一个标签页时不关闭Firefox的设置
  2. 二十四 Redis消息订阅事务持久化
  3. 117. Populating Next Right Pointers in Each Node II 计算右边的附属节点
  4. 让ffmpeg支持10bit编码
  5. 如何使用alt键+数字键盘上的数字键打出特殊符号
  6. docker nginx1.7.6+keepalived实现双机热备
  7. 开源项目:底部动作条(BottomSheet)
  8. 推荐两个Magento做的中文网站 GAP和佰草集
  9. 【实验】修改数据文件名字的三种途径
  10. 【JavaScript 笔记 】— 基础语法(数据类型、字符串、数组、对象、Map、Set、iterable、函数基础)