首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >CNN识别微博验证码

CNN识别微博验证码

作者头像
李玺
发布2021-11-22 16:09:16
发布2021-11-22 16:09:16
9120
举报
文章被收录于专栏:爬虫逆向案例爬虫逆向案例

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

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

安装

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

GUI界面中的功能介绍:

以下部分有基础的读者们可以了解一下:(该部分复制的作者原文内容)

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

代码语言:javascript
复制
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放在图形文件夹中(如果不存在则创建)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 安装
  • 数据集下载
  • 开始训练
  • 查看训练过程 (如果感兴趣的话)
  • 部署
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档