基于深度学习的端到端验证码识别

2017-08-08 01:20温明莉蔡梦倩
无线互联科技 2017年14期
关键词:准确率卷积神经网络

温明莉,赵 轩,蔡梦倩

(四川大学 计算机学院,四川 成都 610065)

基于深度学习的端到端验证码识别

温明莉,赵 轩,蔡梦倩

(四川大学 计算机学院,四川 成都 610065)

验证码是一种在网络环境中用来区分人类和机器的测试方法,验证码识别的研究可以更好地发现验证码在网络安全中的漏洞,从而防止网络中的一些恶意入侵。文章提出了一种深度神经网络模型来识别验证码,引入卷积神经网络,对验证码不经过任何预处理,端到端识别验证码,避免传统的定位、分割等步骤,仿真训练验证码数据,扩大网络所需数据集,提高验证码识别准确率。试验结果表明,该模型对于识别不同级别的复杂验证码都有很好的效果,单个识别率高达99%。

深度神经网络;验证码识别;卷积神经网络

随着互联网行业的蓬勃发展,网络安全也逐渐成为人们关注的重点,在人们的日常生活中扮演着重要角色,验证码应运而生,在互联网中无处不在。验证码(Completely Automated Public Turing test to tell Computers and Humans Apart,CAPTCHA)是一种用来区分用户行为是人类行为或机器行为,这对于人类来说,准确率可高达90%,而对于计算机却很困难。用户在网络站点进行会员注册与登录,以及自动回复时,用户需填写网站所提供的验证码,与网站服务器的验证码结果对比成功之后,才能顺利通过服务器的验证,完成剩下的各种操作。它们直观、廉价、快速地保护网站和防止垃圾邮件,常用在邮箱注册与登录、网上购物等,常用的验证码是一种包含不同扭曲遮挡变形程度的数字、字母或者文字的图片。

在计算机视觉领域,传统的验证码识别技术被分为预处理(去噪等)、定位、分割(字符分割),字符识别等模块。各模块独立存在,这样意味着一旦某个模块出现错误,将导致整个验证码识别系统的识别率降低,而端到端的验证码识别系统完美地解决了该问题。深度神经网络有很多网络层,不同层可以学习到不同等级的特征,整个网络统一训练来完成该系统最终的验证码识别这一目标,不同的神经网络有其独特的使用目的。本文使用的卷积神经网络在图像处理和视频理解上都取得了巨大的成功,比如Google就用卷积神经网络处理街景图片来检测家庭住址等。

1 网络模型设计

卷积神经网络(Convolutional Neural Network,CNN)是一种多层感知机,它的卷积层由多个平面组成,每个平面有不同的多个独立神经元,通过滑动窗口来得到特征图。在本文的模型中,选择CNN学习图片的特征表达。

卷积神经网络与BP神经网络类似,都采用了前向传播计算输出值、反向传播调整权重和偏置;CNN与标准的BP神经网络最大的不同是:CNN中相邻层之间的神经单元并不是全连接,而是部分连接,也就是某个神经单元的感知区域来自于上层的部分神经单元,而不是像BP神经网络那样与所有的神经单元相连接。

1.1 卷积层

本文的网络结构大部分通过卷积层来获取验证码图片的特征。卷积层有局部感知、权值共享的特点,它使用稀疏连接来挖掘图像中的空间局部关联信息,并通过局部感受野提取出初级视觉特征,如边缘、方向等。同时,卷积神经网络可以通过局部连接与权值共享,极大地减少了训练网络所需参数个数,从而加快收敛速度。卷积层的输入来源于输入层或者上一层卷积层,每一层的多个独立卷积核大小相同,在本文的网络结构中,使用的卷积核大小均为7×7。网络拓扑结构及参数设置如表1所示。

表1 网络拓扑结构及参数设置

1.2 Batch Normalization

在每一层卷积和全连接之后,接Batch Normalization操作。因为低层网络在训练过程中更新了参数,引起后面层输入数据分布的变化,将会影响网络的训练速度。所以我们在每一层输入时添加预处理操作,插入一个归一化层,其是一个可学习、有参数的网络层。Batch Normalization操作提高网络的泛化能力,不用考虑加入dropout以及L2正则项参数的选择问题,也不需要使用局部响应归一化层,便可将训练数据彻底打乱,使得网络迅速收敛。

