一种混合验证码的识别算法研究

2020-10-09 02:55宋晓茹
自动化与仪表 2020年9期
关键词:识别率灰度预处理

杨 佳,宋晓茹,高 嵩,吴 雪

(西安工业大学 电子信息工程学院,西安710021)

随着科学技术的不断发展,目标检测、目标跟踪和目标识别技术已经成为机器学习领域研究中的热门方向。计算机硬件的不断提高使得卷积神经网络在目标检测与识别方面已经取得了巨大成就,例如行人跟踪[1]、语音识别[2]、人脸识别[3]、验证码识别[4]等。其中,验证码能够对人类和计算机进行自动区分。为抵抗自动化程序对网站的非法侵害,防止网站重要信息泄露,越来越多的网站开始使用验证码[5]。

1 验证码识别研究现状

目前,验证码识别技术主要可分为2 种,一种是传统的识别方法,提取出验证码图片最有效的特征后,设计分类器进行训练识别。文献[6]通过设计SVM 分类器,对某些网站验证码进行了识别;文献[7]提出了基于模糊聚类和径向基神经网络的动态集成分类器对字符进行训练识别的方法。这些方法的缺点是都需要手动特征提取,复杂且既有盲目性。另一种是使用深度学习的方法进行验证码识别,常用算法为卷积神经网络CNN 算法。文献[8]通过深度神经网络端到端地识别整张验证码图片中的字符,完成分类识别任务;文献[9]构建的神经网络模型对识别不同类别的验证码具有较好的识别率。这些方法单一使用卷积神经网络,在验证码图片噪点较多、较复杂时,识别效果不太显著。

基于此,为避免传统识别方法中复杂的特征提取,以及单一使用卷积神经网络对混合验证码低的识别率,将图像处理技术与卷积神经网络相结合,首先使用图像预处理的方法改善图片质量,再将图片分割成单个字符后送入到设计好的网络模型中进行训练识别。通过由Python 程序自动生成的验证码图像数据集进行试验对比,结果表明该方法具有更高的准确率。

2 混合验证码识别系统框架的构建

Lecun 等人在1989年提出的LeNet 网络,用于对手写数字的识别,准确率可达99%。卷积神经网络基本结构由输入层、卷积层、池化层、全连接层和输出层组成,将卷积层与池化层组合起来可以对目标图像的特征进行自主提取,网络之间的局部连接与权值共享减少了模型中的参数数量,并且模型具有较强的鲁棒性和泛化能力[10]。为提高混合验证码的识别准确率,所设计的混合验证码识别系统框架如图1所示。

图1 混合验证码识别系统框架Fig.1 Framework of hybrid captcha recognition system

2.1 试验数据

在使用卷积神经网络进行训练时,需要大量的试验数据,获取验证码的方法通常有2 种——网络爬虫和程序生成,在此采用自动程序生成验证码数据库。

自动生成的验证码图片像素为20×20,由26 个字母和10 个数字随机混合组成。为增加验证码复杂程度,图片上还含有噪点干扰以及字符的旋转、形变,生成的部分验证码图片如图2所示。数据库共包含591769 张样本图片,采用7∶3 的比例将数据库分为训练集和测试集。

图2 部分试验数据Fig.2 Some experimental data

试验平台为AMD A10-8700P Radeon R6,10 Compute Cores 4C+6G 1.80 GHz CPU,4G 内存,使用Python 语言编写程序,依赖开源框架Tensorflow和Keras,以及Open-CV,Captcha 库。

2.2 图像预处理

在图像分析中,图片质量的好坏在很大程度上会影响识别算法模型的设计和识别效果的准确率。因此,在使用卷积神经网络训练前,首先进行灰度化,将原始的彩色图像转化成灰度图像。然后,将图片二值化,确定分类阈值将图像上像素点的256 级灰度值置为0 或255,使图片达到“非黑即白”的效果。最后,通过去噪技术去除图片中的噪点,增大信噪比,加强相关信息的可检索性,改善图片信息提高图片质量,在图像预处理的仿真中分别使用经典算法进行仿真试验。

2.3 卷积神经网络模型设计

针对由数字字母混合组成的验证码图片识别,设计的卷积神经网络模型如图3所示,各个网络层神经元使用ReLU(Rectified Linear Unit)激活函数进行非线性转换,使用Softmax 函数对输出层进行输出分类。由于卷积操作存在图像角落及边界信息发挥作用不充分的问题,所以将卷积中的padding(填充)方式设为SAME,对每个卷积层输入的图片像素点周围补0,使输入输出尺寸相同。

