ocr训练环境搭建及技巧--ubuntu18.04.1+python2.7+caffelstmctc
ocr一般都是整排序列识别,技术已经非常成熟,也给生活带来了极大的便利,比如:车牌、验证码、身份证、银行卡、osd校验等等。ocr的方案涉及到“文本检测+识别”两大模块,ocr模型训练过程中需要用到ctcloss,故整体思路是:caffe编译前先将ctc编译出来,然后将ctc合入到caffe工程,编译。2.数据量较少情况下可以尝试大规模数据的预训练模型方式,如果新模型的类别数与预训练模型不一致,则
一.训练环境配置(ubuntu18.04.1+python2.7)
ocr一般都是整排序列识别,技术已经非常成熟,也给生活带来了极大的便利,比如:车牌、验证码、身份证、银行卡、osd校验等等。ocr的方案涉及到“文本检测+识别”两大模块,ocr模型训练过程中需要用到ctcloss,故整体思路是:caffe编译前先将ctc编译出来,然后将ctc合入到caffe工程,编译。
warp-ctc编译流程:
cd warp-ctc
mkdir build
cd build
cmake ..
make
将编译好的文件加入caffe工程中
cd warp-ctc/include/
cp -r contrib/ caffelstmctc/include /caffe/3rdparty/
cp -r detail caffelstmctc/include /caffe/3rdparty/
cp ctc.h caffelstmctc/include /caffe/3rdparty/
cd ../src/
cp * caffelstmctc/src/caffe/3rdparty/
caffe工程编译:
python2环境,直接编译即可
Github代码路径:https://github.com/xmfbit/warpctc-caffe
二.训练技巧
1.本人用的是12CNN+3FC的网络,便于在不同芯片平台工程化
2.数据量较少情况下可以尝试大规模数据的预训练模型方式,如果新模型的类别数与预训练模型不一致,则在prototxt文件中修改全连接层的名字以及类别数即可
3.学习率 0.001或者0.0001,学习率过大容易导致网络震荡,不收敛,学习率过小要避免网络陷入局部最优。根据训练方式、数据量不同,效果差异也挺大
三、遇到的问题及解决办法
待补充编译过程遇到的问题以及源码...
更多推荐
所有评论(0)