CNN识别微博验证码

captcha_trainer 是基于深度学习的图片验证码的解决方案 - 该项目能够秒杀字符粘连重叠/透视变形/模糊/噪声等各种干扰情况,足以解决市面上绝大多数复杂的验证码场景,目前也被用于其他OCR场景。

项目下载地址: https://github.com/kerlomz/captcha_trainer


安装

跟随 requirements.txt 文件一键安装或者自行安装。
安装完成之后,在app.py文件启动界面。

GUI界面中的功能介绍:
在这里插入图片描述


以下部分有基础的读者们可以了解一下:(该部分复制的作者原文内容)
在这里插入图片描述
如若使用CrossEntropy作为解码器需要注意标签数LabelNum和图片尺寸需要满足的关系,因为网络为多标签而设计(一般的多标签采用直接连接多个分类器,这也是有一部分网上的开源代码你们修改了图片就无法运行的原因之一),卷积层的输出 outputs 经过了以下变换:

Reshape([label_num, int(outputs_shape[1] / label_num)])

为了保证 int(outputs_shape[1] / label_num) 运算能够得到正整数维度,这意味着他们之间存在某种数学关系,对CNN5+Cross Entropy网络结构而言,Conv2D层的步长皆为1,那么需要保证以下等式成立:
在这里插入图片描述
输入宽度输入高度输出层参数池化步长池化层数标签数

所以有时候需要对输入的图片Resize,一般4位验证码不容易出现这种问题,位数为3,5,6,7容易出现不满足等式的问题,这个等价关系如果不好计算的话,建议使用CTC Loss。

在这里插入图片描述
例如使用CNN5+CrossEntropy组合,则输入宽度与输入高度需要满足:
在这里插入图片描述


数据集下载

验证码数据集: https://pan.baidu.com/s/12iH5lpoXLAOTEiaQpoz7jg
提取码: r5ux
在这里插入图片描述

开始训练

输入项目名字,选择训练集,标签数,样本大小,结束条件等。
然后 Start Training 开始训练。

在这里插入图片描述
我之前安装的 tensorflow2.0.0,不太想退版本,所以使用 CPU来进行训练,训练速度较为缓慢。
建议按照作者的推荐使用 tensorflow-gpu==1.14.0。
另外为了减少时间 End Accuracy 可以修改低一点。平均损失End Cost可以高一点。学习率修改大一点。
在这里插入图片描述
在这里插入图片描述

查看训练过程 (如果感兴趣的话)

可以使用 tensorBoard 来查看训练过程。
cmd输出 tensorboard --logdir \路径\captcha_trainer\projects\weiboCaptcha-CNNX-GRU-H64-CTC-C1\model
然后访问 http://localhost:6006/
在这里插入图片描述
其实通过 model\checkpoint 文件也可以查看当前训练进度。

训练结束会在项目路径的out下看到以下结构的文件,pb为模型,yaml为模型配置文件,下面该到部署环节了。

部署

项目地址:https://github.com/kerlomz/captcha_platform

这里web服务调用仅作为一个例子,企业一般采用gRPC集群远程调用。

将训练好的model.yaml放在模型文件夹中,并将model.pb放在图形文件夹中(如果不存在则创建)

点赞

发表回复