57 Star 13 Fork 44

数学公式识别项目组 / 课程资料以及代码

forked from zhaomingming / 演示 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
0BSD

课程资料以及代码

导航目录

仓库说明

除给班班提交作业代码之外,可以把自己的代码放在 github 上或者 gitee 上,github 连接慢的同学可以放在 gitee 上,gitee 的使用方法与 github 一样,但连接更快。

克隆仓库

git clone https://gitee.com/Mathematical_formula_recognition/CourseMaterialsCodes.git

代码提交

git add .
git commit -m "your content"
git push -u origin master

文件目录结构

  • resources: 课程相关资料、电子书、论文等
  • utils: py 实用小工具
  • weekX: 第 X 周课程代码

week17作业

作业要求

优秀作业

学员 仓库链接 点评
txy14326 https://gitee.com/txy14326 这个代码的思路特别清晰。训练一个模型主要的步骤都有:样本数据准备,gt 的准备,模型的建立,loss 函数的定义,优化函数的选择等等。
在这个思路上扩充成大规模的数据集,大模型会比较容易,比较好理解。

week18作业

作业要求

作业建议步骤以及建议代码:

  1. 数据准备(图片读取,对应的GT生成)[数据这个没有讲,所以代码直接提供,不用填空,代码位置:week18/dataset.py]
  2. EAST 模型建立[填空代码week18/model.py]
  3. loss 函数建立[填空代码week18/loss.py]
  4. 优化函数,超参数选择[填空代码week18/train.py]

开始作业前,建议先下载 VGG 模型预训练权重 pths.zip 和数据集 ICDAR_2015.zip。

ICDAR_2015.zip,密码:hc1v

pths.zip,密码:108d

下载后解压,将 ICDAR_2015pths 文件夹放入 week18 目录中。

week18作业答案

答案并不惟一,也不一定是最优秀的

  1. 对应答案已上传到week18/loss_0509.py week18/train_0509.py week18/model_0509.py

数学公式检测数据标注

数学公式识别检测数据集:
cvpr2019,提取码:0sbm
cvpr2020,提取码:8171

进入标注小组办法:

  • 这里是列表文本在modelarts平台上标注有账号,
  • 将modelarts绑定的邮箱发给老师,老师将你加入标注小组中。
  • 成功加入标注小组后,你会收到如下邮件: 输入图片说明

标注办法:

  1. 点开邮件里面的链接,登陆并更改初始密码,登陆进去 标注系统
  2. 对于含有公式的图片,进行如下标注: 输入图片说明
  3. 遇到不含有公式的图片,进行如下标注: 输入图片说明 输入图片说明

week19作业

作业要求

[计划20200427日晚更新完毕]

  1. 完成locality-aware NMS
  2. 完成EAST模型的前向计算过程

作业建议步骤以及建议代码:

  1. /week19/inference.py 88行,独立完成locality-aware NMS
  2. 完成EAST模型的前向计算过程,输入一张图片,输出其相应结果。

可选作业:

  1. 完成模型的评价测试工作:计算f-socre/h-mean.

作业参考答案

  1. locality-aware-NMS 答案在week19/locality_aware_nms.py
  2. week19/pths下提供了两个模型文件,best.pth与 epoch_10.pth
    • best.pth是训练好的模型,inference.py 调用它后,可得到 week19/res_best.bmp
    • epoch_10.pth是训练到第10个epoch时的模型,inference.py 调用它后,可得到 week19/res_epoch_10.bmp
  3. 可选作业答案:
 1. 参考代码位置:week19/get_f1_score.py
     python get_f1_score.py 可以看到例子
 2. 关于f-score 意义的理解可以参考这里:https://zhuanlan.zhihu.com/p/141033837

week20作业

作业要求

  1. 完成dataloader.py

作业建议步骤以及建议代码

  1. 代码位置:week20/dataloader_0511.py,需要填空的地方:72行, 97行。
  2. 72行是实现公式字符串转换为向量的函数:formulas2tensor
  3. 97是实现公式字符串和公式的图片对应起来的函数,这个主要参考数据集上的readme.
  4. 填写完成后,运行python data_loader_0511.py,得到如下结果为正确: 输入图片说明