图3 卷积神经网络模型设计Fig.3 Design drawing of convolutional neural network model

卷积神经网络模型中各网络层的输入输出关系见表1。

表1 网络层输入输出关系Tab.1 Network layer input/output relationships

3 混合验证码识别系统的实现结果与分析

3.1 图像预处理的实现结果与分析

1)灰度化 对彩色的验证码原图分别使用最大值法、平均值法和加权法对图像进行灰度处理,编程语言采用Python,灰度化结果如图4所示。由图可见,最大值法会使处理后的图像整体偏亮;采用平均值方式处理的图像更加柔软;加权法得到的效果最好。故在此使用加权法进行灰度预处理。

图4 灰度化仿真结果Fig.4 Gray scale simulation results

2)二值化 通过设定分类阈值的方法对图像进行二值化,将图像中的像素点分为大于设定阈值的像素群、小于设定阈值的像素群。常见的确定阈值方法有简单阈值法、自适应阈值法、动态阈值法等。图像二值化处理的仿真结果如图5所示。由图可见,动态阈值法的效果最好,故在此采用动态阈值法进行二值化预处理。

图5 二值化仿真结果Fig.5 Binary simulation results

3)去噪 使用均值滤波、高斯滤波、中值滤波、双边滤波对图像进行去噪,仿真结果如图6所示。由图可见,中值滤波的去噪效果最好,故在此使用中值滤波进行去噪预处理。

图6 去噪仿真结果Fig.6 De-noising simulation results

4)图像分割 在对所用样本集进行分割时,采用灰度投影法,将图像映射成灰度特征后作为分割依据,分割结果如图7所示。其中,图7a 为对分割得到的36 类字符进行分类标记后的36 个文件夹;图7b为图7a 中字符2 文件夹下归类标记的所有单个字符。

3.2 卷积神经网络模型的实现结果与分析

在编程中,使用深度学习框架Keras2.2.4,Tensorflow1.3.0,网络的训练参数设置见表2。

损失函数为多类的对数损失“categoryical_crossentropy”(交叉熵损失函数),并使用自适应学习率优化算法Adam 对网络权重进行更新。将数据的批量个数设置为64,共迭代2400 次,对该网络进行训练。

图7 分割结果Fig.7 Segmentation results

图像预处理与卷积神经网络相结合的识别准确率、损失率如图8所示。由图可见,经过2400 次迭代训练完成后,识别准确率为0.9997,损失率逐渐趋于0。

为验证所提方法的效果更好,使用未结合图像处理时的单一卷积神经网络与其进行仿真试验对比。未结合图像处理技术的卷积神经网络与结合图像处理技术的卷积网络,使用同一个卷积神经网络模型结构,输出层为144 维向量,训练时数据批量个数为64,在迭代2400 次后训练得出识别准确率为0.9753。其仿真结果如图9所示。

图8 图像预处理与卷积神经网络相结合的识别率、损失率Fig.8 Recognition rate and loss rate of the combination of image preprocessing and convolutional neural network

图9 单一卷积神经网络识别率和损失率Fig.9 Recognition rate and loss rate of a single convolutional neural network

识别率的对比见表3。由表可知,在此所提出的预处理方法与卷积神经网络结合的方法,相比于端到端的方法,识别率提高了2.44%。

表3 识别率仿真试验结果对比Tab.3 Comparison of simulation results of recognition rate

4 结语

基于图像处理技术与卷积神经网络相结合的验证码识别研究,不仅避免了传统识别方法中手动提取特征的复杂性,而且解决了混合验证码图片背景复杂时识别率不高的问题。通过对Python 自动生成的验证码样本进行仿真试验,与未结合图像处理技术时单一使用卷积神经网络的识别模型对比表明,使用图像预处理与卷积神经网络相结合的方法识别准确率有了显著的提高。

猜你喜欢
识别率灰度预处理
采用改进导重法的拓扑结构灰度单元过滤技术
求解奇异线性系统的右预处理MINRES 方法
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
高COD二噻烷生产废水预处理研究
Arduino小车巡线程序的灰度阈值优化方案
基于真耳分析的助听器配戴者言语可懂度指数与言语识别率的关系
听力正常青年人的低通滤波言语测试研究*
基于预处理MUSIC算法的分布式阵列DOA估计
档案数字化过程中OCR技术的应用分析
科技文档中数学表达式的结构分析与识别