简介
本系列文章基于pytorch框架从零写CRNN文字识别项目,网上有很多优秀的开源代码,但是拿到一个复杂完整的工程对于新手真的太难太难看懂了,更别说优化代码。然后我最开始也是想找个视频教程或者博客教程学一下如何从零开始设计一个完整项目的,发现这方面保姆级别的教程实在是太少(可能大神都不愿意教学就好像代码不愿意写注释一样)。所以,记录一下自己学习一个项目的完整过程,后续会继续优化尝试加入attention和嵌入文字位置特征等,然后做一个latex公式识别的小项目(希望能做出来)。
项目地址:https://github.com/xmy0916/pytorch_crnn
目录
从零写CRNN文字识别 —— (1)准备工作
从零写CRNN文字识别 —— (2)准备配置文件
从零写CRNN文字识别 —— (3)数据加载器
从零写CRNN文字识别 —— (4)搭建模型
从零写CRNN文字识别 —— (5)优化器和Loss
从零写CRNN文字识别 —— (6)训练
参考资料
论文地址:https://arxiv.org/abs/1507.05717
参考代码:https://github.com/Sierkinhane/CRNN_Chinese_Characters_Rec
准备工作
首先肯定是先了解一下CRNN是什么,这个就不详细介绍了,参考这篇博客可以大概了解下内容:CRNN论文笔记
大体上讲:用CNN网络提取图片特征编码,用LSTM对提取的特征进行预测解码。
个人认为实现工程的第一步准备数据,有数据了方便对程序进行边修改边测试,这里我使用的是MLT2017的小语种法语的数据,数据集整理好上传在csdn自取:法语OCR识别数据集
分析数据集
数据集包含4679张训练集766张测试集。
数据集标签的格式:
这里每行空格不同因为中间的分隔符用的是\t,所以每一行前一项是图片路径,后一项是文本。
准备代码结构
用不同的文件和文件夹将功能化的代码分开可以让代码看起来一目了然,因此先创建如下的文件结构:
crnn
├── config // 配置文件夹
├── ──├── config.yml //配置文件
├── model // 模型文件夹
├── ──├── model.py //模型结构
├── utils // 工具文件
├── ──├── utils.py //工具文件
├── data // 数据文件夹
├── ──├── dataset.py //加载数据集
├── train.py //训练脚本
先创建这么多,后续再添加~