开始作业前,从这里下载数据集image2latex100k.zip

2020522之后一周有效:
链接:https://pan.baidu.com/s/1CM9spFSXkyzkc4LB76YNPA  密码:ubtm

关于数据生成思路,可以在这里看看能否收到启发:

week21作业

1. 完成im2latex模型的前向计算程序inference.py,参考代码位置:week21/inference_0520.py

作业建议步骤以及建议代码

  1. 代码位置:week21/inference_0520.py,需要填空的地方:46行, 62行, 89行.
  2. 46行是实现编码器的计算过程
  3. 62是将cnn输出的feature map 转话为 编码器需要的数据格式 成序列的向量,难点时我们还有batch在,要注意。
  4. 89行时实现解码器的计算过程,并实现输出概率p的计算过程。概率是要求在hidden的基础上再使用一个神经网络单元进行计算。
    week21参考答案:week21/inference_20200527.py
    与inference_20200527配套代码:
            week21/data_loader.py
            week21/get_train_data.py

week22作业

1. 完成数据的重新整理(为了尽快让大家训练起来,这里我先提供一份,后续把数据整理代码发出来,数据整理过程确实有点繁琐)
2. 完成训练程序(相比inference,训练需要添加loss,然后backward,这些是这个项目的真正难点)
3. 完成基本流程后,需要添加teacher forcing,以看到收敛效果。
4. 总体思路:完成代码后,先完成小批量数据在cpu上的训练,添加后续所有组件,然后再转入gpu,进行大批量数据训练。

       小批量数据训练,验证了我们写的训练代码可以基本闭环,是有效的,为后续大批量数据训练提供基础。

5. 后续需要添加的组件有:[schedule sampling], [row encoder and position embedding], [word embedding],这些组件,我会最近尽快更新上去。

小批量数据训练,验证了我们写的训练代码可以基本闭环,是有效的,为后续大批量数据训练提供基础。 小批量训练效果展示: 输入图片说明 输入图片说明

  作业建议步骤以及建议代码
  1. 数据位置:week22/im2latex_100K_norm_data_split_100M,
       使用方法:
             a 此文件夹内含有6个文件都是以x开头,每个大约90M,将其传入ModelArts 的notebook上使用【点击notebook 页面 upload】
             b 将x开头的文件,同步到teminal里
             c 执行cat_unzip.sh 里面的命令,即可完成数据准备。
  2. 待填空代码位置:week22/train_20200529.py 需要填空的地方在385,193,126,325行。
  3. 385行是实现loss函数的定义,这个函数在193行要使用。
  4. 126行是 随机梯度下降的内容,需要你完成权重的数值的更新。
  5. 325行需要实现teacher forcing功能
  6. 这份代码我在dataloader中做了设置:只训练2张图片,batch_size=2,epoch每次都更新。
  7. 当上传到gpu训练时,需要使用data_loader_whole.py 代替data_loader.py即可。
  

week23作业

1. 先用 BLEU 来评价自己train的model(少量图片)得BLEU,验证训练得闭环性。
2. 验证完成后,使用大量图片进行训练,这时候需要改小学习率,或者使用clip_gradients方法。
3. 使用attnetion结构[dot,product]
4. 使用双lstm结构
    作业建议步骤以及建议代码
    1. 先用baseline模型,训练几个epoch, 查看收敛情况。week23/answer1中为训练代码。week23/pth/中模型文件为训练了4个epoch的模型参数文件。
    2. 更换sgd 为momentum + L2正则化
    3. 使用双lstm结构
    4.  使用 attention结构
    5. 使用clip_gradients方法
    6. 使用词向量
    7.使用multi-head attention

week24作业

 1.将我们训练得到的两个模型:east和im2latex部署到webserver上。
   作业建议步骤以及建议代码
   1.参考模型部署的工程代码:https://gitee.com/anjiang2020_admin/bd_cv3_webserver_demo

Modelarts使用效果

gpu类型: 输入图片说明