2 验证码识别

在本文的深度学习训练过程中,需要大量的数据来训练网络模型。但是至今为止,没有一个公开的验证码数据集,利用Python语言编码自动生成训练样本。生成的验证码如图1所示。

图1 验证码

该验证码图片大小为90×30。90是图片长度,30为图片高度。加入了3种字体times,arial,Calibri。验证码经过了不同程度的噪声、旋转、扭曲、个别字符覆盖,所有验证码包含了0-9以及a-z、A-Z 62个字符。用了5万张验证码图片的数据训练,1万的数据测试。为了验证该网络的普遍适用性,又用某网站的10 000张数据做训练样本,用200张该网站验证码测试。该网站验证码有0-9 10种繁体字形、彩色图片,外加等于两字,实现了不同程度的旋转和覆盖。

验证码图片生成之后,我们开始网络训练。首先将生成的验证码图片保存为pkl文件,每个pkl文件包含了10 000张验证码图片,使得网络可以更快更轻松地加载数据集文件。网络采用小批量训练的方式,每次训练100张图片。该网络使用Keras深度学习框架,ReLu激活函数,迭代次数1 000次,达到的准确率如表2所示。

表2 验证码准确率

本文提出了端到端的基于卷积神经网络对验证码的识别方法,替代了传统的定位、分割、识别等步骤,在验证码识别应用中得到了很好的效果。当然,如果验证码更复杂,该网络模型的训练则需要更多的训练数据来增强网络的鲁棒性。

[1]MONI N. Veri fi cation of a human in the loop or Identi fi cation via the Turing Test[J].Unpublished Manuscript,1996(13):45-48.

[2]MAASS W,NATSCHLÄGER T,MARKRAM H. A fresh look at real-time computation in generic recurrent neural circuits[R].Technical report,Institute for Theoretical Computer Science,2002.

[3]JAEGER H. Harnessing nonlinearity: Predicting chaotic systems and saving energy in wireless communication[J].Science,2004(304):78-80.

[4]KOLEN J,KREMER S. Gradient fl ow in recurrent nets: the dif fi culty of learning long-term dependencies[M].Florence:Wiley-IEEE Press,2007.

[5]HOCHREITER S. Untersuchungen zu dynamischen neuronalen Netzen. Long short term memory[M].Munchen:Technische Universit at Munchen,1991.

[6]VINYALS O,TOSHEV A,BENGIO S,et al. Show and tell: a neural image caption generator[J].IEEE Conference on Computer Vision& Pattern Recognition,2015(9):3156-3164.

An end-to-end veri fi cation code identi fi cation based on depth learning

Wen Mingli, Zhao Xuan, Cai Mengqian
(Computer Science College of SiChuan University, Chengdu 610065, China)

The verification code is a test method used to distinguish between humans and machines in network environment. The studies on verification code identification can better detect vulnerabilities in the security of the verification code, thereby preventing some malicious intrusion in the network. In this paper, we propose a depth neural network model to identify the veri fi cation code, the introduction of convolution neural network, the veri fi cation code without any pretreatment, end-to-end identi fi cation veri fi cation code, to avoid the traditional positioning, segmentation and other steps, simulation training veri fi cation code data, expand the network required data sets, improve the accuracy of veri fi cation code recognition. The experimental results show that the model has a good effect on identifying different levels of complex veri fi cation codes, with a single recognition rate of up to 99%.

deep neural network; veri fi cation code identi fi cation; convolution neural network

温明莉(1993— ),女,四川达州,硕士。

猜你喜欢
准确率卷积神经网络
基于3D-Winograd的快速卷积算法设计及FPGA实现
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
神经网络抑制无线通信干扰探究
从滤波器理解卷积
高速公路车牌识别标识站准确率验证法
基于傅里叶域卷积表示的目标跟踪算法
基于神经网络的拉矫机控制模型建立
复数神经网络在基于WiFi的室内LBS应用
基于支持向量机回归和RBF神经网络的PID整定
一种基于卷积神经网络的性别识别方法