基于深度学习的验证码识别
[摘 要]验证码被广泛应用于网络环境中对人和计算机行为进行区分,能有效防止自动化脚本的恶意入侵.针对验证码识别问题提出基于深度神经网络的验证码特征提取和识别方法.将灰度化的验证码图像直接作为输入,通过构建7层卷积神经网络对字符由低级到高级的特征表达,并选取 Relu函数为非线性激励函数,对验证码图片进行字符特征提取与验证码的识别.采用人工智能深度学习框架 Tensorflow 对卷积神经网络模型进行训练,通过验证码数据集进行测试.测试结果表明,该模型能有效识别不同复杂程度的验证码,并具有较好的鲁棒性与泛化能力.
[关键词]深度学习;卷积神经网络;验证码识别;非线性激励函数;人工智能
在网络环境中,验证码可以区分出用户是计算机还是人,这种公共全自动程序能有效抵御互联网中某些恶意的操作,如用户批量注册、社区恶意发帖、密码暴力破解等.常用的验证码是由数字、字母或文字组成的图片,并通过不同程度的遮掩与扭曲增加验证码的识别难度[1].对于人而言,识别率能达到90%,对于计算机识别就比较困难.常用的验证码识别方法有模版匹配法、支持向量机(SVM)识别法及神经网络识别法.模板匹配法直接,方便,但不具有旋转不变性和尺度不变性,其识别率和鲁棒性不高,如文献[2]通过逆向分析制作模版和整体识别技术实现了对无法自动分割验证码的正常识别. 传统的机器学习方法[3G4]在字符识别上取得了不错
网络在处理图像二维结构数据上有明显的优势,可以直接将图像作为输入,自动学习图像特征,提取出具有平移和变形不变性的特征表示[10]. 本文提出了基于卷积神经网络的验证码特征提取与识别的方法,能够准确、高效识别各种复杂的字符型验证码.
1 卷积神经网络
卷积 神 经 网 络 是一种建立在传统神经网络基础上的深度学习网络.在结构上,它主要由单个或多个卷基层和池化层(也叫下采样层)组合而成.图1为由一个卷积层和一个池化层组成的卷积神经网络提取
图像特征的过程.
的效果,但这类方法需要对图片进行预处理,分割字
,
b
Wx+ 1
bx+ 1
分割和特征提取,因此有一定的局限性,如文献[5]
对字符图像分割、特征提取后采用支持向量机的字符验证码识别方法对教务系统验证码的识别达到
100%;文献[6]采用轮廓差投影与水滴算法结合分
1.1 卷积层
Cx
图 1 卷积和池化过程
Sx+ 1
,
割字符,然后再利用 KNN 算法识别字符.
采用卷积来代替传统神经网络的全连接 卷积
随着深度学习在图像识别和模式识别领域的发展,其在字符识别上的应用也越来越广泛[7G9].与传统的人工特征设计相比,深度神经网络能有效提升分类识别效率.卷积神经网络作为常用的深度神经
层的每一个神经元都只和前一层一个局部窗口内的神经元相连,构成一个局部网络,这个局部窗口被称为卷积核[11].每个卷积核与前一层的特征图像进行卷积操作时,在同一层面上输入数据具有相同的
权值[12].卷积层的局部感知与权值共享的特点,能够减少卷积神经网络的训练参数,提高迭代效率. 把卷积核看作是k1 ×k2 的滑动窗口,并按一定的步长在验证码图像上滑动,扫描图像上的所有位置,能够有效检测到验证码图像的边缘、线段、角点等视觉 初级特征.经过多层叠加的卷积层网络能从上一层特征图像中分析并提取出抽象程度更高的图像特征.
将包含n 个通道的图像n1 ×n2 作为输入xi ,卷积核k 的大小为k1 ×k2,经过卷积操作后生成m个通道m1 ×m2 的图像作为输出xj ,计算过程:
<