输入图片说明

训练速度特别快,数万数据,一个epoch只要45秒左右。 输入图片说明

Modelarts使用办法

第一次配置时间较长,建议腾出至少4个小时的时间来配置。 使用云上的独立GPU,注意一点:obs是你唯一可以保存文件的地方,其他地方的保存都是暂时的,会清除。 pipeline:

  1. 准备好自己的gitee
  2. 建立modelarts上的notebook
  3. 打开notebook对应的terminal
  4. git clone you_program 到terminal里
  5. 利用notebook同步功能将数据同步到terminal里
  6. 数据和代码都有了,可以配置环境和开发了。
  7. 处理的任务步骤中,都可以同步文件到obs上,同步代码:/week19/upload.py)

下面是详细步骤:

  1. 准备好自己的gitee

  2. 建立modelarts上的notebook【建议建立一个6小时的】

创建notebook 输入图片说明

notebook参数 输入图片说明

notebook参数 输入图片说明 输入图片说明 输入图片说明 输入图片说明

从这里打开我们刚才创建的notebook环境 输入图片说明 输入图片说明

  1. 打开notebook对应的terminal

打开terminal 输入图片说明

在terminal里自己可以随意操作 输入图片说明

termial使用原则 输入图片说明

  1. git clone 你的gitee,把代码放到terminal里 查看README文件,切换到pytorch环境,可以使用gpu

  2. 利用notebook的同步功能,把数据也同步到terminal里

选中notebook里的文件,点击syn,可以将notebook里的文件同步到terminal里 输入图片说明

  1. 数据和代码都有了,可以配置环境和开发了。

  2. 任何时候,都可以同步文件到obs上,可以参考/week19/upload.py,如下图: 输入图片说明

TO DO LIST:

  1. 待添加标注工具【已完成】
  2. 待标注数学公式数据[已完成]
  3. 解决loss的其中一个设计问题:负样本loss返回零
  4. 收集学员modelarts绑定的邮箱,分配标注任务【标注中】。

更新日志

20200529:

  1. 添加week23作业。loss设计,反向传播等。
  2. 添加word embedding [待添加]
  3. 添加 行编码 与 position embedding [待添加]
  4. 添加 teacher forcing
  5. 添加 schedule sampling [待添加]

20200527:

  1. 添加week21作业:inference得答案。 20200522:
  2. 更新im2latex100k下载链接 20200520:
  3. 添加week21作业 20200511:
  4. 添加week20作业

20200509:

  1. 添加week19作业答案:locality_aware_nms.py
  2. 添加week18作业答案:loss_0509.py model_0509.py train_0509.py
  3. 上传 best.pth,epoch_10.pth,以及其对应的示例图片

20200503:

  1. 添加obs使用办法
  2. 更改数据生成时的bug.感谢@郑万铎同学 输入图片说明

20200429:

  1. 添加数学公式检测数据集,团队标注办法

20200428:

  1. 添加modelarts使用办法

20200425:

  1. 添加EAST的论文精读翻译
  2. 添加EAST论文的课堂讲解
  3. 添加EAST论文得作业代码inference.py

20200422:

  1. 调整目录结构
  2. 优化 README.md

20200421:

  1. 实验添加 pdf 转图片代码
  2. 整理大量 pdf 论文下载链接

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

码云特技

  1. 使用 README_XX.md 来支持不同的语言,例如 README_en.md, README_zh.md
  2. 码云官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解码云上的优秀开源项目
  4. GVP 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
  5. 码云官方提供的使用手册 https://gitee.com/help
  6. 码云封面人物是一档用来展示码云会员风:采的栏目 https://gitee.com/gitee-stars/
Copyright (c) 2020 zhaomingming Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

简介

课程资料以及代码,私有项目组,限时开放,随时关闭。 展开 收起
Python
0BSD
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/Mathematical_formula_recognition/CourseMaterialsCodes.git
git@gitee.com:Mathematical_formula_recognition/CourseMaterialsCodes.git
Mathematical_formula_recognition
CourseMaterialsCodes
课程资料以及代码
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891