CRNN中英文字识别

crnn实现细节(pytorch)

1.环境搭建

1.1 基础环境
  • Ubuntu14.04 + CUDA
  • opencv2.4 + pytorch + lmdb +wrap_ctc

安装lmdb apt-get install lmdb

1.2 安装pytorch

pip,linux,cuda8.0,python2.7:
pip install http://download.pytorch.org/whl/cu80/torch-0.1.12.post2-cp27-none-linux_x86_64.whl
参考:http://pytorch.org/

1.3 安装wrap_ctc
git clone https://github.com/baidu-research/warp-ctc.git
cd warp-ctc
mkdir build; cd build
cmake ..
make

GPU版在环境变量中添加

export CUDA_HOME="/usr/local/cuda"
cd pytorch_binding
python setup.py install

参考:
https://github.com/SeanNaren/warpctc/tree/pytorch_bindings/pytorch_binding

1.4 注意问题
  1. 缺少cffi库文件 使用pip install cffi安装
  2. 安装pytorch_binding前,确认设置CUDA_HOME,虽然编译安装不会报错,但是在调用gpu时,会出现wrap_ctc没有gpu属性的错误

2. crnn预测(以21类中英文为例)

模型地址:链接:https://eyun.baidu.com/s/3dEUJJg9 密码:vKeD

运行/contrib/crnn/demo.py

原始图片为:
这里写图片描述
这里写图片描述
识别结果为:
这里写图片描述

# 加载模型
model_path = './samples/netCRNN_9_112580.pth'
# 需识别的图片
img_path = './data/demo.png'
# 识别的类别
alphabet = 'ACIMRey万下依口哺摄次状璐癌草血运重'
# 设置模型参数 图片高度imgH=32, nc, 分类数目nclass=len(alphabet)+1 一个预留位, LSTM设置隐藏层数nh=128, 使用GPU个数ngpu=1
model = crnn.CRNN(32, 1, 22, 128, 1).cuda()

替换模型时,注意模型分类的类别数目

crnn 训练(以21类中英文为例)

1.数据预处理

运行/contrib/crnn/tool/tolmdb.py

# 生成的lmdb输出路径
outputPath = "./train_lmdb"
# 图片及对应的label
imgdata = open("./train.txt")

2.训练模型

运行/contrib/crnn/crnn_main.py

python crnn_main.py [--param val]
--trainroot        训练集路径
--valroot          验证集路径
--workers          CPU工作核数, default=2
--batchSize        设置batchSize大小, default=64
--imgH             图片高度, default=32
--nh               LSTM隐藏层数, default=256
--niter            训练回合数, default=25
--lr               学习率, default=0.01
--beta1             
--cuda             使用GPU, action='store_true'
--ngpu             使用GPU的个数, default=1
--crnn             选择预训练模型
--alphabet         设置分类
--Diters            
--experiment        模型保存目录
--displayInterval   设置多少次迭代显示一次, default=500
--n_test_disp        每次验证显示的个数, default=10
--valInterval        设置多少次迭代验证一次, default=500
--saveInterval       设置多少次迭代保存一次模型, default=500
--adam               使用adma优化器, action='store_true'
--adadelta           使用adadelta优化器, action='store_true'
--keep_ratio         设置图片保持横纵比缩放, action='store_true'
--random_sample      是否使用随机采样器对数据集进行采样, action='store_true'

示例:python /contrib/crnn/crnn_main.py –tainroot [训练集路径] –valroot [验证集路径] –nh 128 –cuda –crnn [预训练模型路径]

修改/contrib/crnn/keys.pyalphabet = 'ACIMRey万下依口哺摄次状璐癌草血运重'增加或者减少类别
3. 注意事项
训练和预测采用的类别数和LSTM隐藏层数需保持一致

Github地址:https://github.com/YoungMiao/crnn

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
目标识别是计算机视觉一个重要的研究领域,由此延伸出的车辆型号识别具有重 要的实际应用价值,特别是在当今交通状况复杂的大城市,智能交通系统成为发展趋 势,这离不开对车辆型号进行识别和分类的工作,本文围绕如何利用计算机视觉的方 法进行车辆型号的识别和分类展开了一系列研究: 本文对当前的目标识别和分类的特征和算法做了总结和归纳。分析比较了作为图 像特征描述常见的特征算子,总结归纳了他们的提取方法、特征性能以及相互之间的 关联。另外,介绍了在目标识别工作中常用的分类方法,阐述了他们各自的原理和工作 方法。研究了深度神经网络的理论依据,分析比较了深度神经网络不同的特征学习方 法,以及卷积神经网络的训练方法。分析比较不同特征学习方法的特点选取 k-means 作为本文使用的特征学习方法,利用卷积神经网络结构搭建深度学习模型,进行车辆 车型识别工作。 本文为了测试基于深度学习的车辆型号分类算法的性能在 30 个不同型号共 7158 张图片上进行实验;并在相同数据上利用改进了的 SIFT 特征匹配的算法进行对比实验; 进过实验测试,深度学习方法在进行车型分类的实验中取得 94%的正确率,并在与 SIFT 匹配实验结果对比后进一步证实:深度学习的方法能够应用在车辆型号识别领域

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值