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

  • 时间:
  • 浏览:2
  • 来源:uu直播快3_UU快3直播平台



接下来很多很多我关键的帕累托图了,在这里许多人 使用三层卷积和两层全连接网络进行构造,在这里为了僵化 写法,直接使用 TensorFlow 的 layers 模块:

训练过程许多人 需用每隔有有几个 Epoch 保存一下模型:

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

很多很多我许多人 就需用实现文本到 One-Hot 编码的互转了。



内容如下:

你这个这里调用一下这另另4个措施,许多人 将 1234 文本转换为 One-Hot 编码,我应该 在将其转回来:



这里 text2vec() 措施很多很多我将真实文本转化为 One-Hot 编码,vec2text() 措施很多很多我将 One-Hot 编码转回真实文本。

在这里许多人 首先初始化 traininitializer,将 iterator 绑定到 Train Dataset 上,我应该 执行 trainop,获得 loss、acc、gstep 等结果并输出。

测试







运行训练过程,结果你这个如下:



当然也需用取验证集上准确率最高的模型进行保存。



验证时许多人 需用重新 Reload 一下模型,我应该 进行验证:



1.验证码准备

我应该 现在的 label 参数是 CAPTCHALENGTH 个 One-Hot 向量拼合而成,很多很多这里各个元素之和为 CAPTCHALENGTH,很多很多许多人 需用重新 reshape 一下,确保最后一维各个元素之和为 1:

很多很多在这里许多人 先定义另另4个词表和其长度变量:

接下来许多人 定义另另4个生成验证码数据的措施,流程你这个上文,只不过这里许多人 将返回的数据转为了 Numpy 形式的数组:

本文作者:MobSDK





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

需用看完它的 shape 是 (30, 130, 3),你这个太好代表验证码图片的深度图是 30,深度图是 130,是 30 x 130 像素的验证码,每个像素全是 RGB 值,很多很多最后一维即为像素的 RGB 值。

接下来许多人 需用定义 label,肯能许多人 需用使用深度图学习模型进行训练,很多很多这里许多人 的 label 数据最好使用 One-Hot 编码,即肯能验证码文本是 1234,没有应该词表索引位置置 1,总共的长度是 40,许多人 用守护线程池池实现一下 One-Hot 编码和文本的互相转换:



很多很多我许多人 就需用确保最后一维是 VOCAB_LENGTH 长度,而它很多很多我另另4个 One-Hot 向量,很多很多各元素之和必定为 1。

需用看完图中的文字正是许多人 所定义的内容,很多很多我许多人 就需用得到一张图片和其对应的真实文本,接下来许多人 就需用用它来生成一批训练数据和测试数据了。

接下来许多人 使用者另另4个数据集构建另另4个 Dataset 对象:



这里许多人 定义了另另4个 getrandomtext() 措施,需用随机生成验证码文本,我应该 接下来再利用你你这个随机生成的文很多很多我产生对应的 x、y 数据,我应该 许多人 再将数据写入到 pickle 文件里,很多很多我就完成了预避免的操作。

再接下来执行训练即可:

3.构建模型

这里许多人 使用 python 的 captcha 库来生成即可,你你这个库默认是没有安装的,很多很多这里许多人 需用先安装你你这个库,另外许多人 还需用安装 pillow 库





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

安装好前一天 ,许多人 就需用用如下代码来生成另另4个简单的图形验证码

训练





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



接下来许多人 就需用构造一批数据了,x 数据很多很多我验证码的 Numpy 数组,y 数据很多很多我验证码的文本的 One-Hot 编码,生成内容如下:

本文许多人 来用 TensorFlow 来实现另另4个深度图学习模型,用来实现验证码识别的过程,这里识别的验证码是图形验证码,首先许多人 会用标注好的数据来训练另另4个模型,我应该 再用模型来实现你你这个验证码的识别。

很多很多我调用此措施,许多人 就需用得到另另4个 Numpy 数组了,你你这个人太好是把验证码转化成了每个像素的 RGB,许多人 调用一下你你这个措施试试:

有了数据前一天 ,许多人 就结束英语 构建模型吧,这里许多人 还是利用 traintestsplit() 措施将数据分为三帕累托图,训练集、开发集、验证集:



我应该 初始化另另4个迭代器,并绑定到你你这个数据集上:

2.预避免

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

在训练前一天 肯定是要进行数据预避免了,现在许多人 首先定义好了要生成的验证码文本内容,这就大约肯能有了 label 了,我应该 许多人 再用它来生成验证码,就需用得到输入数据 x 了,在这里许多人 首先定义好许多人 的输入词表,肯能大小写字母加数字的词表比较庞大,设想许多人 用含有大小写字母和数字的验证码,另另4个验证码十个 字符,没有一共肯能的组合是 (26 + 26 + 10) ^ 4 = 14776336 种组合,你你这个数量训练起来有点大,很多很多这里许多人 精简一下,只使用纯数字的验证码来训练,很多很多我其组合个数就变为 10 ^ 4 = 300 种,显然少了很多很多。

我应该 Loss 和 Accuracy 就好计算了: