TensorFlow图像识别验证码—实战项目
我将教大家如何简单的用TensorFlow实现对数字验证码的高准确率识别
01 安装python和TensorFlow框架
- 建议使用python3.5+,TensorFlow1.0+,请自行安装,这里默认你已经配置好开发环境。
- 开发工具推荐:pycharm、jupyter notebook
- 推荐使用GPU显卡来进行模型的训练
02 生成验证码数据集
- 我们将要识别的是4位数字验证码,由于有10000种组合情况,数据集我们对应生成10000张组合情况不同的验证码。
- 将生成好的数据集放在images文件夹中,然后对数据集进行划分,按6:2:2的比例划分为训练集、验证集、测试集。训练集用于模型训练,验证集用于在模型训练过程中对模型训练效果的验证,测试集用于在模型保存下来后对模型效果进行测试。
03 验证码图像预处理
- 在训练模型之前,先读取好训练集的数据,并对图像进行预处理。首先使用glob来对图片进行读取,然后将读取到的图像数据转为numpy数组格式,再将数据由彩图转换为灰度图,最后对数据进行一个归一化的处理,即将数据转为0~1之间的值,方便之后模型的训练。
04 搭建网络结构
- 网络结构我借鉴VGG16网络来搭建,该深层网络可以实现识别的高准确率。VGG16网络简单来说就是一个由2个(双卷积层+池化层)、3个(三卷积层+池化层)和3个全连接层组成。
- 我对VGG16网络最后一个全连接层做了修改,将1000维度的全连接层修改层输出4个维度10的全连接层,分别对应4个数字的分类结果。最后再对识别出来的4个数字结果进行一个拼接。
05 训练模型
- 设置模型的超参数,比如选择优化器,选择loss函数,设置训练轮次,每次投入训练的样本数,学习率等。
- 优化器选择Nadam,loss函数使用"categorical_crossentropy",训练轮次epochs为40,样本数batchsize为100
06 模型测试
- 读取测试集的2000张数据,加载模型,对模型训练效果进行测试。最终可以训练出一个准确率高达99%的模型