转自:爱可可-爱生活
caffe_ocr是一个对现有主流ocr算法研究实验性的项目,目前实现了CNN+BLSTM+CTC的识别架构,并在数据准备、网络设计、调参等方面进行了诸多的实验。代码包含了对lstm、warp-ctc、multi-label等的适配和修改,还有基于inception、restnet、densenet的网络结构。代码是针对windows平台的,linux平台下只需要合并相关的修改到caffe代码中即可。
1. data layer增加了对multi-label的支持
2. lstm使用的是junhyukoh实现的lstm版本(lstm_layer_Junhyuk.cpp/cu),原版不支持变长输入的识别。输入的shape由(TxN)xH改为TxNxH以适应ctc的输入结构。
3. WarpCTCLossLayer去掉了对sequence indicators依赖(训练时CNN输出的结构是固定的),简化了网络结构(不需要sequence indicator layer)。
4. densenet修改了对Reshape没有正确响应的bug,实现了对变长输入预测的支持。
5. 增加transpose_layer、reverse_layer,实现对CNN feature map与lstm输入shape的适配
1. 安装opencv,boost,cuda,其它依赖库在3rdparty下(包含debug版的lib:http://pan.baidu.com/s/1nvIFojJ)
2. caffe-vsproj下为vs2015的工程,配置好依赖库的路径即可编译,编译后会在tools_bin目录下生成训练程序caffe.exe
3. 相关的依赖dll可从百度网盘下载(http://pan.baidu.com/s/1boOiscJ)
数据准备
(1)VGG Synthetic Word Dataset
(2)合成的中文数据(http://pan.baidu.com/s/1c2fHpvE)
数据是利用中文语料库(新闻+文言文),通过字体、大小、灰度、模糊、透视、拉伸等变化随机生成的。
字典中包含汉字、标点、英文、数字共5990个字符(语料字频统计,全角半角合并)
每个样本固定10个字符,字符随机截取自语料库中的句子
图片分辨率统一为280x32
共生成约360万张图片,按9:1分成训练集、验证集(暂时没有分测试集)
网络设计
网络结构在examples/ocr目录下
主要实验结果
英文数据集 VGG Synthetic Word Dataset:
链接:
https://github.com/senlinuc/caffe_ocr
原文链接:
https://m.weibo.cn/1402400261/4167772357734940