使用TensorFlow 来实现一个简单的验证码识别过程

  • 时间:
  • 浏览:1
  • 来源:大发快3官方直播—彩神UU快三代理

测试

后后大家就能必须确保最后一维是 VOCAB_LENGTH 长度,而它后后我三个小 One-Hot 向量,统统各元素之和必定为 1。

这里大家定义了三个小 getrandomtext() 法子,能必须随机生成验证码文本,后后接下来再利用你例如随机生成的文后后产生对应的 x、y 数据,后后大家再将数据写入到 pickle 文件里,后后就完成了预外理的操作。

内容如下:

能必须看到图中的文字正是大家所定义的内容,后后大家就能必须得到一张图片和其对应的真实文本,接下来大家就能必须用它来生成一批训练数据和测试数据了。

这里大家使用 python 的 captcha 库来生成即可,你例如库默认是那么安装的,统统这里大家必须先安装你例如库,另外大家还必须安装 pillow 库





例如这里调用一下这三个小法子,大家将 1234 文本转换为 One-Hot 编码,后后在将其转回来:



原文发布时间为:2018-11-20

安装好后后,大家就能必须用如下代码来生成三个小简单的图形验证码

这里 VOCAB 后后我词表的内容,即 0 到 9 这 10 个数字,验证码的字符个数即 CAPTCHA_LENGTH 是 4,词表长度是 VOCAB 的长度,即 10。

https://www.tensorflow.org/apidocs/python/tf/nn/softmaxcrossentropywithlogits

在训练后后肯定是要进行数据预外理了,现在大家首先定义好了要生成的验证码文本内容,这就合适原因分析 有了 label 了,后后大家再用它来生成验证码,就能必须得到输入数据 x 了,在这里大家首先定义好大家的输入词表,原因分析 大小写字母加数字的词表比较庞大,设想大家用中有 大小写字母和数字的验证码,三个小验证码三个小字符,那么一共原因分析 的组合是 (26 + 26 + 10) ^ 4 = 14776336 种组合,你例如数量训练起来很重大,统统这里大家精简一下,只使用纯数字的验证码来训练,后后其组合个数就变为 10 ^ 4 = 300 种,显然少了统统。

经过全连接网络变换后后,y 的 shape 就变成了 [batchsize, nclasses],大家的 label 是 CAPTCHALENGTH 个 One-Hot 向量拼合而成的,在这里大家想使用交叉熵来计算,后后交叉熵计算的后后,label 参数向量最后一维各个元素之和必须为 1,不然计算梯度的以前会冒出问提。详情参见 TensorFlow 的官方文档:

训练

这里卷积核大小为 3,padding 使用 SAME 模式,激活函数使用 relu。

后后大家就能必须实现文本到 One-Hot 编码的互转了。

再接下来执行训练即可:





接下来大家必须定义 label,原因分析 大家必须使用深度图学习模型进行训练,统统这里大家的 label 数据最好使用 One-Hot 编码,即原因分析 验证码文本是 1234,那么应该词表索引位置置 1,总共的长度是 40,大家用系统程序运行运行实现一下 One-Hot 编码和文本的互相转换:

后后 Loss 和 Accuracy 就好计算了:

有了数据后后,大家就后后后后刚开始英文构建模型吧,这里大家还是利用 traintestsplit() 法子将数据分为三每段,训练集、开发集、验证集:

在这里大家首先初始化 traininitializer,将 iterator 绑定到 Train Dataset 上,后后执行 trainop,获得 loss、acc、gstep 等结果并输出。



1.验证码准备

3.构建模型

接下来大家定义三个小生成验证码数据的法子,流程例如上文,只不过这里大家将返回的数据转为了 Numpy 形式的数组:



后后初始化三个小迭代器,并绑定到你例如数据集上:



接下来大家使用者三个小数据集构建三个小 Dataset 对象:

后后调用此法子,大家就能必须得到三个小 Numpy 数组了,你例如我我确实是把验证码转化成了每个像素的 RGB,大家调用一下你例如法子试试:



验证时大家能必须重新 Reload 一下模型,后后进行验证:







2.预外理

当然不还还可以必须取验证集上准确率最高的模型进行保存。

接下来后后我关键的每段了,在这里大家使用三层卷积和两层全连接网络进行构造,在这里为了多样化写法,直接使用 TensorFlow 的 layers 模块:





后后现在的 label 参数是 CAPTCHALENGTH 个 One-Hot 向量拼合而成,统统这里各个元素之和为 CAPTCHALENGTH,统统大家必须重新 reshape 一下,确保最后一维各个元素之和为 1:

能必须看到它的 shape 是 (30, 130, 3),这我我确实代表验证码图片的深度图是 30,深度图是 130,是 30 x 130 像素的验证码,每个像素都是 RGB 值,统统最后一维即为像素的 RGB 值。

这里 text2vec() 法子后后我将真实文本转化为 One-Hot 编码,vec2text() 法子后后我将 One-Hot 编码转回真实文本。



运行训练过程,结果例如如下:



训练过程大家还能必须每隔几只 Epoch 保存一下模型:

统统在这里大家先定义三个小词表和其长度变量:

本文大家来用 TensorFlow 来实现三个小深度图学习模型,用来实现验证码识别的过程,这里识别的验证码是图形验证码,首先大家会用标注好的数据来训练三个小模型,后后再用模型来实现你例如验证码的识别。

接下来大家就能必须构造一批数据了,x 数据后后我验证码的 Numpy 数组,y 数据后后我验证码的文本的 One-Hot 编码,生成内容如下:

本文作者:MobSDK