⽤pytorch实现crnn+ctc来识别验证码
pytorch 实现crnn+ctc来识别验证码python怎么读取py文件
说明
环境搭建
验证torch
from __future__ import print_function
import torch
x = torch.rand(5, 3)
print(x)
期望结果类似如下
tensor([[0.3380, 0.3845, 0.3217],
[0.8337, 0.9050, 0.2650],
[0.2979, 0.7141, 0.9069],
[0.1449, 0.1132, 0.1375],
[0.4675, 0.3947, 0.1426]])
验证cuda驱动是否正常安装
import torch
torch.cuda.is_available()
训练
下载代码到服务器路径/home/ocr-python/
source /root/venv/bin/activate
单个验证码识别
#tool⽬录下执⾏,会在datasets下⾯⽣成ydShop⽬录,下⾯有train和val两个⽂件夹,⽐例为9⽐1
python create_dataset_Plus.py --imagePath=/home/pics/ydshop/success --head=ydshop
#/home/ocr-python/crnn_pytorch⽬录下执⾏,默认会在expr下⾯⽣成训练的结果,如果开始打印epoch: 0, step: 则表⽰正在训练,数据集没问题,之后看到⽇志,accuray表⽰成功率,达到⼀定成功率即可kill掉进程,或者等待迭代次数完成(默认100次)
nohup python crnn_main_plus.py  --trainPath=/home/ocr-python/crnn_pytorch/ydshop/train --valPath=/home/ocr-python/crnn_pytorch/datasets/ydshop/val --saveInterval=2000 &
如果运⾏完成还没达到预期成功率,可能是样本量不够,可以增加样本,继续训练。
注:如果继续训练,跟原来的图⽚路径分开,新建⼀个⽂件夹,或者执⾏如下脚本:
python create_dataset_Plus.py --imageDirPath=/home/pics/ydshop2/success --head=ydshop
整合验证码识别
整合的⽅式是通过把datasets⾥⾯的train的样本,整合到⼀个统⼀的⽬录如tmpLmdb,脚本如下,reset为true会清空tmpLmdb⽬录。
如果datasets新增了⽂件夹,srcPath传⼊精确的⽂件路径,reset传⼊False。
python integrate_dataset.py --result=/home/ocr-python/crnn_pytorch/tmpLmdb  --srcPath=/home/ocr-python/crnn_pytorch/datasets/  --reset=False
整合完成之后,训练脚本跟单个⼀样,trainPath改为到tmpLmdb就⾏,系统会⾃动遍历transets下⾯的验证集进⾏验证。
nohup python crnn_main_plus.py  --trainPath=/home/ocr-python/crnn_pytorch/tmpLmdb --valPath=/home/ocr-python/crnn_pytorch/datasets/ --saveInterval =2000 &
训练完成后,把⽣成的模型⽂件拷贝到ocr-python/data/model下
重命名⽂件 格式为 crnn_{id}_{成功率}_model.pth
如 crnn_163209_96_model.pth
服务搭建
/home/ocr-python/server⽬录,可以修改config来制定对外端⼝,
默认会读取在上级⽬录下的data/model/下⾯的模型⽂件。
阿⾥云开通外⽹端⼝访问
#启动服务
nohup python server.py &
调⽤⽅式Post,requestBody,格式为json,site为上⾯的模型⽂件名中的{id}
{
"site":"163209",
"image":"图⽚的base64格式的字符串"
}
附 命令⾏把图⽚转换为base64格式
openssl base64 -e  -in 1516160605925_kcxs.png > text.json
正确返回格式
{
"result": "kcxs", //识别结果
"success": true
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。