TensorFlow图像识别验证码—实战项目

我将教大家如何简单的用TensorFlow实现对数字验证码的高准确率识别

 01 安装python和TensorFlow框架

  • 建议使用python3.5+,TensorFlow1.0+,请自行安装,这里默认你已经配置好开发环境。
  • 开发工具推荐:pycharm、jupyter notebook
  • 推荐使用GPU显卡来进行模型的训练

02 生成验证码数据集 

  • 我们将要识别的是4位数字验证码,由于有10000种组合情况,数据集我们对应生成10000张组合情况不同的验证码。

TensorFlow图像识别验证码—实战项目_第1张图片 

  • 将生成好的数据集放在images文件夹中,然后对数据集进行划分,按6:2:2的比例划分为训练集、验证集、测试集。训练集用于模型训练,验证集用于在模型训练过程中对模型训练效果的验证,测试集用于在模型保存下来后对模型效果进行测试。

TensorFlow图像识别验证码—实战项目_第2张图片

 

 03 验证码图像预处理

  • 在训练模型之前,先读取好训练集的数据,并对图像进行预处理。首先使用glob来对图片进行读取,然后将读取到的图像数据转为numpy数组格式,再将数据由彩图转换为灰度图,最后对数据进行一个归一化的处理,即将数据转为0~1之间的值,方便之后模型的训练。

TensorFlow图像识别验证码—实战项目_第3张图片

04 搭建网络结构 

  • 网络结构我借鉴VGG16网络来搭建,该深层网络可以实现识别的高准确率。VGG16网络简单来说就是一个由2个(双卷积层+池化层)、3个(三卷积层+池化层)和3个全连接层组成。

TensorFlow图像识别验证码—实战项目_第4张图片

  • 我对VGG16网络最后一个全连接层做了修改,将1000维度的全连接层修改层输出4个维度10的全连接层,分别对应4个数字的分类结果。最后再对识别出来的4个数字结果进行一个拼接。

TensorFlow图像识别验证码—实战项目_第5张图片

 

 TensorFlow图像识别验证码—实战项目_第6张图片

TensorFlow图像识别验证码—实战项目_第7张图片 TensorFlow图像识别验证码—实战项目_第8张图片

TensorFlow图像识别验证码—实战项目_第9张图片 

05 训练模型

  • 设置模型的超参数,比如选择优化器,选择loss函数,设置训练轮次,每次投入训练的样本数,学习率等。
  • 优化器选择Nadam,loss函数使用"categorical_crossentropy",训练轮次epochs为40,样本数batchsize为100

TensorFlow图像识别验证码—实战项目_第10张图片 06 模型测试

  • 读取测试集的2000张数据,加载模型,对模型训练效果进行测试。最终可以训练出一个准确率高达99%的模型

TensorFlow图像识别验证码—实战项目_第11张图片 

TensorFlow图像识别验证码—实战项目_第12张图片

TensorFlow图像识别验证码—实战项目_第13张图片

 

你可能感兴趣的:(python的AI,图像识别,深度学习,tensorflow,神经网络)