基于模糊聚类与RBF网络集成分类器的验证码识别
2012-06-13宋人杰
宋人杰,刘 娟
(东北电力大学信息工程学院,吉林吉林132012)
验证码作为新兴的网络安全防护机制,广泛用于互联网以实现区分人机。对验证码识别技术的研究,可以及时发现和改善验证码生成程序的漏洞以及增加验证码图像的识别难度,在加强网站安全性方面有着重要意义。在公开的验证码识别算法中,部分验证码通过识别算法能够基本能够识别。文献[1]对字符是模糊粘连的猫扑验证码,提出了基于局部极小值和最小投影值的方法来分割;对有交错粘连的西祠胡同验证码,通过颜色聚类与竖直投影结合来达到分割字符。最终均采用卷积神经网络进行训练和识别。文献[2]针对粘连字符分割致使验证码字符识别效果不佳的问题,提出一种带权值的模板匹配和基于监督学习的模板权值调整相结合的字符识别方法。文献[3]提出了一种基于数字验证码外部轮廓结构特征的方法,对于可分割字符识别正确率可达到96%以上。综上所述,目前研究的验证码的共同点是能够对图片上的字符进行切割,得到单个字符,然后进行匹配识别。
本文研究的对象是复杂验证码,即为防止分割的粘连,字符变形扭曲的字符,此类验证码很容易产生误切分和过切分的情况,直接影响系统识别的准确率。因此,本文将字符分割与字符识别同步起来,其理论基础是参与分类的特征在识别结果的正确性上有着不同的重要度,因此可以显著降低错误率,达到更高的精度。具体思路如下:利用模糊聚类算法提取字符串的特征,得到单个字符的模糊矩阵,由此作为RBF的输入预处理,网络依据识别置信度判断单个字符的分割是否满足要求。如果满足,则保留输出结果;如果不满足,在单字符特征提取不准确而拒识的情况下,则增大隶属度的选择范围,选择更多节点进行细节补偿,从而在整体和局部上都取到较好的训练效果。
1 基于模糊聚类算法的字符特征提取
在字符识别的笔划特征提取中,字符中部的笔划更能反映字符的本质特征,根据模糊特征的思想设计合理的函数,以同心圆的方式,从里向外的设置字符的权值依次递减,从而可以提取出更能反映问题本质的新特征。
本文选择像素属于某个字符的程度(即隶属度)作为字符的特征。应用FCM算法将字符串样本空间分成若干个子集,用模糊子集的概念代替确定子集,从而得到模糊的单个字符分割的结果。FCM算法的步骤如下[4]:
(1)初始化参数。输入指定聚类类数C,并在X中根据给定坐标值方法选择C个对象作为初始聚类中心。设定迭代中止条件,比如最大循环次数或者聚类中心收敛误差容限。
(2)优化目标函数。据式子(1)进行迭代,根据欧氏距离最小的准则将数据对象分配到最接近的聚类中心,从而形成一类。初始化隶属度矩阵。
(3)提取模糊特征。目标函数(1)通过拉格朗日乘子法求得极小值得到两个迭代公式,即:隶属度矩阵迭代公式(3)和聚类中心迭代公式(4):
反复执行第二步和第三步,更新模糊矩阵和聚类中心,直至满足中止条件。
根据以上算法得到字符的模糊特征,据此作为神经网络的输入。对于单行字符,由于字符粘连情况只与其左右相邻字符相关,因此本文将模式类C中的训练样本按顺序进行标记,以便减小神经网络二次识别的搜索范围,提高识别效率。由此得到字符的中心矩阵和隶属度矩阵,作为神经网络的中间层输入节点。
2 基于模糊聚类与神经网络的集成分类器
2.1 径向基神经网络的结构设计
经过前面的样本预处理,接下来就是神经网络的结构设计。本文采用三层结构的径向基神经网络,这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而进行分布式并行信息处理的算法数学模型[5]。网络结构如图1:
(1)输入层:网络的输入即模糊聚类分类后单个字符图像的像素数据。当像素表示对象时,其值为1,当像素表示背景时,其值为0。
(2)隐层:针对RBF神经网络隐层中心个数和中心位置难以取得合适的参数这一问题,本文结合聚类算法选取中心。将第一节所得的第i类聚类中心作为网络的隐层节点,对其进行权重训练。其中,不同类别的中心是按照第一类、第二类、…、第c类在网络的中是按顺序排列的。RBF网隐层采用如下标准Gaussian径向基函数,如式子(5):
图1 RBF网络结构图
其中,δ的取值依实验具体情况确定:取值越大,代表的像素分布分散的字符,比如“Q”“X”等;取值越小,代表像素集中分布的字符,比如“I”等。为简单起见,本文根据实验情况,选取统一的值。
(3)输出层:输出层由一个线性神经元组成,即f(u)=u。依据实际需要,该神经元有36个目标输出,字母25个,数字9个(其中去除了含有异义的字母O和数字0)。
2.2 分类器节点的动态选择与细节补偿算法
针对单个字符分割不准确造成识别困难的问题,提出字符串并联集成识别方法。采用分割和识别反馈动态结合的方法,在得到了各个字符的单分类器后,根据对识别置信度的要求进行分类器的动态选择与细节补偿。该方法利用识别器对待识别图像识别后,识别器会返回一个衡量识别图像是否为一个独立字符的可信度值,根据这个返回值,可以判断送往识别器识别的图像是否为一个独立的字符,只有当返回值大于规定的阈值时,才认为识别结果是正确的;否则依据像素隶属度进行再划分,进行识别判断,直至满足识别可信度。该算法的具体执行过程如下:
Step1:根据识别精度的需要设定初始置信度阈值θ0,令 θ=θ0,当识别结果满足可信度的要求时,则输出识别结果,无需集成其他分类器;否则转入Step2。
Step2:寻找与节点n1相距最近的且类别属性是n1的二选类别的节点n2,确定该节点所包含的样本中出错最多的样本的类别,作为二选类别(即找到错分的字符分类器的相邻标号的上下两节点)。提取那些与中间层节点的最小距离大于u(u为隶属度最小估计值)的训练样本,重新进行划分训练。
Step3:将新节点加入到原网络中,按加法规则进行集成。当满足输出条件θ时,输出识别结果;若u导致其他节点识别精度降低时仍不满足输出条件,则降低可信度阈值θ,重复上述步骤实现循环集成,直到满足输出条件,输出识别结果。
2.3 识别置信度的设置
定理1:用于外监督分类的径向基神经网络,其输出层的输出为模式样本后验概率估计的充要条件是其隐层单元函数为Parzen窗密度函数。
在识别时,单字符网络并联集成,形成字符串识别集成分类器,依据定理1,其评价准则采用基于后验概率的权值自动调整的方法。当第一次识别就能满足识别要求时,则无需再训练;否则依次增减节点,并进行循环集成,直至所有结果均达到系统要求的可信度。
后验概率估计是模式分类器组合方法的基础,基于后验概率估计的估计法一般能更好地利用各个分类器的决策函数值所提供的信息。本文采用待识别样本的最近邻类与次近邻的比值定义识别置信度,设X的最近邻ρi,次近邻类为ρj,则单分类器的置信度为θ(根据系统的实际需要在[0.65,0.9]之间变动),ρi与 ρj差别越大,决策结果越可靠、反之则越不可靠[6]。其定义如式(6):
3 实验结果及分析
本文采用阿里巴巴网站的验证码作为有效性测试集。该图像的特点是:验证码图像尺寸大小已经归一化,分辨率为32*16;字符串由英文字母和数字组成;背景为纯色,阻碍识别的设置为字符之间粘连,字符扭曲变形,单个字符的分割困难。实验中,首先是获取验证码样本。由于网站对用户输入验证码提供了再来一张的功能,通过循环运行脚本文件获取大量样本文件。本文将所获样本的前400个图片作为训练集。将剩下的100个训练样本构成独立的测试集,用于测试该识别算法的有效性。
然后进行初始参数的设置。采用固定间距法预设c个初始类心(c为字符个数),结合验证码图像的先验知识,本文取c=4,即Ci-Ci-1=4/N;用随机数生成法产生隶属度初始矩阵U;设定加权指数m(根据经验值取m=2)和迭代中止条件,如最大循环次数或者聚类中心收敛误差容限值,本文取迭代截止误差ε>0;阈值ε =0.000 1;取经验值1.5。
为了验证本文算法的有效性,与目前流行的基于神经网络的验证码识别算法进行实验对比验证。文献[7]选择的是基于径向基核函数(RBF)的SVW进行分类识别。文献[8]提出了一种基于神经网络的网络验证码的识别方法,并利用开源的神经网络包JOONE实现了验证码识别系统。实验中将本文算法与上述两种方法进行了比较,实验结果见表1:
表1 识别结果性能比较
本文算法以RBF网络为基础,结合了聚类算法的思想,并与当前流行的SVM和BP卷积神经网络分类算法进行了比较。从表1数据可以看出,在收敛速度上,本文算法好于 BP神经网络分类算法,且具有更好的推广性。在低质量字符串识别率上,本文算法好于SVW方法,充分体现了算法的有效性和良好的推广性。
4 结 论
本文主要是针对低质量字符串分割识别的不足,提出了基于模糊聚类和神经网络集成的动态识别方法。神经网络和模糊聚类的集成应用可以互补不足,对于拒识、误识的字符依据像素的隶属度直接进行再划分,折中了识别率和效率。而且对于本文中的实验数据量小,对实时性要求不高的应用来说是实用的。虽然在文章中使用了聚类方法,但它并不是一个通用的聚类算法,也不是一个能适合于所有聚类问题的算法。如何改进聚类算法,得到不同数目字符的自适应识别将是今后研究的方向。
[1]王璐,张荣,尹东,詹金春,吴陈洋.粘连字符的图片验证码识别[J].计算机工程与应用,2011,47(28):150-153.
[2]吕刚,郝平.基于权值模板和监督学习的验证码识别[J].计算机与现代,2010,30(12):41-43.
[3]潘大夫,汪渤.一种基于外部轮廓的数字验证码识别方法[J].微计算机信息,2007,23(9):256-258.
[4]乐晓蓉,王正群,郭亚琴,王向东.基于模糊聚类算法的神经网络集成[J].计算机工程,2007,33(5):180-181.
[5]刘勇,赵斌,梁夷龙,夏绍玮.改进径向基函数神经网及其在手写体字符识别中的应用[J].计算机学报,2000,23(1):96-101.
[6]丁杰,杨静宇.一种基于AP的仿生模式识别方法[J].计算机科学,2011,38(5):224-226.
[7]殷光,陶亮.一种SVM验证码识别算法[J].计算机工程与应用,2011,47(18):188-190.
[8]左保河,石晓爱,谢芳勇,章拓.基于神经网络的网络验证码识别研究[J].计算机工程与科学,2009,31(12):20-22.